Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Packages for the Linux perf profiler #600

Open
wants to merge 21 commits into
base: testing
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
deb8325
perf: Package for the Linux perf profiler
matteodelabre Jun 25, 2022
2ca282f
Merge branch 'testing' into package/perf/initial
matteodelabre Jun 26, 2022
5f73e76
Merge branch 'testing' into package/perf/initial
Eeems Sep 26, 2022
4a45df8
Merge branch 'testing' into package/perf/initial
Eeems Oct 1, 2022
af9bced
Merge branch 'testing' into package/perf/initial
Eeems Oct 29, 2022
e909c5b
Merge branch 'testing' into package/perf/initial
Eeems Nov 7, 2022
94c486b
Merge branch 'testing' into package/perf/initial
Eeems Nov 21, 2022
06b53a9
Add linux-mainline-perf and linux-stracciatella-perf as split packages
matteodelabre Nov 21, 2022
fd46dac
Install python->python3 symlink for build
matteodelabre Nov 21, 2022
c1d12e7
Disable werror for old kernel perf build
matteodelabre Nov 21, 2022
4f85b60
Add provides/conflicts for perf packages
matteodelabre Nov 28, 2022
84b5f00
Merge branch 'testing' into package/perf/initial
Eeems Aug 8, 2023
d436b08
Merge branch 'testing' into package/perf/initial
Eeems Aug 30, 2023
f5364cc
Merge branch 'testing' into package/perf/initial
Eeems Sep 8, 2023
9fa1fd5
Merge branch 'testing' into package/perf/initial
Eeems Sep 27, 2023
2aed7f5
Merge branch 'testing' into package/perf/initial
Eeems Nov 27, 2023
e0f0af8
Merge branch 'testing' into package/perf/initial
Eeems Dec 6, 2023
2c607e0
Update package
Eeems Dec 6, 2023
fb3532b
Merge branch 'testing' into package/perf/initial
Eeems Feb 3, 2024
ad523c0
Merge branch 'testing' into package/perf/initial
Eeems Apr 21, 2024
db61784
Merge branch 'testing' into package/perf/initial
Eeems May 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions docs/package.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

<table>
<tr>
<th>Required?</th>
<td>No, defaults to <code>()</code></th>
</tr>
<tr>
<th>Type</th>
<td>Array of strings</td>
</tr>
</table>

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.
Expand Down
78 changes: 48 additions & 30 deletions package/linux-mainline/package
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
# 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
matteodelabre marked this conversation as resolved.
Show resolved Hide resolved
timestamp=2022-05-22T21:50:09Z
section=kernel
timestamp=2022-10-02T21:43:31Z
maintainer="Alistair Francis <alistair@alistair23.me>"
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)

Expand All @@ -21,35 +18,56 @@ 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() {
matteodelabre marked this conversation as resolved.
Show resolved Hide resolved
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
ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace
}
}
78 changes: 48 additions & 30 deletions package/linux-stracciatella/package
Original file line number Diff line number Diff line change
Expand Up @@ -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
matteodelabre marked this conversation as resolved.
Show resolved Hide resolved
timestamp=2022-09-26T21:23:39Z
section="kernel"
maintainer="Salvatore Stella <etn45p4m@gmail.com>"
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)
installdepends=(kernelctl)

image=base:v2.3
source=(https://github.com/Etn40ff/linux-remarkable/archive/41121ea10ed2235c441cfe717461988859d7f5b6.tar.gz)
sha256sums=(ade87a10bfa7069222cbf8eb1d00ca460d38aab9685223d2fa3ee4f363a75cfa)
Expand All @@ -25,35 +22,56 @@ build() {
ARCH=arm make zero-sugar_defconfig
fi
ARCH=arm make -j8
WERROR=0 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
provides=(perf)
conflicts=(perf)

package() {
install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/tools/perf/perf
ln -s /opt/bin/perf "$pkgdir"/opt/bin/trace
}
}
4 changes: 3 additions & 1 deletion scripts/toltec/recipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,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
Expand Down Expand Up @@ -391,7 +392,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())
Expand Down Expand Up @@ -483,6 +484,7 @@ def control_fields(self) -> str:
("Depends", self.installdepends),
("Conflicts", self.conflicts),
("Replaces", self.replaces),
("Provides", self.provides),
):
if field:
control += (
Expand Down
Loading