@@ -5,28 +5,31 @@ Scripts I use to do continuous integration for linuxppc.
55
66Still (and probably always) under heavy development.
77
8+ > [ !NOTE]
9+ > The scripts notionally work with ` docker ` or ` podman ` , but they're only regularly tested with ` podman ` on Fedora.
10+
811Quick start
912-----------
1013
1114Make sure you can run containers.
1215
13- On Ubuntu the scripts will use ` docker ` , on Fedora they will use ` podman ` .
16+ On Fedora the scripts will use ` podman ` , on Ubuntu they use ` docker ` ,
1417
1518You need a Linux source tree, which hasn't been built in. You can make sure it's
1619clean with ` make mrproper ` , or clone a fresh tree.
1720
18- Clone this repo.
21+ Clone this repo. The examples use ` ~/ci-scripts ` for brevity, but the repo can be located anywhere.
1922
2023```
2124$ cd ci-scripts
2225$ cd build
23- $ make pull-image@ppc64le@ubuntu
24- $ make SRC=~/src/linux kernel@ppc64le@ubuntu JFACTOR=$(nproc)
26+ $ make pull-image@ppc64le@fedora
27+ $ make SRC=~/src/linux kernel@ppc64le@fedora JFACTOR=$(nproc)
2528```
2629
27- This will build you a ` ppc64le_defconfig ` using the latest Ubuntu toolchain.
30+ This will build you a ` ppc64le_defconfig ` using the latest Fedora toolchain.
2831
29- The kernel will be in ` output/ppc64le@ubuntu/ppc64le_defconfig /vmlinux` .
32+ The kernel will be in ` ~/ci/scripts/build/output/latest-kernel /vmlinux` .
3033
3134For more help try ` make help ` .
3235
@@ -36,22 +39,27 @@ Building different defconfigs
3639You can specify a defconfig with ` DEFCONFIG ` .
3740
3841```
39- $ make SRC=~/src/linux kernel@ppc64le@ubuntu DEFCONFIG=powernv_defconfig JFACTOR=$(nproc)
42+ $ make SRC=~/src/linux kernel@ppc64le@fedora DEFCONFIG=powernv_defconfig JFACTOR=$(nproc)
4043```
4144
4245Note that the subarch (eg. ` ppc64le ` ) needs to match the defconfig, so to build
4346` ppc64_defconfig ` , use ` ppc64 ` .
4447
4548```
46- $ make SRC=~/src/linux kernel@ppc64@ubuntu DEFCONFIG=ppc64_defconfig JFACTOR=$(nproc)
49+ $ make SRC=~/src/linux kernel@ppc64@fedora DEFCONFIG=ppc64_defconfig JFACTOR=$(nproc)
4750```
4851
4952Different toolchains
5053--------------------
5154
5255There are images for various toolchains, they are encoded in the distro name/version.
5356
57+ - ` korg@14.2.0 ` : kernel.org gcc 14.2.0, binutils 2.42
58+ - ` korg@14.1.0 ` : kernel.org gcc 14.1.0, binutils 2.42
59+ - ` korg@13.3.0 ` : kernel.org gcc 13.1.0, binutils 2.42
60+ - ` korg@13.2.0 ` : kernel.org gcc 13.1.0, binutils 2.41
5461 - ` korg@13.1.0 ` : kernel.org gcc 13.1.0, binutils 2.40
62+ - ` korg@12.4.0 ` : kernel.org gcc 12.3.0, binutils 2.42
5563 - ` korg@12.3.0 ` : kernel.org gcc 12.3.0, binutils 2.40
5664 - ` korg@12.2.0 ` : kernel.org gcc 12.2.0, binutils 2.39
5765 - ` korg@12.1.0 ` : kernel.org gcc 12.1.0, binutils 2.38
@@ -108,13 +116,13 @@ Other options
108116
109117As mentioned above you pass the make -j factor with ` JFACTOR=n ` .
110118
111- To run sparse use the ` ubuntu ` image and pass ` SPARSE=2 ` .
119+ To run sparse use the ` fedora ` image and pass ` SPARSE=2 ` .
112120
113121```
114- $ make SRC=~/src/linux kernel@ppc64le@ubuntu SPARSE=2 JFACTOR=$(nproc)
122+ $ make SRC=~/src/linux kernel@ppc64le@fedora SPARSE=2 JFACTOR=$(nproc)
115123```
116124
117- The log will be in eg. ` output/ppc64le@ubuntu/ppc64le_defconfig /sparse.log` .
125+ The log will be in eg. ` ~/ci-scripts/build/output/latest-kernel /sparse.log` .
118126
119127To only run sparse on files being recompiled, pass ` SPARSE=1 ` .
120128
@@ -144,7 +152,7 @@ Building your own image
144152If you don't want to pull an untrusted image, you can build it yourself with:
145153
146154```
147- $ make rebuild-image@ppc64le@ubuntu
155+ $ make rebuild-image@ppc64le@fedora
148156```
149157
150158Note that the build mounts the source tree read-only, so nothing it does can
@@ -166,17 +174,19 @@ $ cd ~/linux
166174```
167175
168176```
169- $ make SRC=$PWD -C ~/ci-scripts/build QUIET=1 JFACTOR=$(nproc) ppctests@ppc64le@ubuntu@16 .04 INSTALL=1
177+ $ make SRC=$PWD -C ~/ci-scripts/build QUIET=1 JFACTOR=$(nproc) ppctests@ppc64le@ubuntu@22 .04 INSTALL=1
170178```
171179
172- :rotating_light : Using an old Ubuntu image uses an older libc, which is more
173- likely to be present on the guest root filesystem. Another option is to build
174- the selftests statically.
180+ > [ !NOTE]
181+ > :rotating_light : Building the selftests with Ubuntu 22.04 uses glibc 2.35.
182+ > The default rootdisk uses glibc 2.36, so there should be no issue with missing
183+ > symbols in glibc. If using another root disk you may need to build with an older
184+ > Ubuntu image. Another option is to build the selftests statically.
175185
176186Tar up the selftests into the current directory, the qemu scripts will detect them:
177187
178188```
179- $ tar -czf selftests.tar.gz -C $HOME/ci-scripts/build/output/selftests_powerpc@ppc64le@ubuntu@16.04 / install
189+ $ tar -czf selftests.tar.gz -C $HOME/ci-scripts/build/output/latest-selftests / install
180190```
181191
182192```
0 commit comments