sys-apps/util-linux: Sync with Gentoo

It's from Gentoo commit ca357571bbcbf795e7a87354251ca1ff79483c09.
This commit is contained in:
Flatcar Buildbot 2025-01-13 07:10:22 +00:00 committed by Krzesimir Nowak
parent 24dc33fd9d
commit a6c1c882c6
16 changed files with 3 additions and 2274 deletions

View File

@ -1,8 +1,2 @@
DIST util-linux-2.39.3.tar.sign 833 BLAKE2B 433b9ad6e97d9e2ffbd516addf8406587d009d9c7661ac126ae89b370f22a39f1f1243e86ef383133d656833d3ad35054397d60e0e0c67bd1e9402939903570b SHA512 d9993d7a77531ca8fe3e58458d65e7d721c38aa53838547479fea169941a69b1c07fb02ac90ed5a0360025814b0999167621dbc4215348810584947a9e67756d
DIST util-linux-2.39.3.tar.xz 8526168 BLAKE2B cd7b2b3c820e920d4a6ecd46fd807e018fc8e54439292f5e62c5f6863dd0f2505df3ec02c470d9be255a437c6ee8e4077908ac78d19a0d1273854d99eb571df0 SHA512 a2de1672f06ca5d2d431db1265a8499808770c3781019ec4a3a40170df4685826d8e3ca120841dcc5df4681ca8c935a993317bd0dc70465b21bf8e0efef65afa
DIST util-linux-2.39.4.tar.sign 833 BLAKE2B cbefaa4968ac82491c9eaa467c5e84e9b4a0c8dac74855aa04536a08f2c924e5f027f1a6389bd75e4366671addfe10a292f293295734041da7dc90971209134c SHA512 3f29551913cf8206c144edb0f3575beabf6e228564cf4aaf8f83d44d45ec8f24c22c7d178cc225804ecdfc66f6c24ee790e3b3660622975fdeec98fe7e2500aa
DIST util-linux-2.39.4.tar.xz 8541176 BLAKE2B 53fef6f36b802d5e4c1112376c77e5cd832280d9eaeb9a6a98b2371334a1a3a8a48f5589d16f67c623a5050ae3b16dafc43ee26a9e8cb77079f9b6a2ee6c9480 SHA512 94e0282ac9705ca666d3c3864f2656bd1a21d879339164edd2c413ae7665b1cfec01f9c58a83b3148b8c4b4e857653447e5523c3b27230b175dd39f75ac6fae0
DIST util-linux-2.40.1.tar.sign 833 BLAKE2B 2f8537cd4f52e0c203360d081a91f17c2db13c0f6054ef02f967e8fdf03099bb8c42604864003bfb911ea7804033f4020e2f56a933667fc84ac9c4b8d01e9ed5 SHA512 ab73a27fc8601041bf7b8a088586b78c49ca83cf9c8cfe5877280c0b5c607e95695512804335a8c0ac1d243e4433595f44256407fdbfb053451b8ab40d605502
DIST util-linux-2.40.1.tar.xz 8823784 BLAKE2B a51fcf9b63c033e470da4f4f0094f0f923fdeb5a649a5c59d2d44888e5e741dfd95e589247355296e050d9ec8dc4334c5898453af055abcb30082af6b835a3e3 SHA512 58ec6eb41d4b6bfc544a80e95c71b5f3798ab4d2a9435d3ee9e5edd56f9b3f09bcb154bdd70e002dc018938937e2e946ae731dcda0f86b362fc43423689e41fc
DIST util-linux-2.40.2.tar.sign 833 BLAKE2B 10aae23d25c1364bac0034d6862df5738c7a405d52198fba1e4e9173a1b2ba9f3d994dacb881d920c3339c0f1018c7dd1c97c7752bdf0e8e634f54235c2b3f5c SHA512 e4ace52333df0c8dd7c8ffc3b813020615c456e06a6978e06c8183ec29896be5af7c25f59e65fc2c2849750d8d7b43043775b8504d6d01f626f1adf296493ce1
DIST util-linux-2.40.2.tar.xz 8854820 BLAKE2B 8306d651f27db6665e91a937c9f1970938fec5b069636fea3c2688afddebd1a3424f0b0802a034eab049cf7692dd435cf93e82aa5f4a40cc8064d60b4ca59535 SHA512 ffe20b915a518a150401d429b0338bc7022190e4ca0ef91a6d9eea345db8c1e11ad01784163b8fcf978506f3f5cad473f29d5d4ef93a4c66a5ae0ebd9fb0c8f2

View File

@ -1,33 +0,0 @@
https://bugs.gentoo.org/920904
https://github.com/util-linux/util-linux/commit/1d4456dd81a64a73685df9e5f1232d566818e453
From 1d4456dd81a64a73685df9e5f1232d566818e453 Mon Sep 17 00:00:00 2001
From: John David Anglin <dave@parisc-linux.org>
Date: Mon, 7 Aug 2023 15:37:17 +0000
Subject: [PATCH] enosys: fix build on hppa
The following patch fixes the definition of SECCOMP_ARCH_NATIVE
on hppa.
Signed-off-by: John David Anglin <dave.anglin@bell.net>
---
include/audit-arch.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/audit-arch.h b/include/audit-arch.h
index 63d9eb52c1..f1354eec5d 100644
--- a/include/audit-arch.h
+++ b/include/audit-arch.h
@@ -57,6 +57,12 @@
# else
# define SECCOMP_ARCH_NATIVE AUDIT_ARCH_LOONGARCH64
# endif
+#elif __hppa__
+# if __SIZEOF_POINTER__ == 4
+# define SECCOMP_ARCH_NATIVE AUDIT_ARCH_PARISC
+# else
+# define SECCOMP_ARCH_NATIVE AUDIT_ARCH_PARISC64
+# endif
#else
# error Unknown target architecture
#endif

View File

@ -1,268 +0,0 @@
https://bugs.gentoo.org/914791
https://github.com/util-linux/util-linux/issues/2249
https://github.com/util-linux/util-linux/pull/2251
From 8b36444f447949c3ab477f2c43b45a94c30ee7bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 21 May 2023 21:42:14 +0200
Subject: [PATCH 1/4] fadvise: (test) dynamically calculate expected test
values
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
---
tests/ts/fadvise/drop | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
index 7c7eee5dc2..86c0d5b0a3 100755
--- a/tests/ts/fadvise/drop
+++ b/tests/ts/fadvise/drop
@@ -16,7 +16,7 @@ ts_check_prog "sleep"
ts_cd "$TS_OUTDIR"
FILE="ddtest"
-BS=4k
+BS=4096
COUNT=8
FILE_FS="$("$TS_CMD_FINDMNT" -nr -o FSTYPE -T "$PWD")"
@@ -41,22 +41,22 @@ create_file() {
echo
create_file
- echo "offset: 8192"
- "$TS_CMD_FADVISE" -o 8192 "$FILE"
+ echo "offset: $(( 2 * $BS ))"
+ "$TS_CMD_FADVISE" -o $(( 2 * $BS )) "$FILE"
echo status: $?
"$TS_CMD_FINCORE" "$FILE"
echo
create_file
- echo "length: 16384"
- "$TS_CMD_FADVISE" -l 16384 "$FILE"
+ echo "length: $(( 4 * $BS ))"
+ "$TS_CMD_FADVISE" -l $(( 4 * $BS )) "$FILE"
echo status: $?
"$TS_CMD_FINCORE" "$FILE"
echo
create_file
- echo "offset: 8192, length: 16384 fd: 42"
- "$TS_CMD_FADVISE" -o 8192 -l 16384 --fd 42 42<"$FILE"
+ echo "offset: $(( 2 * $BS )), length: $(( 4 * $BS )) fd: 42"
+ "$TS_CMD_FADVISE" -o $(( 2 * $BS )) -l $(( 4 * $BS )) --fd 42 42<"$FILE"
echo status: $?
"$TS_CMD_FINCORE" "$FILE"
echo
From e5009e773fc801eca887dd43b721cd1b1aa327be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 21 May 2023 21:43:38 +0200
Subject: [PATCH 2/4] fadvise: (tests) factor out calls to "fincore"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This will make it easier to pass argument later.
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
---
tests/ts/fadvise/drop | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
index 86c0d5b0a3..8869b7da4d 100755
--- a/tests/ts/fadvise/drop
+++ b/tests/ts/fadvise/drop
@@ -28,37 +28,41 @@ create_file() {
dd if=/dev/zero of="$FILE" bs=$BS count=$COUNT conv=fsync >& /dev/null
}
+do_fincore() {
+ "$TS_CMD_FINCORE" "$FILE"
+}
+
{
create_file
- "$TS_CMD_FINCORE" "$FILE"
+ do_fincore
echo
create_file
echo "whole file"
"$TS_CMD_FADVISE" "$FILE"
echo status: $?
- "$TS_CMD_FINCORE" "$FILE"
+ do_fincore
echo
create_file
echo "offset: $(( 2 * $BS ))"
"$TS_CMD_FADVISE" -o $(( 2 * $BS )) "$FILE"
echo status: $?
- "$TS_CMD_FINCORE" "$FILE"
+ do_fincore
echo
create_file
echo "length: $(( 4 * $BS ))"
"$TS_CMD_FADVISE" -l $(( 4 * $BS )) "$FILE"
echo status: $?
- "$TS_CMD_FINCORE" "$FILE"
+ do_fincore
echo
create_file
echo "offset: $(( 2 * $BS )), length: $(( 4 * $BS )) fd: 42"
"$TS_CMD_FADVISE" -o $(( 2 * $BS )) -l $(( 4 * $BS )) --fd 42 42<"$FILE"
echo status: $?
- "$TS_CMD_FINCORE" "$FILE"
+ do_fincore
echo
rm "$FILE"
From 33980996d0b429fc59c40f8352633c0a21a0f96a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 21 May 2023 21:44:20 +0200
Subject: [PATCH 3/4] fadvise: (test) don't compare fincore page counts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
These depend on the machines pagesize and are therefore not a good
comparision.
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
---
tests/expected/fadvise/drop | 20 ++++++++++----------
tests/ts/fadvise/drop | 2 +-
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/tests/expected/fadvise/drop b/tests/expected/fadvise/drop
index f2360b56fb..25f23e050a 100644
--- a/tests/expected/fadvise/drop
+++ b/tests/expected/fadvise/drop
@@ -1,23 +1,23 @@
- RES PAGES SIZE FILE
- 32K 8 32K ddtest
+ RES SIZE FILE
+ 32K 32K ddtest
whole file
status: 0
-RES PAGES SIZE FILE
- 0B 0 32K ddtest
+RES SIZE FILE
+ 0B 32K ddtest
offset: 8192
status: 0
-RES PAGES SIZE FILE
- 8K 2 32K ddtest
+RES SIZE FILE
+ 8K 32K ddtest
length: 16384
status: 0
- RES PAGES SIZE FILE
- 16K 4 32K ddtest
+ RES SIZE FILE
+ 16K 32K ddtest
offset: 8192, length: 16384 fd: 42
status: 0
- RES PAGES SIZE FILE
- 16K 4 32K ddtest
+ RES SIZE FILE
+ 16K 32K ddtest
diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
index 8869b7da4d..6c4298e872 100755
--- a/tests/ts/fadvise/drop
+++ b/tests/ts/fadvise/drop
@@ -29,7 +29,7 @@ create_file() {
}
do_fincore() {
- "$TS_CMD_FINCORE" "$FILE"
+ "$TS_CMD_FINCORE" -o RES,SIZE,FILE "$FILE"
}
{
From c0f31b79f5d1c665cdc057fb32f4d161d28aa5b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 21 May 2023 21:45:10 +0200
Subject: [PATCH 4/4] fadvise: (test) test with 64k blocks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This will allow the tests to also pass on systems with 64k pagesizes.
Closes #2249
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
---
tests/expected/fadvise/drop | 26 +++++++++++++-------------
tests/ts/fadvise/drop | 2 +-
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/tests/expected/fadvise/drop b/tests/expected/fadvise/drop
index 25f23e050a..e7bb26b6e2 100644
--- a/tests/expected/fadvise/drop
+++ b/tests/expected/fadvise/drop
@@ -1,23 +1,23 @@
- RES SIZE FILE
- 32K 32K ddtest
+ RES SIZE FILE
+ 512K 512K ddtest
whole file
status: 0
-RES SIZE FILE
- 0B 32K ddtest
+RES SIZE FILE
+ 0B 512K ddtest
-offset: 8192
+offset: 131072
status: 0
-RES SIZE FILE
- 8K 32K ddtest
+ RES SIZE FILE
+ 128K 512K ddtest
-length: 16384
+length: 262144
status: 0
- RES SIZE FILE
- 16K 32K ddtest
+ RES SIZE FILE
+ 256K 512K ddtest
-offset: 8192, length: 16384 fd: 42
+offset: 131072, length: 262144 fd: 42
status: 0
- RES SIZE FILE
- 16K 32K ddtest
+ RES SIZE FILE
+ 256K 512K ddtest
diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
index 6c4298e872..45dcb9110b 100755
--- a/tests/ts/fadvise/drop
+++ b/tests/ts/fadvise/drop
@@ -16,7 +16,7 @@ ts_check_prog "sleep"
ts_cd "$TS_OUTDIR"
FILE="ddtest"
-BS=4096
+BS=65536
COUNT=8
FILE_FS="$("$TS_CMD_FINDMNT" -nr -o FSTYPE -T "$PWD")"

View File

@ -1,23 +0,0 @@
https://bugs.gentoo.org/627532
https://github.com/util-linux/util-linux/commit/f5715c117e727d4ff45e0d8568f188753620356e
From f5715c117e727d4ff45e0d8568f188753620356e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Mon, 13 Nov 2023 21:05:59 +0100
Subject: [PATCH] fincore: (tests) also use nosize error file
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Link: https://lore.kernel.org/util-linux/b8cafd0d89878949705782312dfe800ec2779035.camel@physik.fu-berlin.de/
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
--- a/tests/ts/fincore/count
+++ b/tests/ts/fincore/count
@@ -107,6 +107,7 @@ if test -f "$TS_EXPECTED.$PAGE_SIZE"; then
OUT_COLUMNS="PAGES,SIZE,FILE"
else
TS_EXPECTED+=".nosize"
+ TS_EXPECTED_ERR+=".nosize"
OUT_COLUMNS="PAGES,FILE"
fi

View File

@ -1,25 +0,0 @@
https://bugs.gentoo.org/927980
https://people.rit.edu/sjf5462/6831711781/wall_2_27_2024.txt
https://github.com/util-linux/util-linux/commit/404b0781f52f7c045ca811b2dceec526408ac253
From 404b0781f52f7c045ca811b2dceec526408ac253 Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Thu, 21 Mar 2024 11:16:20 +0100
Subject: [PATCH] wall: fix escape sequence Injection [CVE-2024-28085]
Let's use for all cases the same output function.
Reported-by: Skyler Ferrante <sjf5462@rit.edu>
Signed-off-by: Karel Zak <kzak@redhat.com>
--- a/term-utils/wall.c
+++ b/term-utils/wall.c
@@ -368,7 +368,7 @@ static char *makemsg(char *fname, char **mvec, int mvecsz,
int i;
for (i = 0; i < mvecsz; i++) {
- fputs(mvec[i], fs);
+ fputs_careful(mvec[i], fs, '^', true, TERM_WIDTH);
if (i < mvecsz - 1)
fputc(' ', fs);
}

View File

@ -1,52 +0,0 @@
https://bugs.gentoo.org/928396
https://github.com/util-linux/util-linux/commit/4b2e6f5071a4c5beebbd9668d24dc05defc096d7
From 4b2e6f5071a4c5beebbd9668d24dc05defc096d7 Mon Sep 17 00:00:00 2001
From: Tanish Yadav <devtany@gmail.com>
Date: Tue, 5 Mar 2024 00:51:41 +0530
Subject: [PATCH] su: fix use after free in run_shell
Do not free tmp for non login branch as basename may return a pointer to
some part of it.
[kzak@redhat.com: - improve coding style of the function]
Signed-off-by: Tanish Yadav <devtany@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
---
login-utils/su-common.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/login-utils/su-common.c b/login-utils/su-common.c
index 242b6ce4ea..9bc0231961 100644
--- a/login-utils/su-common.c
+++ b/login-utils/su-common.c
@@ -835,13 +835,14 @@ static void run_shell(
size_t n_args = 1 + su->fast_startup + 2 * ! !command + n_additional_args + 1;
const char **args = xcalloc(n_args, sizeof *args);
size_t argno = 1;
+ char *tmp;
DBG(MISC, ul_debug("starting shell [shell=%s, command=\"%s\"%s%s]",
shell, command,
su->simulate_login ? " login" : "",
su->fast_startup ? " fast-start" : ""));
+ tmp = xstrdup(shell);
- char* tmp = xstrdup(shell);
if (su->simulate_login) {
char *arg0;
char *shell_basename;
@@ -851,10 +852,8 @@ static void run_shell(
arg0[0] = '-';
strcpy(arg0 + 1, shell_basename);
args[0] = arg0;
- } else {
- args[0] = basename(tmp);
- }
- free(tmp);
+ } else
+ args[0] = basename(tmp);
if (su->fast_startup)
args[argno++] = "-f";

View File

@ -1,40 +0,0 @@
https://bugs.gentoo.org/926950
https://gitlab.com/lvmteam/lvm2/-/issues/11
https://bugzilla.opensuse.org/show_bug.cgi?id=1213227
https://github.com/util-linux/util-linux/pull/2373
https://github.com/util-linux/util-linux/commit/93ba7961779789217a1f814ce3110ff8c040c8c3
From 93ba7961779789217a1f814ce3110ff8c040c8c3 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fvogt@suse.de>
Date: Wed, 12 Jul 2023 15:48:27 +0200
Subject: [PATCH] Revert "libblkid: try LUKS2 first when probing"
mdadm superblocks before 1.1 are placed at the end of the device, which
means that the data contained inside the array starts at offset 0. For
LUKS inside MD, blkid falsely detects this as plain LUKS instead of a
linux_raid_member. This causes e.g. dracut to not assemble the array
during boot and system startup fails.
This reverts commit b8889c0a214aeb3dd47bf1ab280fe5534b64d2aa.
--- a/libblkid/src/superblocks/superblocks.c
+++ b/libblkid/src/superblocks/superblocks.c
@@ -94,11 +94,6 @@ static int blkid_probe_set_usage(blkid_probe pr, int usage);
*/
static const struct blkid_idinfo *idinfos[] =
{
- /* In case the volume is locked with OPAL we are going to get
- * an I/O error when reading past the LUKS header, so try it
- * first. */
- &luks_idinfo,
-
/* RAIDs */
&linuxraid_idinfo,
&ddfraid_idinfo,
@@ -124,6 +119,7 @@ static const struct blkid_idinfo *idinfos[] =
&snapcow_idinfo,
&verity_hash_idinfo,
&integrity_idinfo,
+ &luks_idinfo,
&vmfs_volume_idinfo,
&ubi_idinfo,
&vdo_idinfo,

View File

@ -1,55 +0,0 @@
https://bugs.gentoo.org/927258
https://github.com/util-linux/util-linux/pull/2845
From d271589d9536181184fcd19194f879e7c776d43e Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Mon, 18 Mar 2024 21:29:13 -0400
Subject: [PATCH] libmount: Fix export of mnt_context_is_lazy and
mnt_context_is_onlyonce
[kzak@redhat.com: - fix also function docs]
Bug: https://bugs.gentoo.org/927258
Closes: https://github.com/util-linux/util-linux/issues/2844
Fixes: 3d1c41c8c ("libmount: add --onlyonce")
Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
(cherry picked from commit 6d2917f2eb910fb8bcdc6476be18c34fee152911)
---
libmount/src/context.c | 4 ++--
libmount/src/libmount.sym | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libmount/src/context.c b/libmount/src/context.c
index 0cd320190..20f4c64ae 100644
--- a/libmount/src/context.c
+++ b/libmount/src/context.c
@@ -549,10 +549,10 @@ int mnt_context_enable_onlyonce(struct libmnt_context *cxt, int enable)
}
/**
- * mnt_context_is_lazy:
+ * mnt_context_is_onlyonce:
* @cxt: mount context
*
- * Returns: 1 if lazy umount is enabled or 0
+ * Returns: 1 if only-once mount is enabled or 0
*/
int mnt_context_is_onlyonce(struct libmnt_context *cxt)
{
diff --git a/libmount/src/libmount.sym b/libmount/src/libmount.sym
index 715bb5c5f..1fa8bce3c 100644
--- a/libmount/src/libmount.sym
+++ b/libmount/src/libmount.sym
@@ -370,7 +370,7 @@ MOUNT_2_38 {
MOUNT_2_39 {
mnt_cache_set_sbprobe;
mnt_context_enable_onlyonce;
- mnt_context_is_lazy;
+ mnt_context_is_onlyonce;
mnt_context_enable_noautofs;
mnt_table_enable_noautofs;
mnt_table_is_noautofs;
--
2.43.2

View File

@ -1,56 +0,0 @@
https://bugs.gentoo.org/926293
https://github.com/util-linux/util-linux/commit/77454e58d58f904cfdc02d3ca5bb65f1bd8739fc
From 77454e58d58f904cfdc02d3ca5bb65f1bd8739fc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 3 Dec 2023 19:59:46 -0800
Subject: [PATCH] login-utils: include libgen.h for basename API
musl has removed the non-prototype declaration of basename from string.h [1] which now results in build errors with clang-17+ compiler
include libgen.h for using the posix declaration of the funciton.
Fixes
../util-linux-2.39.2/login-utils/su-common.c:847:20: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
847 | shell_basename = basename(shell);
| ^
[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/login-utils/su-common.c
+++ b/login-utils/su-common.c
@@ -26,6 +26,7 @@
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
+#include <libgen.h>
#include <security/pam_appl.h>
#ifdef HAVE_SECURITY_PAM_MISC_H
# include <security/pam_misc.h>
@@ -840,17 +841,20 @@ static void run_shell(
su->simulate_login ? " login" : "",
su->fast_startup ? " fast-start" : ""));
+ char* tmp = xstrdup(shell);
if (su->simulate_login) {
char *arg0;
char *shell_basename;
- shell_basename = basename(shell);
+ shell_basename = basename(tmp);
arg0 = xmalloc(strlen(shell_basename) + 2);
arg0[0] = '-';
strcpy(arg0 + 1, shell_basename);
args[0] = arg0;
- } else
- args[0] = basename(shell);
+ } else {
+ args[0] = basename(tmp);
+ }
+ free(tmp);
if (su->fast_startup)
args[argno++] = "-f";

View File

@ -1,35 +0,0 @@
https://github.com/util-linux/util-linux/commit/9ba8eb5d89f0ebba8b3a542c041a5838e10a0d75
https://bugs.gentoo.org/573760#c11
From 9ba8eb5d89f0ebba8b3a542c041a5838e10a0d75 Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Tue, 23 Apr 2024 10:29:37 +0200
Subject: [PATCH] libmount: fix umount --read-only
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reported-by: Krzysztof Olędzki <ole@ans.pl>
Signed-off-by: Karel Zak <kzak@redhat.com>
(cherry picked from commit a20e7e23a8565e01b1c84de6924d1fbbdb1cfccc)
--- a/libmount/src/context_umount.c
+++ b/libmount/src/context_umount.c
@@ -267,6 +267,9 @@ static int lookup_umount_fs_by_statfs(struct libmnt_context *cxt, const char *tg
* So, let's use statfs() if possible (it's bad idea for --lazy/--force
* umounts as target is probably unreachable NFS, also for --detach-loop
* as this additionally needs to know the name of the loop device).
+ *
+ * For the "umount --read-only" command, we need to read the mountinfo
+ * to obtain the mount source.
*/
if (mnt_context_is_restricted(cxt)
|| *tgt != '/'
@@ -275,6 +278,7 @@ static int lookup_umount_fs_by_statfs(struct libmnt_context *cxt, const char *tg
|| mnt_context_is_lazy(cxt)
|| mnt_context_is_nocanonicalize(cxt)
|| mnt_context_is_loopdel(cxt)
+ || mnt_context_is_rdonly_umount(cxt)
|| mnt_safe_stat(tgt, &st) != 0 || !S_ISDIR(st.st_mode)
|| has_utab_entry(cxt, tgt))
return 1; /* not found */

View File

@ -1,411 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..11} )
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
pam python-r1 multilib-minimal multiprocessing systemd
MY_PV="${PV/_/-}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
inherit autotools git-r3
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/karelzak.asc
inherit verify-sig
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos"
fi
SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
SRC_URI+=" verify-sig? ( https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.sign )"
fi
S="${WORKDIR}/${MY_P}"
DESCRIPTION="Various useful Linux utilities"
HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/util-linux/util-linux"
LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain"
SLOT="0"
IUSE="audit build caps +cramfs cryptsetup fdformat +hardlink kill +logger magic ncurses nls pam python +readline rtas selinux slang static-libs +su +suid systemd test tty-helpers udev unicode"
# Most lib deps here are related to programs rather than our libs,
# so we rarely need to specify ${MULTILIB_USEDEP}.
RDEPEND="
virtual/libcrypt:=
audit? ( >=sys-process/audit-2.6:= )
caps? ( sys-libs/libcap-ng )
cramfs? ( sys-libs/zlib:= )
cryptsetup? ( >=sys-fs/cryptsetup-2.1.0 )
hardlink? ( dev-libs/libpcre2:= )
ncurses? (
sys-libs/ncurses:=[unicode(+)?]
magic? ( sys-apps/file:0= )
)
nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? ( ${PYTHON_DEPS} )
readline? ( sys-libs/readline:0= )
rtas? ( sys-libs/librtas )
selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
slang? ( sys-libs/slang )
!build? (
systemd? ( sys-apps/systemd )
udev? ( virtual/libudev:= )
)
"
BDEPEND="
virtual/pkgconfig
nls? (
app-text/po4a
sys-devel/gettext
)
test? ( app-alternatives/bc )
"
DEPEND="
${RDEPEND}
virtual/os-headers
acct-group/root
"
RDEPEND+="
hardlink? ( !app-arch/hardlink )
logger? ( !>=app-admin/sysklogd-2.0[logger] )
kill? (
!sys-apps/coreutils[kill]
!sys-process/procps[kill]
)
su? (
!<sys-apps/shadow-4.7-r2
!>=sys-apps/shadow-4.7-r2[su]
)
!net-wireless/rfkill
"
if [[ ${PV} == 9999 ]] ; then
# Required for man-page generation
BDEPEND+=" dev-ruby/asciidoctor"
else
BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-karelzak-20230517 )"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${PN}-2.39.2-fincore-test.patch
"${FILESDIR}"/${PN}-2.39.2-backport-pr2251.patch
"${FILESDIR}"/${PN}-2.39.2-backport-1d4456d.patch
)
pkg_pretend() {
if use su && ! use suid ; then
elog "su will be installed as suid despite USE=-suid (bug #832092)"
elog "To use su without suid, see e.g. Portage's suidctl feature."
fi
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
return
fi
if use verify-sig ; then
mkdir "${T}"/verify-sig || die
pushd "${T}"/verify-sig &>/dev/null || die
# Upstream sign the decompressed .tar
# Let's do it separately in ${T} then cleanup to avoid external
# effects on normal unpack.
cp "${DISTDIR}"/${MY_P}.tar.xz . || die
xz -d ${MY_P}.tar.xz || die
verify-sig_verify_detached ${MY_P}.tar "${DISTDIR}"/${MY_P}.tar.sign
popd &>/dev/null || die
rm -r "${T}"/verify-sig || die
fi
default
}
src_prepare() {
default
if use test ; then
# Known-failing tests
# TODO: investigate these
local known_failing_tests=(
# Subtest 'options-maximum-size-8192' fails
hardlink/options
# Fails in sandbox
lsns/ioctl_ns
lsfd/mkfds-symlink
lsfd/mkfds-rw-character-device
# Fails with network-sandbox at least in nspawn
lsfd/option-inet
utmp/last-ipv6
)
local known_failing_test
for known_failing_test in "${known_failing_tests[@]}" ; do
einfo "Removing known-failing test: ${known_failing_test}"
rm tests/ts/${known_failing_test} || die
done
fi
if [[ ${PV} == 9999 ]] ; then
po/update-potfiles
eautoreconf
else
elibtoolize
fi
}
python_configure() {
local myeconfargs=(
"${commonargs[@]}"
--disable-all-programs
--disable-bash-completion
--without-systemdsystemunitdir
--with-python
--enable-libblkid
--enable-libmount
--enable-pylibmount
)
mkdir "${BUILD_DIR}" || die
pushd "${BUILD_DIR}" >/dev/null || die
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
popd >/dev/null || die
}
multilib_src_configure() {
# The scanf test in a run-time test which fails while cross-compiling.
# Blindly assume a POSIX setup since we require libmount, and libmount
# itself fails when the scanf test fails. bug #531856
tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
# bug #485486
export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
# bug #545042
export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
# Undo bad ncurses handling by upstream. Fall back to pkg-config.
# bug #601530
export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
# Avoid automagic dependency on ppc*
export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
# configure args shared by python and non-python builds
local commonargs=(
--localstatedir="${EPREFIX}/var"
--runstatedir="${EPREFIX}/run"
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
# Temporary workaround until ~2.39.2. 2.39.x introduced a big rewrite.
# https://github.com/util-linux/util-linux/issues/2287#issuecomment-1576640373
--disable-libmount-mountfd-support
)
local myeconfargs=(
"${commonargs[@]}"
--with-bashcompletiondir="$(get_bashcompdir)"
--without-python
$(multilib_native_use_enable suid makeinstall-chown)
$(multilib_native_use_enable suid makeinstall-setuid)
$(multilib_native_use_with readline)
$(multilib_native_use_with slang)
$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
$(multilib_native_use_with audit)
$(tc-has-tls || echo --disable-tls)
$(use_enable nls)
$(use_enable nls poman)
$(use_enable unicode widechar)
$(use_enable static-libs static)
$(use_with ncurses tinfo)
$(use_with selinux)
# TODO: Wire this up (bug #931118)
--without-econf
)
if use build ; then
myeconfargs+=(
--without-systemd
--without-udev
)
else
myeconfargs+=(
$(multilib_native_use_with systemd)
$(multilib_native_use_with udev)
)
fi
if multilib_is_native_abi ; then
myeconfargs+=(
--disable-chfn-chsh
--disable-login
--disable-newgrp
--disable-nologin
--disable-pylibmount
--disable-raw
--disable-vipw
--enable-agetty
--enable-bash-completion
--enable-line
--enable-partx
--enable-rename
--enable-rfkill
--enable-schedutils
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
$(use_enable caps setpriv)
$(use_enable cramfs)
$(use_enable fdformat)
$(use_enable hardlink)
$(use_enable kill)
$(use_enable logger)
$(use_enable ncurses pg)
$(use_enable su)
$(use_enable tty-helpers mesg)
$(use_enable tty-helpers wall)
$(use_enable tty-helpers write)
$(use_with cryptsetup)
)
if [[ ${PV} == *9999 ]] ; then
myeconfargs+=( --enable-asciidoc )
else
# Upstream is shipping pre-generated man-pages for releases
myeconfargs+=( --disable-asciidoc )
fi
else
myeconfargs+=(
--disable-all-programs
--disable-asciidoc
--disable-bash-completion
--without-systemdsystemunitdir
--disable-poman
# build libraries
--enable-libuuid
--enable-libblkid
--enable-libsmartcols
--enable-libfdisk
--enable-libmount
)
fi
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_configure
fi
}
src_configure() {
append-lfs-flags
multilib-minimal_src_configure
}
python_compile() {
pushd "${BUILD_DIR}" >/dev/null || die
emake all
popd >/dev/null || die
}
multilib_src_compile() {
emake all
if multilib_is_native_abi && use python ; then
python_foreach_impl python_compile
fi
}
python_test() {
pushd "${BUILD_DIR}" >/dev/null || die
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
popd >/dev/null || die
}
multilib_src_test() {
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_test
fi
}
python_install() {
pushd "${BUILD_DIR}" >/dev/null || die
emake DESTDIR="${D}" install
python_optimize
popd >/dev/null || die
}
multilib_src_install() {
if multilib_is_native_abi && use python ; then
python_foreach_impl python_install
fi
# This needs to be called AFTER python_install call, bug #689190
emake DESTDIR="${D}" install
}
multilib_src_install_all() {
dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
# e2fsprogs-libs didn't install .la files, and .pc work fine
find "${ED}" -name "*.la" -delete || die
if use pam ; then
# See https://github.com/util-linux/util-linux/blob/master/Documentation/PAM-configuration.txt
newpamd "${FILESDIR}/runuser.pamd" runuser
newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
newpamd "${FILESDIR}/su-l.pamd" su-l
fi
if use su && ! use suid ; then
# Always force suid su, even when USE=-suid, as su is useless
# for the overwhelming-majority case without suid.
# Users who wish to truly have a no-suid su can strip it out
# via e.g. Portage's suidctl or some other hook.
# See bug #832092
fperms u+s /bin/su
fi
# Note:
# Bash completion for "runuser" command is provided by same file which
# would also provide bash completion for "su" command. However, we don't
# use "su" command from this package.
# This triggers a known QA warning which we ignore for now to magically
# keep bash completion for "su" command which shadow package does not
# provide.
local ver=$(tools/git-version-gen .tarballversion)
local major=$(ver_cut 1 ${ver})
local minor=$(ver_cut 2 ${ver})
local release=$(ver_cut 3 ${ver})
export QA_PKGCONFIG_VERSION="${major}.${minor}.${release:-0}"
}
pkg_postinst() {
if ! use tty-helpers ; then
elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
fi
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "The agetty util now clears the terminal by default. You"
elog "might want to add --noclear to your /etc/inittab lines."
fi
}

View File

@ -1,419 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
pam python-r1 multilib-minimal multiprocessing systemd
MY_PV="${PV/_/-}"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Various useful Linux utilities"
HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/util-linux/util-linux"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
inherit autotools git-r3
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/karelzak.asc
inherit verify-sig
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos"
fi
SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
SRC_URI+=" verify-sig? ( https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.sign )"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain"
SLOT="0"
IUSE="audit build caps +cramfs cryptsetup fdformat +hardlink kill +logger magic ncurses nls pam python +readline rtas selinux slang static-libs +su +suid systemd test tty-helpers udev unicode"
# Most lib deps here are related to programs rather than our libs,
# so we rarely need to specify ${MULTILIB_USEDEP}.
RDEPEND="
virtual/libcrypt:=
audit? ( >=sys-process/audit-2.6:= )
caps? ( sys-libs/libcap-ng )
cramfs? ( sys-libs/zlib:= )
cryptsetup? ( >=sys-fs/cryptsetup-2.1.0 )
hardlink? ( dev-libs/libpcre2:= )
ncurses? (
sys-libs/ncurses:=[unicode(+)?]
magic? ( sys-apps/file:0= )
)
nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? ( ${PYTHON_DEPS} )
readline? ( sys-libs/readline:0= )
rtas? ( sys-libs/librtas )
selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
slang? ( sys-libs/slang )
!build? (
systemd? ( sys-apps/systemd )
udev? ( virtual/libudev:= )
)
"
BDEPEND="
virtual/pkgconfig
nls? (
app-text/po4a
sys-devel/gettext
)
test? ( app-alternatives/bc )
"
DEPEND="
${RDEPEND}
virtual/os-headers
acct-group/root
"
RDEPEND+="
hardlink? ( !app-arch/hardlink )
logger? ( !>=app-admin/sysklogd-2.0[logger] )
kill? (
!sys-apps/coreutils[kill]
!sys-process/procps[kill]
)
su? (
!<sys-apps/shadow-4.7-r2
!>=sys-apps/shadow-4.7-r2[su]
)
!net-wireless/rfkill
"
if [[ ${PV} == 9999 ]] ; then
# Required for man-page generation
BDEPEND+=" dev-ruby/asciidoctor"
else
BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-karelzak-20230517 )"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${PN}-2.39.2-fincore-test.patch
"${FILESDIR}"/${PN}-2.39.2-backport-pr2251.patch
"${FILESDIR}"/${PN}-2.39.2-backport-1d4456d.patch
"${FILESDIR}"/${PN}-2.39.3-libblkid-luks.patch
"${FILESDIR}"/${PN}-2.39.3-musl-1.2.5-basename.patch
"${FILESDIR}"/${PN}-2.39.3-libmount-Fix-export-of-mnt_context_is_lazy-and-mnt_c.patch
"${FILESDIR}"/${PN}-2.39.3-CVE-2024-28085.patch
"${FILESDIR}"/${PN}-2.39.3-fix-use-after-free.patch
)
pkg_pretend() {
if use su && ! use suid ; then
elog "su will be installed as suid despite USE=-suid (bug #832092)"
elog "To use su without suid, see e.g. Portage's suidctl feature."
fi
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
return
fi
if use verify-sig ; then
mkdir "${T}"/verify-sig || die
pushd "${T}"/verify-sig &>/dev/null || die
# Upstream sign the decompressed .tar
# Let's do it separately in ${T} then cleanup to avoid external
# effects on normal unpack.
cp "${DISTDIR}"/${MY_P}.tar.xz . || die
xz -d ${MY_P}.tar.xz || die
verify-sig_verify_detached ${MY_P}.tar "${DISTDIR}"/${MY_P}.tar.sign
popd &>/dev/null || die
rm -r "${T}"/verify-sig || die
fi
default
}
src_prepare() {
default
if use test ; then
# Known-failing tests
# TODO: investigate these
local known_failing_tests=(
# Subtest 'options-maximum-size-8192' fails
hardlink/options
# Fails in sandbox
lsns/ioctl_ns
lsfd/mkfds-symlink
lsfd/mkfds-rw-character-device
# Fails with network-sandbox at least in nspawn
lsfd/option-inet
utmp/last-ipv6
)
local known_failing_test
for known_failing_test in "${known_failing_tests[@]}" ; do
einfo "Removing known-failing test: ${known_failing_test}"
rm tests/ts/${known_failing_test} || die
done
fi
if [[ ${PV} == 9999 ]] ; then
po/update-potfiles
eautoreconf
else
elibtoolize
fi
}
python_configure() {
local myeconfargs=(
"${commonargs[@]}"
--disable-all-programs
--disable-bash-completion
--without-systemdsystemunitdir
--with-python
--enable-libblkid
--enable-libmount
--enable-pylibmount
)
mkdir "${BUILD_DIR}" || die
pushd "${BUILD_DIR}" >/dev/null || die
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
popd >/dev/null || die
}
multilib_src_configure() {
# The scanf test in a run-time test which fails while cross-compiling.
# Blindly assume a POSIX setup since we require libmount, and libmount
# itself fails when the scanf test fails. bug #531856
tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
# bug #485486
export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
# bug #545042
export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
# Undo bad ncurses handling by upstream. Fall back to pkg-config.
# bug #601530
export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
# Avoid automagic dependency on ppc*
export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
# configure args shared by python and non-python builds
local commonargs=(
--localstatedir="${EPREFIX}/var"
--runstatedir="${EPREFIX}/run"
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
# Temporary workaround until ~2.39.2. 2.39.x introduced a big rewrite.
# https://github.com/util-linux/util-linux/issues/2287#issuecomment-1576640373
--disable-libmount-mountfd-support
)
local myeconfargs=(
"${commonargs[@]}"
--with-bashcompletiondir="$(get_bashcompdir)"
--without-python
$(multilib_native_use_enable suid makeinstall-chown)
$(multilib_native_use_enable suid makeinstall-setuid)
$(multilib_native_use_with readline)
$(multilib_native_use_with slang)
$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
$(multilib_native_use_with audit)
$(tc-has-tls || echo --disable-tls)
$(use_enable nls)
$(use_enable nls poman)
$(use_enable unicode widechar)
$(use_enable static-libs static)
$(use_with ncurses tinfo)
$(use_with selinux)
# TODO: Wire this up (bug #931118)
--without-econf
)
if use build ; then
myeconfargs+=(
--without-systemd
--without-udev
)
else
myeconfargs+=(
$(multilib_native_use_with systemd)
$(multilib_native_use_with udev)
)
fi
if multilib_is_native_abi ; then
myeconfargs+=(
--disable-chfn-chsh
--disable-login
--disable-newgrp
--disable-nologin
--disable-pylibmount
--disable-raw
--disable-vipw
--enable-agetty
--enable-bash-completion
--enable-line
--enable-partx
--enable-rename
--enable-rfkill
--enable-schedutils
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
$(use_enable caps setpriv)
$(use_enable cramfs)
$(use_enable fdformat)
$(use_enable hardlink)
$(use_enable kill)
$(use_enable logger)
$(use_enable ncurses pg)
$(use_enable su)
$(use_enable tty-helpers mesg)
$(use_enable tty-helpers wall)
$(use_enable tty-helpers write)
$(use_with cryptsetup)
)
if [[ ${PV} == *9999 ]] ; then
myeconfargs+=( --enable-asciidoc )
else
# Upstream is shipping pre-generated man-pages for releases
myeconfargs+=( --disable-asciidoc )
fi
else
myeconfargs+=(
--disable-all-programs
--disable-asciidoc
--disable-bash-completion
--without-systemdsystemunitdir
--disable-poman
# build libraries
--enable-libuuid
--enable-libblkid
--enable-libsmartcols
--enable-libfdisk
--enable-libmount
)
fi
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_configure
fi
}
src_configure() {
append-lfs-flags
multilib-minimal_src_configure
}
python_compile() {
pushd "${BUILD_DIR}" >/dev/null || die
emake all
popd >/dev/null || die
}
multilib_src_compile() {
emake all
if multilib_is_native_abi && use python ; then
python_foreach_impl python_compile
fi
}
python_test() {
pushd "${BUILD_DIR}" >/dev/null || die
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
popd >/dev/null || die
}
multilib_src_test() {
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_test
fi
}
python_install() {
pushd "${BUILD_DIR}" >/dev/null || die
emake DESTDIR="${D}" install
python_optimize
popd >/dev/null || die
}
multilib_src_install() {
if multilib_is_native_abi && use python ; then
python_foreach_impl python_install
fi
# This needs to be called AFTER python_install call, bug #689190
emake DESTDIR="${D}" install
}
multilib_src_install_all() {
dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
dosym hexdump /usr/bin/hd
newman - hd.1 <<< '.so man1/hexdump.1'
# e2fsprogs-libs didn't install .la files, and .pc work fine
find "${ED}" -name "*.la" -delete || die
if use pam ; then
# See https://github.com/util-linux/util-linux/blob/master/Documentation/PAM-configuration.txt
newpamd "${FILESDIR}/runuser.pamd" runuser
newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
newpamd "${FILESDIR}/su-l.pamd" su-l
fi
if use su && ! use suid ; then
# Always force suid su, even when USE=-suid, as su is useless
# for the overwhelming-majority case without suid.
# Users who wish to truly have a no-suid su can strip it out
# via e.g. Portage's suidctl or some other hook.
# See bug #832092
fperms u+s /bin/su
fi
# Note:
# Bash completion for "runuser" command is provided by same file which
# would also provide bash completion for "su" command. However, we don't
# use "su" command from this package.
# This triggers a known QA warning which we ignore for now to magically
# keep bash completion for "su" command which shadow package does not
# provide.
local ver=$(tools/git-version-gen .tarballversion)
local major=$(ver_cut 1 ${ver})
local minor=$(ver_cut 2 ${ver})
local release=$(ver_cut 3 ${ver})
export QA_PKGCONFIG_VERSION="${major}.${minor}.${release:-0}"
}
pkg_postinst() {
if ! use tty-helpers ; then
elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
fi
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "The agetty util now clears the terminal by default. You"
elog "might want to add --noclear to your /etc/inittab lines."
fi
}

View File

@ -1,420 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
pam python-r1 multilib-minimal multiprocessing systemd
MY_PV="${PV/_/-}"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Various useful Linux utilities"
HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/util-linux/util-linux"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
inherit autotools git-r3
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/karelzak.asc
inherit verify-sig
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos"
fi
SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
SRC_URI+=" verify-sig? ( https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.sign )"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain"
SLOT="0"
IUSE="audit build caps +cramfs cryptsetup fdformat +hardlink kill +logger magic ncurses nls pam python +readline rtas selinux slang static-libs +su +suid systemd test tty-helpers udev unicode"
# Most lib deps here are related to programs rather than our libs,
# so we rarely need to specify ${MULTILIB_USEDEP}.
RDEPEND="
virtual/libcrypt:=
audit? ( >=sys-process/audit-2.6:= )
caps? ( sys-libs/libcap-ng )
cramfs? ( sys-libs/zlib:= )
cryptsetup? ( >=sys-fs/cryptsetup-2.1.0 )
hardlink? ( dev-libs/libpcre2:= )
ncurses? (
sys-libs/ncurses:=[unicode(+)?]
magic? ( sys-apps/file:0= )
)
nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? ( ${PYTHON_DEPS} )
readline? ( sys-libs/readline:0= )
rtas? ( sys-libs/librtas )
selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
slang? ( sys-libs/slang )
!build? (
systemd? ( sys-apps/systemd )
udev? ( virtual/libudev:= )
)
"
BDEPEND="
virtual/pkgconfig
nls? (
app-text/po4a
sys-devel/gettext
)
test? ( app-alternatives/bc )
"
DEPEND="
${RDEPEND}
virtual/os-headers
acct-group/root
"
RDEPEND+="
hardlink? ( !app-arch/hardlink )
logger? ( !>=app-admin/sysklogd-2.0[logger] )
kill? (
!sys-apps/coreutils[kill]
!sys-process/procps[kill]
)
su? (
!<sys-apps/shadow-4.7-r2
!>=sys-apps/shadow-4.7-r2[su]
)
!net-wireless/rfkill
"
if [[ ${PV} == 9999 ]] ; then
# Required for man-page generation
BDEPEND+=" dev-ruby/asciidoctor"
else
BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-karelzak-20230517 )"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${PN}-2.39.2-fincore-test.patch
"${FILESDIR}"/${PN}-2.39.2-backport-1d4456d.patch
"${FILESDIR}"/${PN}-2.39.3-musl-1.2.5-basename.patch
"${FILESDIR}"/${PN}-2.39.3-libmount-Fix-export-of-mnt_context_is_lazy-and-mnt_c.patch
"${FILESDIR}"/${PN}-2.39.3-fix-use-after-free.patch
"${FILESDIR}"/${PN}-2.39.4-umount-readonly.patch
)
pkg_pretend() {
if use su && ! use suid ; then
elog "su will be installed as suid despite USE=-suid (bug #832092)"
elog "To use su without suid, see e.g. Portage's suidctl feature."
fi
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
return
fi
if use verify-sig ; then
mkdir "${T}"/verify-sig || die
pushd "${T}"/verify-sig &>/dev/null || die
# Upstream sign the decompressed .tar
# Let's do it separately in ${T} then cleanup to avoid external
# effects on normal unpack.
cp "${DISTDIR}"/${MY_P}.tar.xz . || die
xz -d ${MY_P}.tar.xz || die
verify-sig_verify_detached ${MY_P}.tar "${DISTDIR}"/${MY_P}.tar.sign
popd &>/dev/null || die
rm -r "${T}"/verify-sig || die
fi
default
}
src_prepare() {
default
if use test ; then
# Known-failing tests
# TODO: investigate these
local known_failing_tests=(
# Subtest 'options-maximum-size-8192' fails
hardlink/options
# Fails in sandbox
lsns/ioctl_ns
lsfd/mkfds-symlink
lsfd/mkfds-rw-character-device
# Fails with network-sandbox at least in nspawn
lsfd/option-inet
utmp/last-ipv6
# Flaky
rename/subdir
)
local known_failing_test
for known_failing_test in "${known_failing_tests[@]}" ; do
einfo "Removing known-failing test: ${known_failing_test}"
rm tests/ts/${known_failing_test} || die
done
fi
if [[ ${PV} == 9999 ]] ; then
po/update-potfiles
eautoreconf
else
elibtoolize
fi
}
python_configure() {
local myeconfargs=(
"${commonargs[@]}"
--disable-all-programs
--disable-bash-completion
--without-systemdsystemunitdir
--with-python
--enable-libblkid
--enable-libmount
--enable-pylibmount
)
mkdir "${BUILD_DIR}" || die
pushd "${BUILD_DIR}" >/dev/null || die
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
popd >/dev/null || die
}
multilib_src_configure() {
# The scanf test in a run-time test which fails while cross-compiling.
# Blindly assume a POSIX setup since we require libmount, and libmount
# itself fails when the scanf test fails. bug #531856
tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
# bug #485486
export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
# bug #545042
export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
# Undo bad ncurses handling by upstream. Fall back to pkg-config.
# bug #601530
export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
# Avoid automagic dependency on ppc*
export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
# configure args shared by python and non-python builds
local commonargs=(
--localstatedir="${EPREFIX}/var"
--runstatedir="${EPREFIX}/run"
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
# Temporary workaround until ~2.39.2. 2.39.x introduced a big rewrite.
# https://github.com/util-linux/util-linux/issues/2287#issuecomment-1576640373
--disable-libmount-mountfd-support
)
local myeconfargs=(
"${commonargs[@]}"
--with-bashcompletiondir="$(get_bashcompdir)"
--without-python
$(multilib_native_use_enable suid makeinstall-chown)
$(multilib_native_use_enable suid makeinstall-setuid)
$(multilib_native_use_with readline)
$(multilib_native_use_with slang)
$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
$(multilib_native_use_with audit)
$(tc-has-tls || echo --disable-tls)
$(use_enable nls)
$(use_enable nls poman)
$(use_enable unicode widechar)
$(use_enable static-libs static)
$(use_with ncurses tinfo)
$(use_with selinux)
# TODO: Wire this up (bug #931118)
--without-econf
)
if use build ; then
myeconfargs+=(
--without-systemd
--without-udev
)
else
myeconfargs+=(
$(multilib_native_use_with systemd)
$(multilib_native_use_with udev)
)
fi
if multilib_is_native_abi ; then
myeconfargs+=(
--disable-chfn-chsh
--disable-login
--disable-newgrp
--disable-nologin
--disable-pylibmount
--disable-raw
--disable-vipw
--enable-agetty
--enable-bash-completion
--enable-line
--enable-partx
--enable-rename
--enable-rfkill
--enable-schedutils
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
$(use_enable caps setpriv)
$(use_enable cramfs)
$(use_enable fdformat)
$(use_enable hardlink)
$(use_enable kill)
$(use_enable logger)
$(use_enable ncurses pg)
$(use_enable su)
$(use_enable tty-helpers mesg)
$(use_enable tty-helpers wall)
$(use_enable tty-helpers write)
$(use_with cryptsetup)
)
if [[ ${PV} == *9999 ]] ; then
myeconfargs+=( --enable-asciidoc )
else
# Upstream is shipping pre-generated man-pages for releases
myeconfargs+=( --disable-asciidoc )
fi
else
myeconfargs+=(
--disable-all-programs
--disable-asciidoc
--disable-bash-completion
--without-systemdsystemunitdir
--disable-poman
# build libraries
--enable-libuuid
--enable-libblkid
--enable-libsmartcols
--enable-libfdisk
--enable-libmount
)
fi
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_configure
fi
}
src_configure() {
append-lfs-flags
multilib-minimal_src_configure
}
python_compile() {
pushd "${BUILD_DIR}" >/dev/null || die
emake all
popd >/dev/null || die
}
multilib_src_compile() {
emake all
if multilib_is_native_abi && use python ; then
python_foreach_impl python_compile
fi
}
python_test() {
pushd "${BUILD_DIR}" >/dev/null || die
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
popd >/dev/null || die
}
multilib_src_test() {
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_test
fi
}
python_install() {
pushd "${BUILD_DIR}" >/dev/null || die
emake DESTDIR="${D}" install
python_optimize
popd >/dev/null || die
}
multilib_src_install() {
if multilib_is_native_abi && use python ; then
python_foreach_impl python_install
fi
# This needs to be called AFTER python_install call, bug #689190
emake DESTDIR="${D}" install
}
multilib_src_install_all() {
dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
dosym hexdump /usr/bin/hd
newman - hd.1 <<< '.so man1/hexdump.1'
# e2fsprogs-libs didn't install .la files, and .pc work fine
find "${ED}" -name "*.la" -delete || die
if use pam ; then
# See https://github.com/util-linux/util-linux/blob/master/Documentation/PAM-configuration.txt
newpamd "${FILESDIR}/runuser.pamd" runuser
newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
newpamd "${FILESDIR}/su-l.pamd" su-l
fi
if use su && ! use suid ; then
# Always force suid su, even when USE=-suid, as su is useless
# for the overwhelming-majority case without suid.
# Users who wish to truly have a no-suid su can strip it out
# via e.g. Portage's suidctl or some other hook.
# See bug #832092
fperms u+s /bin/su
fi
# Note:
# Bash completion for "runuser" command is provided by same file which
# would also provide bash completion for "su" command. However, we don't
# use "su" command from this package.
# This triggers a known QA warning which we ignore for now to magically
# keep bash completion for "su" command which shadow package does not
# provide.
local ver=$(tools/git-version-gen .tarballversion)
local major=$(ver_cut 1 ${ver})
local minor=$(ver_cut 2 ${ver})
local release=$(ver_cut 3 ${ver})
export QA_PKGCONFIG_VERSION="${major}.${minor}.${release:-0}"
}
pkg_postinst() {
if ! use tty-helpers ; then
elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
fi
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "The agetty util now clears the terminal by default. You"
elog "might want to add --noclear to your /etc/inittab lines."
fi
}

View File

@ -1,428 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
TMPFILES_OPTIONAL=1
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
pam python-r1 multilib-minimal multiprocessing systemd tmpfiles
MY_PV="${PV/_/-}"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Various useful Linux utilities"
HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/util-linux/util-linux"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
inherit autotools git-r3
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/karelzak.asc
inherit verify-sig
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos"
fi
SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
SRC_URI+=" verify-sig? ( https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.sign )"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain"
SLOT="0"
IUSE="audit build caps +cramfs cryptsetup fdformat +hardlink kill +logger magic ncurses nls pam python +readline rtas selinux slang static-libs +su +suid systemd test tty-helpers udev unicode uuidd"
# Most lib deps here are related to programs rather than our libs,
# so we rarely need to specify ${MULTILIB_USEDEP}.
RDEPEND="
virtual/libcrypt:=
audit? ( >=sys-process/audit-2.6:= )
caps? ( sys-libs/libcap-ng )
cramfs? ( sys-libs/zlib:= )
cryptsetup? ( >=sys-fs/cryptsetup-2.1.0 )
hardlink? ( dev-libs/libpcre2:= )
ncurses? (
sys-libs/ncurses:=[unicode(+)?]
magic? ( sys-apps/file:0= )
)
nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? ( ${PYTHON_DEPS} )
readline? ( sys-libs/readline:0= )
rtas? ( sys-libs/librtas )
selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
slang? ( sys-libs/slang )
!build? (
systemd? ( sys-apps/systemd )
udev? ( virtual/libudev:= )
)
"
BDEPEND="
virtual/pkgconfig
nls? (
app-text/po4a
sys-devel/gettext
)
test? ( app-alternatives/bc )
"
DEPEND="
${RDEPEND}
virtual/os-headers
acct-group/root
"
RDEPEND+="
hardlink? ( !app-arch/hardlink )
logger? ( !>=app-admin/sysklogd-2.0[logger] )
kill? (
!sys-apps/coreutils[kill]
!sys-process/procps[kill]
)
su? (
!<sys-apps/shadow-4.7-r2
!>=sys-apps/shadow-4.7-r2[su]
)
uuidd? (
acct-user/uuidd
systemd? ( virtual/tmpfiles )
)
!net-wireless/rfkill
"
if [[ ${PV} == 9999 ]] ; then
# Required for man-page generation
BDEPEND+=" dev-ruby/asciidoctor"
else
BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-karelzak-20230517 )"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
RESTRICT="!test? ( test )"
pkg_pretend() {
if use su && ! use suid ; then
elog "su will be installed as suid despite USE=-suid (bug #832092)"
elog "To use su without suid, see e.g. Portage's suidctl feature."
fi
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
return
fi
# Upstream sign the decompressed .tar
if use verify-sig; then
einfo "Unpacking ${MY_P}.tar.xz ..."
verify-sig_verify_detached - "${DISTDIR}"/${MY_P}.tar.sign \
< <(xz -cd "${DISTDIR}"/${MY_P}.tar.xz | tee >(tar -xf -))
assert "Unpack failed"
else
default
fi
}
src_prepare() {
default
if use test ; then
# Known-failing tests
local known_failing_tests=(
# Subtest 'options-maximum-size-8192' fails
hardlink/options
# Fails in sandbox
# re ioctl_ns: https://github.com/util-linux/util-linux/issues/2967
lsns/ioctl_ns
lsfd/mkfds-inotify
lsfd/mkfds-symlink
lsfd/mkfds-rw-character-device
# Fails with network-sandbox at least in nspawn
lsfd/option-inet
utmp/last-ipv6
# Flaky
rename/subdir
# Permission issues on /dev/random
lsfd/mkfds-eventpoll
lsfd/column-xmode
)
local known_failing_test
for known_failing_test in "${known_failing_tests[@]}" ; do
einfo "Removing known-failing test: ${known_failing_test}"
rm tests/ts/${known_failing_test} || die
done
fi
if [[ ${PV} == 9999 ]] ; then
po/update-potfiles
eautoreconf
else
elibtoolize
fi
}
python_configure() {
local myeconfargs=(
"${commonargs[@]}"
--disable-all-programs
--disable-bash-completion
--without-systemdsystemunitdir
--with-python
--enable-libblkid
--enable-libmount
--enable-pylibmount
)
mkdir "${BUILD_DIR}" || die
pushd "${BUILD_DIR}" >/dev/null || die
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
popd >/dev/null || die
}
multilib_src_configure() {
# The scanf test in a run-time test which fails while cross-compiling.
# Blindly assume a POSIX setup since we require libmount, and libmount
# itself fails when the scanf test fails. bug #531856
tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
# bug #485486
export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
# bug #545042
export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
# Undo bad ncurses handling by upstream. Fall back to pkg-config.
# bug #601530
export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
# Avoid automagic dependency on ppc*
export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
# configure args shared by python and non-python builds
local commonargs=(
--localstatedir="${EPREFIX}/var"
--runstatedir="${EPREFIX}/run"
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
)
local myeconfargs=(
"${commonargs[@]}"
--with-bashcompletiondir="$(get_bashcompdir)"
--without-python
$(multilib_native_use_enable suid makeinstall-chown)
$(multilib_native_use_enable suid makeinstall-setuid)
$(multilib_native_use_with readline)
$(multilib_native_use_with slang)
$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
$(multilib_native_use_with audit)
$(tc-has-tls || echo --disable-tls)
$(use_enable nls)
$(use_enable nls poman)
$(use_enable unicode widechar)
$(use_enable static-libs static)
$(use_with ncurses tinfo)
$(use_with selinux)
$(multilib_native_use_enable uuidd)
# TODO: Wire this up (bug #931118)
--without-econf
# TODO: Wire this up (bug #931297)
# TODO: investigate build failure w/ 2.40.1_rc1
--disable-liblastlog2
--disable-pam-lastlog2
)
if use build ; then
myeconfargs+=(
--without-systemd
--without-udev
)
else
myeconfargs+=(
$(multilib_native_use_with systemd)
$(multilib_native_use_with udev)
)
fi
if multilib_is_native_abi ; then
myeconfargs+=(
--disable-chfn-chsh
--disable-login
--disable-newgrp
--disable-nologin
--disable-pylibmount
--disable-raw
--disable-vipw
--enable-agetty
--enable-bash-completion
--enable-line
--enable-partx
--enable-rename
--enable-rfkill
--enable-schedutils
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
--with-tmpfilesdir="${EPREFIX}"/usr/lib/tmpfiles.d
$(use_enable caps setpriv)
$(use_enable cramfs)
$(use_enable fdformat)
$(use_enable hardlink)
$(use_enable kill)
$(use_enable logger)
$(use_enable ncurses pg)
$(use_enable su)
$(use_enable tty-helpers mesg)
$(use_enable tty-helpers wall)
$(use_enable tty-helpers write)
$(use_with cryptsetup)
)
if [[ ${PV} == *9999 ]] ; then
myeconfargs+=( --enable-asciidoc )
else
# Upstream is shipping pre-generated man-pages for releases
myeconfargs+=( --disable-asciidoc )
fi
else
myeconfargs+=(
--disable-all-programs
--disable-asciidoc
--disable-bash-completion
--without-systemdsystemunitdir
--disable-poman
# build libraries
--enable-libuuid
--enable-libblkid
--enable-libsmartcols
--enable-libfdisk
--enable-libmount
# Support uuidd for non-native libuuid
$(use_enable uuidd libuuid-force-uuidd)
)
fi
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_configure
fi
}
src_configure() {
append-lfs-flags
multilib-minimal_src_configure
}
python_compile() {
pushd "${BUILD_DIR}" >/dev/null || die
emake all
popd >/dev/null || die
}
multilib_src_compile() {
emake all
if multilib_is_native_abi && use python ; then
python_foreach_impl python_compile
fi
}
python_test() {
pushd "${BUILD_DIR}" >/dev/null || die
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
popd >/dev/null || die
}
multilib_src_test() {
emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
if multilib_is_native_abi && use python ; then
python_foreach_impl python_test
fi
}
python_install() {
pushd "${BUILD_DIR}" >/dev/null || die
emake DESTDIR="${D}" install
python_optimize
popd >/dev/null || die
}
multilib_src_install() {
if multilib_is_native_abi && use python ; then
python_foreach_impl python_install
fi
# This needs to be called AFTER python_install call, bug #689190
# XXX: -j1 as temporary workaround for bug #931301
emake DESTDIR="${D}" install -j1
}
multilib_src_install_all() {
dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
dosym hexdump /usr/bin/hd
newman - hd.1 <<< '.so man1/hexdump.1'
# e2fsprogs-libs didn't install .la files, and .pc work fine
find "${ED}" -name "*.la" -delete || die
if use pam ; then
# See https://github.com/util-linux/util-linux/blob/master/Documentation/PAM-configuration.txt
newpamd "${FILESDIR}/runuser.pamd" runuser
newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
newpamd "${FILESDIR}/su-l.pamd" su-l
fi
if use su && ! use suid ; then
# Always force suid su, even when USE=-suid, as su is useless
# for the overwhelming-majority case without suid.
# Users who wish to truly have a no-suid su can strip it out
# via e.g. Portage's suidctl or some other hook.
# See bug #832092
fperms u+s /bin/su
fi
if use uuidd; then
newinitd "${FILESDIR}/uuidd.initd" uuidd
fi
# Note:
# Bash completion for "runuser" command is provided by same file which
# would also provide bash completion for "su" command. However, we don't
# use "su" command from this package.
# This triggers a known QA warning which we ignore for now to magically
# keep bash completion for "su" command which shadow package does not
# provide.
local ver=$(tools/git-version-gen .tarballversion)
local major=$(ver_cut 1 ${ver})
local minor=$(ver_cut 2 ${ver})
local release=$(ver_cut 3 ${ver})
export QA_PKGCONFIG_VERSION="${major}.${minor}.${release:-0}"
}
pkg_postinst() {
if ! use tty-helpers ; then
elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
fi
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "The agetty util now clears the terminal by default. You"
elog "might want to add --noclear to your /etc/inittab lines."
fi
if use systemd && use uuidd; then
tmpfiles_process uuidd-tmpfiles.conf
fi
}

View File

@ -3,7 +3,7 @@
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
PYTHON_COMPAT=( python3_{10..13} )
TMPFILES_OPTIONAL=1
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
@ -23,7 +23,7 @@ else
inherit verify-sig
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos"
fi
SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"

View File

@ -3,7 +3,7 @@
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
PYTHON_COMPAT=( python3_{10..13} )
TMPFILES_OPTIONAL=1
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \