1
0
mirror of https://github.com/systemd/systemd synced 2026-03-24 15:55:00 +01:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Luca Boccassi
57777c9e61
Merge pull request #18567 from Werkov/mkosi-opensuse-v9+
CI for openSUSE Tumbleweed
2021-08-04 11:35:13 +01:00
Michal Koutný
3ec4fccb37 ci: Add openSUSE Tumbleweed among tested distros 2021-08-04 11:16:48 +02:00
Michal Koutný
7e5e604393 ci: Detect shell prompt with higher specificity
The current pattern '#' triggers on the openSUSE kernel version that is
printed early during boot when no actual prompt is ready
> [    0.000000] Linux version 5.12.10-1-default (geeko@buildhost) (gcc (SUSE Linux) 11.1.1 20210510 [revision 23855a176609fe8dda6abaf2b21846b4517966eb], GNU ld (GNU Binutils; openSUSE Tumbleweed) 2.36.1.20210326-4) #1 SMP Fri Jun 11 05:05:06 UTC 2021 (b92eaf7)

Instead wait for pattern that: a) should have fewer false positives, b)
still be with working on distro shells:

openSUSE (red color)
^[[1m^[[31mimage:~ #^[[m^O

arch
[root@image ~]#

debian
root@image:~#

ubuntu
root@image:~#

fedora
[root@image ~]#
2021-08-04 11:16:48 +02:00
Michal Koutný
2e9055ab6a ci: Do not require network in test images
The current boot test relies on terminal login, therefore network setup
inside image is unnecessary. This opens up possibility to test images
that don't support the network setup via veth devices.
2021-08-04 11:16:48 +02:00
Michal Koutný
7c87fb219e ci: Bump mkosi version to v10
Use mkosi GH action that includes fixes for openSUSE builds. This
enables testing openSUSE builds in CI.
2021-08-04 11:16:48 +02:00
Yu Watanabe
10e417b3ea network: use address_equal()/route_equal() to compare addresses or routes configured by NDisc
Fixes #20244.
2021-08-04 09:22:38 +01:00
Michal Koutný
ed802c44da mkosi: Fix openSUSE Jinja2 package name
Dare to be different ¯\_(ツ)_/¯
2021-07-09 10:49:30 +02:00
Michal Koutný
f2bb8857cd mkosi: openSUSE update --bootable=no dependencies
Since we can build --bootable=no images without dracut->systemd, we need
to add systemd runtime dependencies explicitely.
2021-07-09 10:49:30 +02:00
6 changed files with 14 additions and 9 deletions

View File

@ -21,10 +21,11 @@ jobs:
- debian - debian
- ubuntu - ubuntu
- fedora - fedora
- opensuse
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: systemd/mkosi@v9 - uses: systemd/mkosi@v10
- name: Install - name: Install
run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2 run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2
@ -46,13 +47,13 @@ jobs:
systemd-nspawn --version systemd-nspawn --version
- name: Build ${{ matrix.distro }} - name: Build ${{ matrix.distro }}
run: sudo python3 -m mkosi --password= --qemu-headless build run: sudo python3 -m mkosi --password= --network-veth=no --qemu-headless build
- name: Show ${{ matrix.distro }} image summary - name: Show ${{ matrix.distro }} image summary
run: sudo python3 -m mkosi --password= --qemu-headless summary run: sudo python3 -m mkosi --password= --qemu-headless summary
- name: Boot ${{ matrix.distro }} systemd-nspawn - name: Boot ${{ matrix.distro }} systemd-nspawn
run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless boot run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --network-veth=no --qemu-headless boot
- name: Boot ${{ matrix.distro }} QEMU - name: Boot ${{ matrix.distro }} QEMU
run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --qemu-headless qemu run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --password= --network-veth=no --qemu-headless qemu

View File

@ -2,13 +2,15 @@
# SPDX-License-Identifier: LGPL-2.1-or-later # SPDX-License-Identifier: LGPL-2.1-or-later
import pexpect import pexpect
import re
import sys import sys
def run() -> None: def run() -> None:
p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300) p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300)
p.expect("#") # distro-independent root prompt
p.expect(re.compile("~[^#]{0,3}#"))
p.sendline("systemctl poweroff") p.sendline("systemctl poweroff")
p.expect(pexpect.EOF) p.expect(pexpect.EOF)

View File

@ -36,7 +36,7 @@ BuildPackages=
pcre-devel pcre-devel
python3 python3
python3-lxml python3-lxml
python3-jinja2 python3-Jinja2
qrencode-devel qrencode-devel
system-user-nobody system-user-nobody
systemd-sysvinit systemd-sysvinit
@ -60,6 +60,7 @@ Packages=
libapparmor1 libapparmor1
libcrypt1 libcrypt1
libcryptsetup12 libcryptsetup12
libgcrypt20
libkmod2 libkmod2
liblz4-1 liblz4-1
libmount1 libmount1

View File

@ -166,7 +166,7 @@ Address *address_free(Address *address) {
set_remove(address->link->dhcp6_pd_addresses, address); set_remove(address->link->dhcp6_pd_addresses, address);
set_remove(address->link->dhcp6_pd_addresses_old, address); set_remove(address->link->dhcp6_pd_addresses_old, address);
SET_FOREACH(n, address->link->ndisc_addresses) SET_FOREACH(n, address->link->ndisc_addresses)
if (n->address == address) if (address_equal(n->address, address))
free(set_remove(address->link->ndisc_addresses, n)); free(set_remove(address->link->ndisc_addresses, n));
if (address->family == AF_INET6 && if (address->family == AF_INET6 &&

View File

@ -276,7 +276,7 @@ Route *route_free(Route *route) {
set_remove(route->link->dhcp6_pd_routes, route); set_remove(route->link->dhcp6_pd_routes, route);
set_remove(route->link->dhcp6_pd_routes_old, route); set_remove(route->link->dhcp6_pd_routes_old, route);
SET_FOREACH(n, route->link->ndisc_routes) SET_FOREACH(n, route->link->ndisc_routes)
if (n->route == route) if (route_equal(n->route, route))
free(set_remove(route->link->ndisc_routes, n)); free(set_remove(route->link->ndisc_routes, n));
} }
@ -432,7 +432,7 @@ DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR(
route_compare_func, route_compare_func,
route_free); route_free);
static bool route_equal(const Route *r1, const Route *r2) { bool route_equal(const Route *r1, const Route *r2) {
if (r1 == r2) if (r1 == r2)
return true; return true;

View File

@ -66,6 +66,7 @@ typedef struct Route {
void route_hash_func(const Route *route, struct siphash *state); void route_hash_func(const Route *route, struct siphash *state);
int route_compare_func(const Route *a, const Route *b); int route_compare_func(const Route *a, const Route *b);
bool route_equal(const Route *r1, const Route *r2);
extern const struct hash_ops route_hash_ops; extern const struct hash_ops route_hash_ops;
int route_new(Route **ret); int route_new(Route **ret);