From deb83256a0ce99914c110a106d59bea5167fa3a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Sat, 25 Jun 2022 15:34:21 -0400 Subject: [PATCH 1/6] perf: Package for the Linux perf profiler This package contains the `perf` Linux profiler, which interfaces with the kernel perf events subsystem and tracing features. See for details. Using `perf` requires a kernel with `CONFIG_PERF_EVENTS` enabled, not enabled on the default reMarkable kernel. Use the `linux-mainline` package, for example. --- package/perf/package | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 package/perf/package diff --git a/package/perf/package b/package/perf/package new file mode 100644 index 000000000..a43caa076 --- /dev/null +++ b/package/perf/package @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 The Toltec Contributors +# SPDX-License-Identifier: MIT + +pkgnames=(perf) +pkgdesc="Linux profiling with performance counters" +url=https://perf.wiki.kernel.org +pkgver=5.18.0-1 +timestamp=2022-05-22T21:50:09Z +section=kernel +maintainer="Mattéo Delabre " +license=GPL-2.0-only +makedepends=(build:bc build:lzop build:git build:flex build:bison) + +image=base:v2.3 +source=(https://github.com/alistair23/linux/archive/f9fe680995e01398f0813077711fe1b744251c5b.tar.gz) +sha256sums=(d38c883a31f5f87483377e78b4b3a2eb1ce73ada38fc25949e692dd0b2dd7895) + +build() { + make imx_v6_v7_defconfig + ARCH=arm make tools/perf +} + +package() { + install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf + ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace +} From 06b53a9a64179be9259c73fde68aa91c6488c645 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 21 Nov 2022 00:29:41 -0500 Subject: [PATCH 2/6] Add linux-mainline-perf and linux-stracciatella-perf as split packages --- package/linux-mainline/package | 74 ++++++++++++++++++----------- package/linux-stracciatella/package | 74 ++++++++++++++++++----------- package/perf/package | 27 ----------- 3 files changed, 90 insertions(+), 85 deletions(-) delete mode 100644 package/perf/package diff --git a/package/linux-mainline/package b/package/linux-mainline/package index fe964dfc6..6e5de7338 100644 --- a/package/linux-mainline/package +++ b/package/linux-mainline/package @@ -3,12 +3,9 @@ # SPDX-License-Identifier: MIT archs=(rm2) -pkgnames=(linux-mainline) -pkgdesc="reMarkable 2 kernel based on the mainline kernel" -url=https://www.kernel.org +pkgnames=(linux-mainline linux-mainline-perf) pkgver=6.0.0-1 -timestamp=2022-05-22T21:50:09Z -section=kernel +timestamp=2022-10-02T21:43:31Z maintainer="Alistair Francis " makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev) license=GPL-2.0-only @@ -21,35 +18,54 @@ sha256sums=(1583d553380a656ecaac8dab89558051e9165983381adc9c3d52fb8ac0ce19fd) build() { ARCH=arm make imx_v6_v7_defconfig ARCH=arm make -j8 + ARCH=arm make -j8 tools/perf } -package() { - # Prepare files for the kernel archive - local staging="$srcdir"/staging - mkdir -p "$staging/boot" +linux-mainline() { + pkgdesc="reMarkable 2 kernel based on the mainline kernel" + url=https://www.kernel.org + section=kernel + installdepends=(kernelctl) - cp --no-dereference {"$srcdir"/arch/arm,"$staging"}/boot/zImage - cp --no-dereference "$srcdir"/arch/arm/boot/dts/imx7d-remarkable2.dtb \ - "$staging"/boot/zero-sugar.dtb + package() { + # Prepare files for the kernel archive + local staging="$srcdir"/staging + mkdir -p "$staging/boot" - ARCH=arm make -C "$srcdir" modules_install INSTALL_MOD_PATH="$staging" - rm "$staging"/lib/modules/*/{source,build} + cp --no-dereference {"$srcdir"/arch/arm,"$staging"}/boot/zImage + cp --no-dereference "$srcdir"/arch/arm/boot/dts/imx7d-remarkable2.dtb \ + "$staging"/boot/zero-sugar.dtb - # Create the kernel archive - local archive="mainline-${pkgver%-*}.tar.bz2" - install -d "$pkgdir"/opt/usr/share/kernelctl - (cd "$staging" && tar --owner root:0 --group root:0 --mtime=$timestamp \ - -cjf "$pkgdir"/opt/usr/share/kernelctl/"$archive" boot/* lib/modules/*) + ARCH=arm make -C "$srcdir" modules_install INSTALL_MOD_PATH="$staging" + rm "$staging"/lib/modules/*/{source,build} + + # Create the kernel archive + local archive="mainline-${pkgver%-*}.tar.bz2" + install -d "$pkgdir"/opt/usr/share/kernelctl + (cd "$staging" && tar --owner root:0 --group root:0 --mtime=$timestamp \ + -cjf "$pkgdir"/opt/usr/share/kernelctl/"$archive" boot/* lib/modules/*) + } + + configure() { + echo "The new kernel files have been copied, but not installed." + echo "Please use kernelctl to select the kernel to boot." + echo + echo "Known issues with the mainline kernel:" + echo " - No support for low power mode (suspend uses more power then it should)" + echo " - WiFi sometimes is off on boot (can be turned on again though)" + echo " - GUI shutdown in Oxide doesn't work" + echo " - Wacom stylus doesn't work in Xochitl (works everywhere else though)" + echo " - No OTG control support" + } } -configure() { - echo "The new kernel files have been copied, but not installed." - echo "Please use kernelctl to select the kernel to boot." - echo - echo "Known issues with the mainline kernel:" - echo " - No support for low power mode (suspend uses more power then it should)" - echo " - WiFi sometimes is off on boot (can be turned on again though)" - echo " - GUI shutdown in Oxide doesn't work" - echo " - Wacom stylus doesn't work in Xochitl (works everywhere else though)" - echo " - No OTG control support" +linux-mainline-perf() { + pkgdesc="Linux profiling with performance counters" + url=https://perf.wiki.kernel.org + section=devel + + package() { + install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf + ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace + } } diff --git a/package/linux-stracciatella/package b/package/linux-stracciatella/package index 74111f4a7..0dd9efb26 100644 --- a/package/linux-stracciatella/package +++ b/package/linux-stracciatella/package @@ -3,17 +3,14 @@ # SPDX-License-Identifier: MIT archs=(rm1 rm2) -pkgnames=(linux-stracciatella) -pkgdesc="RemarkableAS's vanilla kernel with a few extra flakes" -url=https://github.com/Etn40ff/linux-remarkable +pkgnames=(linux-stracciatella linux-stracciatella-perf) pkgver=5.4.70-2 timestamp=2022-09-26T21:23:39Z -section="kernel" maintainer="Salvatore Stella " makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev build:kmod) license=GPL-2.0-only flags=(nostrip) -installdepends=(kernelctl) + image=base:v2.3 source=(https://github.com/Etn40ff/linux-remarkable/archive/41121ea10ed2235c441cfe717461988859d7f5b6.tar.gz) sha256sums=(ade87a10bfa7069222cbf8eb1d00ca460d38aab9685223d2fa3ee4f363a75cfa) @@ -25,35 +22,54 @@ build() { ARCH=arm make zero-sugar_defconfig fi ARCH=arm make -j8 + ARCH=arm make -j8 tools/perf } -package() { - # Prepare files for the kernel archive - local staging="$srcdir"/staging - mkdir -p "$staging/boot" +linux-stracciatella() { + pkgdesc="RemarkableAS's vanilla kernel with a few extra flakes" + url=https://github.com/Etn40ff/linux-remarkable + section="kernel" + installdepends=(kernelctl) - cp --no-dereference {"$srcdir"/arch/arm,"$staging"}/boot/zImage - if [[ $arch = rm1 ]]; then - cp --no-dereference "$srcdir"/arch/arm/boot/dts/zero-gravitas.dtb "$staging"/boot/zero-gravitas.dtb - elif [[ $arch = rm2 ]]; then - cp --no-dereference "$srcdir"/arch/arm/boot/dts/zero-sugar.dtb "$staging"/boot/zero-sugar.dtb - fi + package() { + # Prepare files for the kernel archive + local staging="$srcdir"/staging + mkdir -p "$staging/boot" - ARCH=arm make -C "$srcdir" modules_install INSTALL_MOD_PATH="$staging" - rm "$staging"/lib/modules/*/{source,build} + cp --no-dereference {"$srcdir"/arch/arm,"$staging"}/boot/zImage + if [[ $arch = rm1 ]]; then + cp --no-dereference "$srcdir"/arch/arm/boot/dts/zero-gravitas.dtb "$staging"/boot/zero-gravitas.dtb + elif [[ $arch = rm2 ]]; then + cp --no-dereference "$srcdir"/arch/arm/boot/dts/zero-sugar.dtb "$staging"/boot/zero-sugar.dtb + fi - # Create the kernel archive - local archive="stracciatella-${pkgver%-*}.tar.bz2" - install -d "$pkgdir"/opt/usr/share/kernelctl - (cd "$staging" && tar --owner root:0 --group root:0 --mtime=$timestamp \ - -cjf "$pkgdir"/opt/usr/share/kernelctl/"$archive" boot/* lib/modules/*) + ARCH=arm make -C "$srcdir" modules_install INSTALL_MOD_PATH="$staging" + rm "$staging"/lib/modules/*/{source,build} + + # Create the kernel archive + local archive="stracciatella-${pkgver%-*}.tar.bz2" + install -d "$pkgdir"/opt/usr/share/kernelctl + (cd "$staging" && tar --owner root:0 --group root:0 --mtime=$timestamp \ + -cjf "$pkgdir"/opt/usr/share/kernelctl/"$archive" boot/* lib/modules/*) + } + + configure() { + if [[ $(< /etc/version) -le 20210709090000 ]]; then + echo "WARNING: Your system is too old; this kernel will most likely not work unless you add the appropriate firmware blobs to /lib/firmware." + echo "Please consider updating your system instead." + fi + echo "The new kernel files have been copied, but not installed." + echo "Please use kernelctl to select the kernel to boot." + } } -configure() { - if [[ $(< /etc/version) -le 20210709090000 ]]; then - echo "WARNING: Your system is too old; this kernel will most likely not work unless you add the appropriate firmware blobs to /lib/firmware." - echo "Please consider updating your system instead." - fi - echo "The new kernel files have been copied, but not installed." - echo "Please use kernelctl to select the kernel to boot." +linux-stracciatella-perf() { + pkgdesc="Linux profiling with performance counters" + url=https://perf.wiki.kernel.org + section=devel + + package() { + install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf + ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace + } } diff --git a/package/perf/package b/package/perf/package deleted file mode 100644 index a43caa076..000000000 --- a/package/perf/package +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2022 The Toltec Contributors -# SPDX-License-Identifier: MIT - -pkgnames=(perf) -pkgdesc="Linux profiling with performance counters" -url=https://perf.wiki.kernel.org -pkgver=5.18.0-1 -timestamp=2022-05-22T21:50:09Z -section=kernel -maintainer="Mattéo Delabre " -license=GPL-2.0-only -makedepends=(build:bc build:lzop build:git build:flex build:bison) - -image=base:v2.3 -source=(https://github.com/alistair23/linux/archive/f9fe680995e01398f0813077711fe1b744251c5b.tar.gz) -sha256sums=(d38c883a31f5f87483377e78b4b3a2eb1ce73ada38fc25949e692dd0b2dd7895) - -build() { - make imx_v6_v7_defconfig - ARCH=arm make tools/perf -} - -package() { - install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf - ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace -} From fd46daca1e460c6fcb03843302d744b887c2f80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 21 Nov 2022 01:09:10 -0500 Subject: [PATCH 3/6] Install python->python3 symlink for build --- package/linux-mainline/package | 2 +- package/linux-stracciatella/package | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/linux-mainline/package b/package/linux-mainline/package index 6e5de7338..133ad7f3f 100644 --- a/package/linux-mainline/package +++ b/package/linux-mainline/package @@ -7,7 +7,7 @@ pkgnames=(linux-mainline linux-mainline-perf) pkgver=6.0.0-1 timestamp=2022-10-02T21:43:31Z maintainer="Alistair Francis " -makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev) +makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev build:python-is-python3) license=GPL-2.0-only flags=(nostrip) diff --git a/package/linux-stracciatella/package b/package/linux-stracciatella/package index 0dd9efb26..123f088ea 100644 --- a/package/linux-stracciatella/package +++ b/package/linux-stracciatella/package @@ -7,7 +7,7 @@ pkgnames=(linux-stracciatella linux-stracciatella-perf) pkgver=5.4.70-2 timestamp=2022-09-26T21:23:39Z maintainer="Salvatore Stella " -makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev build:kmod) +makedepends=(build:flex build:bison build:libssl-dev build:bc build:lzop build:libgmp-dev build:libmpc-dev build:kmod build:python-is-python3) license=GPL-2.0-only flags=(nostrip) @@ -21,7 +21,7 @@ build() { elif [[ $arch = rm2 ]]; then ARCH=arm make zero-sugar_defconfig fi - ARCH=arm make -j8 + # ARCH=arm make -j8 ARCH=arm make -j8 tools/perf } From c1d12e7cca34448f1db0bea60dfd9aac074a352c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 21 Nov 2022 01:18:14 -0500 Subject: [PATCH 4/6] Disable werror for old kernel perf build --- package/linux-stracciatella/package | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/linux-stracciatella/package b/package/linux-stracciatella/package index 123f088ea..6aae8b2b6 100644 --- a/package/linux-stracciatella/package +++ b/package/linux-stracciatella/package @@ -21,8 +21,8 @@ build() { elif [[ $arch = rm2 ]]; then ARCH=arm make zero-sugar_defconfig fi - # ARCH=arm make -j8 - ARCH=arm make -j8 tools/perf + ARCH=arm make -j8 + WERROR=0 ARCH=arm make -j8 tools/perf } linux-stracciatella() { From 4f85b60383e1a15ecdbbb8f691761db041c7f77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 28 Nov 2022 10:47:00 -0500 Subject: [PATCH 5/6] Add provides/conflicts for perf packages --- docs/package.md | 15 +++++++++++++++ package/linux-mainline/package | 2 ++ package/linux-stracciatella/package | 2 ++ scripts/toltec/recipe.py | 4 +++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/package.md b/docs/package.md index fcd9690a4..b49a1d134 100644 --- a/docs/package.md +++ b/docs/package.md @@ -404,6 +404,21 @@ A list of packages that the current package replaces. Setting this field allows the current package to overwrite and take ownership of files from other packages. Note that the replaced packages will not be automatically uninstalled unless you also declare a conflict with them using the [`conflicts` field](#conflicts-field). +#### `provides` field + + + + + + + + + +
Required?No, defaults to () +
TypeArray of strings
+ +A list of virtual packages that the current package provides. + #### `package()` function The `package()` function populates the `$pkgdir` directory with the files and directories that need to be installed using artifacts from the `$srcdir` directory. diff --git a/package/linux-mainline/package b/package/linux-mainline/package index 133ad7f3f..21d44e9de 100644 --- a/package/linux-mainline/package +++ b/package/linux-mainline/package @@ -63,6 +63,8 @@ linux-mainline-perf() { pkgdesc="Linux profiling with performance counters" url=https://perf.wiki.kernel.org section=devel + provides=(perf) + conflicts=(perf) package() { install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf diff --git a/package/linux-stracciatella/package b/package/linux-stracciatella/package index 6aae8b2b6..882b5e4f0 100644 --- a/package/linux-stracciatella/package +++ b/package/linux-stracciatella/package @@ -67,6 +67,8 @@ linux-stracciatella-perf() { pkgdesc="Linux profiling with performance counters" url=https://perf.wiki.kernel.org section=devel + provides=(perf) + conflicts=(perf) package() { install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf diff --git a/scripts/toltec/recipe.py b/scripts/toltec/recipe.py index e462be5ec..f7efd4bc6 100644 --- a/scripts/toltec/recipe.py +++ b/scripts/toltec/recipe.py @@ -343,6 +343,7 @@ class Package: # pylint:disable=too-many-instance-attributes installdepends: Set[Dependency] conflicts: Set[Dependency] replaces: Set[Dependency] + provides: Set[Dependency] functions: bash.Functions custom_functions: bash.Functions @@ -390,7 +391,7 @@ def _load_fields(self, variables: bash.Variables) -> None: self.license = _pop_field_string(variables, "license") self.variables["license"] = self.license - for field in ("installdepends", "conflicts", "replaces"): + for field in ("installdepends", "conflicts", "replaces", "provides"): field_raw = _pop_field_indexed(variables, field, []) self.variables[field] = field_raw setattr(self, field, set()) @@ -482,6 +483,7 @@ def control_fields(self) -> str: ("Depends", self.installdepends), ("Conflicts", self.conflicts), ("Replaces", self.replaces), + ("Provides", self.provides), ): if field: control += ( From 2c607e098684aaeb6bc257e6d5e2c26c82d10f1f Mon Sep 17 00:00:00 2001 From: Nathaniel van Diepen Date: Tue, 5 Dec 2023 19:09:47 -0700 Subject: [PATCH 6/6] Update package --- package/linux-stracciatella/package | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/linux-stracciatella/package b/package/linux-stracciatella/package index 4d433607d..d0cf309eb 100644 --- a/package/linux-stracciatella/package +++ b/package/linux-stracciatella/package @@ -6,7 +6,7 @@ archs=(rm1 rm2) pkgnames=(linux-stracciatella linux-stracciatella-perf) pkgdesc="RemarkableAS's vanilla kernel with a few extra flakes" url=https://github.com/Etn40ff/linux-remarkable -pkgver=5.4.70-4 +pkgver=5.4.70-3 timestamp=2023-09-23T00:12:00Z section="kernel" maintainer="Salvatore Stella "