core/systemd to 250-2

This commit is contained in:
Kevin Mihelich 2021-12-27 16:27:08 +00:00
parent a0aa33503c
commit 302b9c3220
2 changed files with 4 additions and 89 deletions

View file

@ -1,78 +0,0 @@
From 9021729667e019defea0d4c1bdf563d629d7d837 Mon Sep 17 00:00:00 2001
From: Ernesto Castellotti <mail@ernestocastellotti.it>
Date: Sat, 10 Apr 2021 18:59:14 +0200
Subject: [PATCH] PARTIAL REVERT commit tree-wide: replace strverscmp() and
str_verscmp() with strverscmp_improved
This is a workaround for the issue https://github.com/systemd/systemd/issues/19191
---
src/boot/efi/boot.c | 49 ++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
index 35248db009bf..75c7e2c61d19 100644
--- a/src/boot/efi/boot.c
+++ b/src/boot/efi/boot.c
@@ -914,6 +914,53 @@ static VOID config_entry_free(ConfigEntry *entry) {
FreePool(entry);
}
+static BOOLEAN is_digit(CHAR16 c) {
+ return (c >= '0') && (c <= '9');
+}
+static UINTN c_order(CHAR16 c) {
+ if (c == '\0')
+ return 0;
+ if (is_digit(c))
+ return 0;
+ else if ((c >= 'a') && (c <= 'z'))
+ return c;
+ else
+ return c + 0x10000;
+}
+static INTN str_verscmp(CHAR16 *s1, CHAR16 *s2) {
+ CHAR16 *os1 = s1;
+ CHAR16 *os2 = s2;
+ while (*s1 || *s2) {
+ INTN first;
+ while ((*s1 && !is_digit(*s1)) || (*s2 && !is_digit(*s2))) {
+ INTN order;
+ order = c_order(*s1) - c_order(*s2);
+ if (order != 0)
+ return order;
+ s1++;
+ s2++;
+ }
+ while (*s1 == '0')
+ s1++;
+ while (*s2 == '0')
+ s2++;
+ first = 0;
+ while (is_digit(*s1) && is_digit(*s2)) {
+ if (first == 0)
+ first = *s1 - *s2;
+ s1++;
+ s2++;
+ }
+ if (is_digit(*s1))
+ return 1;
+ if (is_digit(*s2))
+ return -1;
+ if (first != 0)
+ return first;
+ }
+ return StrCmp(os1, os2);
+}
+
static CHAR8 *line_get_key_value(
CHAR8 *content,
CHAR8 *sep,
@@ -1478,7 +1525,7 @@ static INTN config_entry_compare(ConfigEntry *a, ConfigEntry *b) {
if (a->tries_left == 0 && b->tries_left != 0)
return -1;
- r = strverscmp_improved(a->id, b->id);
+ r = str_verscmp(a->id, b->id);
if (r != 0)
return r;

View file

@ -10,8 +10,8 @@
pkgbase=systemd
pkgname=('systemd' 'systemd-libs' 'systemd-resolvconf' 'systemd-sysvcompat')
_tag='f223664ddf5cad0db04732985ee58006bc3916e4' # git rev-parse v${_tag_name}
_tag_name=249.7
_tag='9c8279cdd5d0bc256b8cc0ced2312e27e069a214' # git rev-parse v${_tag_name}
_tag_name=250
pkgver="${_tag_name/-/}"
pkgrel=2
arch=('x86_64')
@ -30,7 +30,6 @@ validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering <
source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}?signed"
"git+https://github.com/systemd/systemd#tag=v${_tag_name%.*}?signed"
'0001-Use-Arch-Linux-device-access-groups.patch'
'0003-PARTIAL-REVERT-commit-tree-wide-replace-strverscmp-and-str_verscmp-with-strverscmp_improved.patch'
'initcpio-hook-udev'
'initcpio-install-systemd'
'initcpio-install-udev'
@ -51,7 +50,6 @@ source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}?signed"
sha512sums=('SKIP'
'SKIP'
'10f3b477527ec263cc6465c84d94416e356435930edc9e26844a0fd4f71e87a27fa0f91ce24b43a22cacdd2ead5e760e9d607369bc537a8da8d34021302a89a1'
'34541f1967536524329867f9f341f8d9250d9d771c60dc3e6a22ccb82fc01f103cfd3f9903329777591ccbecd2446622a5d6b3804fa0411482b85c70593ee8ad'
'f0d933e8c6064ed830dec54049b0a01e27be87203208f6ae982f10fb4eddc7258cb2919d594cbfb9a33e74c3510cfd682f3416ba8e804387ab87d1a217eb4b73'
'5479c8ef963ff247381392907c13308b4ae3a9383c867bd4c8a318b159f23acdb4be5f4ddae0dab4665f4927d3f30166077b1d3aaa2cde6bf53d023b7abb939c'
'a8c7e4a2cc9c9987e3c957a1fc3afe8281f2281fffd2e890913dcf00cf704024fb80d86cb75f9314b99b0e03bac275b22de93307bfc226d8be9435497e95b7e6'
@ -71,6 +69,8 @@ sha512sums=('SKIP'
'825b9dd0167c072ba62cabe0677e7cd20f2b4b850328022540f122689d8b25315005fa98ce867cf6e7460b2b26df16b88bb3b5c9ebf721746dce4e2271af7b97')
_backports=(
# chrattr-util: return EOPNOTSUPP from chrattr_full if no other failure was observed
'7c3b51c469140cdbc1b7e9a232af3f250fea3884'
)
_reverts=(
@ -94,10 +94,6 @@ prepare() {
# Replace cdrom/dialout/tape groups with optical/uucp/storage
patch -Np1 -i ../0001-Use-Arch-Linux-device-access-groups.patch
# https://bugs.archlinux.org/task/70264
# https://github.com/systemd/systemd/issues/19191
patch -Np1 -i ../0003-PARTIAL-REVERT-commit-tree-wide-replace-strverscmp-and-str_verscmp-with-strverscmp_improved.patch
}
build() {
@ -228,9 +224,6 @@ package_systemd() {
sed -i -e '/^C \/etc\/nsswitch\.conf/d' \
-e '/^C \/etc\/issue/d' "$pkgdir"/usr/lib/tmpfiles.d/etc.conf
# add back tmpfiles.d/legacy.conf, normally omitted without sysv-compat
install -m0644 $pkgbase-stable/tmpfiles.d/legacy.conf "$pkgdir"/usr/lib/tmpfiles.d
# ship default policy to leave services disabled
echo 'disable *' >"$pkgdir"/usr/lib/systemd/system-preset/99-default.preset