@@ -5,28 +5,31 @@ Scripts I use to do continuous integration for linuxppc.
5
5
6
6
Still (and probably always) under heavy development.
7
7
8
+ > [ !NOTE]
9
+ > The scripts notionally work with ` docker ` or ` podman ` , but they're only regularly tested with ` podman ` on Fedora.
10
+
8
11
Quick start
9
12
-----------
10
13
11
14
Make sure you can run containers.
12
15
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 ` ,
14
17
15
18
You need a Linux source tree, which hasn't been built in. You can make sure it's
16
19
clean with ` make mrproper ` , or clone a fresh tree.
17
20
18
- Clone this repo.
21
+ Clone this repo. The examples use ` ~/ci-scripts ` for brevity, but the repo can be located anywhere.
19
22
20
23
```
21
24
$ cd ci-scripts
22
25
$ 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)
25
28
```
26
29
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.
28
31
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` .
30
33
31
34
For more help try ` make help ` .
32
35
@@ -36,22 +39,27 @@ Building different defconfigs
36
39
You can specify a defconfig with ` DEFCONFIG ` .
37
40
38
41
```
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)
40
43
```
41
44
42
45
Note that the subarch (eg. ` ppc64le ` ) needs to match the defconfig, so to build
43
46
` ppc64_defconfig ` , use ` ppc64 ` .
44
47
45
48
```
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)
47
50
```
48
51
49
52
Different toolchains
50
53
--------------------
51
54
52
55
There are images for various toolchains, they are encoded in the distro name/version.
53
56
57
+ - ` [email protected] ` : kernel.org gcc 14.2.0, binutils 2.42
58
+ - ` [email protected] ` : kernel.org gcc 14.1.0, binutils 2.42
59
+ - ` [email protected] ` : kernel.org gcc 13.1.0, binutils 2.42
60
+ - ` [email protected] ` : kernel.org gcc 13.1.0, binutils 2.41
54
61
- ` [email protected] ` : kernel.org gcc 13.1.0, binutils 2.40
62
+ - ` [email protected] ` : kernel.org gcc 12.3.0, binutils 2.42
55
63
- ` [email protected] ` : kernel.org gcc 12.3.0, binutils 2.40
56
64
- ` [email protected] ` : kernel.org gcc 12.2.0, binutils 2.39
57
65
- ` [email protected] ` : kernel.org gcc 12.1.0, binutils 2.38
@@ -108,13 +116,13 @@ Other options
108
116
109
117
As mentioned above you pass the make -j factor with ` JFACTOR=n ` .
110
118
111
- To run sparse use the ` ubuntu ` image and pass ` SPARSE=2 ` .
119
+ To run sparse use the ` fedora ` image and pass ` SPARSE=2 ` .
112
120
113
121
```
114
- $ make SRC=~/src/linux kernel@ppc64le@ubuntu SPARSE=2 JFACTOR=$(nproc)
122
+ $ make SRC=~/src/linux kernel@ppc64le@fedora SPARSE=2 JFACTOR=$(nproc)
115
123
```
116
124
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` .
118
126
119
127
To only run sparse on files being recompiled, pass ` SPARSE=1 ` .
120
128
@@ -144,7 +152,7 @@ Building your own image
144
152
If you don't want to pull an untrusted image, you can build it yourself with:
145
153
146
154
```
147
- $ make rebuild-image@ppc64le@ubuntu
155
+ $ make rebuild-image@ppc64le@fedora
148
156
```
149
157
150
158
Note that the build mounts the source tree read-only, so nothing it does can
@@ -166,17 +174,19 @@ $ cd ~/linux
166
174
```
167
175
168
176
```
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
170
178
```
171
179
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.
175
185
176
186
Tar up the selftests into the current directory, the qemu scripts will detect them:
177
187
178
188
```
179
- $ tar -czf selftests.tar.gz -C $HOME/ci-scripts/build/output/selftests_powerpc@ppc64le@[email protected] / install
189
+ $ tar -czf selftests.tar.gz -C $HOME/ci-scripts/build/output/latest-selftests / install
180
190
```
181
191
182
192
```
0 commit comments