Skip to content

Commit

Permalink
util-linux: add package
Browse files Browse the repository at this point in the history
  • Loading branch information
coolsnowwolf committed Jun 27, 2024
1 parent bb2e5d5 commit c2658a5
Show file tree
Hide file tree
Showing 13 changed files with 1,187 additions and 0 deletions.
918 changes: 918 additions & 0 deletions package/utils/util-linux/Makefile

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions package/utils/util-linux/patches/030-meson-don-t-use-run.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From e25db9169450d3d5fb43656a2eae5c08999310f4 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 16:56:54 -0700
Subject: [PATCH 2/7] meson: don't use run

Fixes cross compilation. run is not needed anyway.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

--- a/meson.build
+++ b/meson.build
@@ -577,8 +577,7 @@ int main(void) {
return tzname ? 0 : 1;
}
'''.format(have ? 1 : 0)
-result = cc.run(code, name : 'using tzname[]')
-have = result.compiled() and result.returncode() == 0
+have = cc.compiles(code, name : 'using tzname[]')
conf.set('HAVE_TZNAME', have ? 1 : false)

socket_libs = []
@@ -641,8 +640,7 @@ int main(void) {
return (*__progname != 0);
}
'''
-result = cc.run(code, name : 'using __progname')
-have = result.compiled() and result.returncode() == 0
+have = cc.compiles(code, name : 'using __progname')
conf.set('HAVE___PROGNAME', have ? 1 : false)

build_plymouth_support = get_option('build-plymouth-support')
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
From 4194bb5b35e9b5f3296bf17b7cabcc5cb1632ba3 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 16:55:15 -0700
Subject: [PATCH 3/7] meson: fix cpu_set_t test

_GNU_SOURCE is needed here.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -379,7 +379,7 @@ endforeach
have = cc.has_header('sched.h')
conf.set10('HAVE_DECL_CPU_ALLOC', have)
# We get -1 if the size cannot be determined
-have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#include <sched.h>') > 0
+have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)

have = cc.has_header_symbol('stdlib.h', 'environ')
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
From 1e9e2b9fe365cc4a0025d44dc0a9c54bfffe9058 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 18:16:17 -0700
Subject: [PATCH 4/7] meson: fix environ search

musl has it defined in unistd.h and hidden behind _GNU_SOURCE.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -382,7 +382,7 @@ conf.set10('HAVE_DECL_CPU_ALLOC', have)
have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)

-have = cc.has_header_symbol('stdlib.h', 'environ')
+have = cc.has_header_symbol('unistd.h', 'environ', prefix : '#define _GNU_SOURCE')
conf.set10('HAVE_ENVIRON_DECL', have)

have = cc.has_header_symbol('signal.h', 'sighandler_t')
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
From 5d7557eb3827664b2b78145373907f2a6994bdf9 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 18:17:52 -0700
Subject: [PATCH 5/7] meson: add _GNU_SOURCE for sighandler_t

musl requires it.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -385,7 +385,7 @@ conf.set('HAVE_CPU_SET_T', have_cpu_set_
have = cc.has_header_symbol('unistd.h', 'environ', prefix : '#define _GNU_SOURCE')
conf.set10('HAVE_ENVIRON_DECL', have)

-have = cc.has_header_symbol('signal.h', 'sighandler_t')
+have = cc.has_header_symbol('signal.h', 'sighandler_t', prefix : '#define _GNU_SOURCE')
conf.set('HAVE_SIGHANDLER_T', have ? 1 : false)

have = cc.has_header_symbol('string.h', 'strsignal')
24 changes: 24 additions & 0 deletions package/utils/util-linux/patches/070-meson-fix-isnan-check.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
From 777652585924034deeba98ae3192f26bc32bb661 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 18:19:53 -0700
Subject: [PATCH 6/7] meson: fix isnan check

musl only has isnan as a macro, not as a function. Handle the former
case.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -622,7 +622,7 @@ rtas_libs = cc.find_library('rtas', requ
conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false)

math_libs = []
-if not cc.has_function('isnan')
+if not cc.has_header_symbol('math.h', 'isnan')
lib = cc.find_library('m', required : true)
if (cc.has_function('isnan', dependencies : lib) and
cc.has_function('__isnan', dependencies : lib))
23 changes: 23 additions & 0 deletions package/utils/util-linux/patches/080-meson-fix-tzname-check.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
From 9a6b2618b46a859388139d1eb18f876886786659 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Fri, 29 Apr 2022 19:00:53 -0700
Subject: [PATCH] meson: fix tzname check

tzname is not a type but a variable. sizeof only works on types.

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -565,7 +565,7 @@ have = cc.has_member('struct tm', 'tm_zo
prefix : '#include <time.h>')
conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false)

-have = cc.sizeof('tzname', prefix : '#include <time.h>') > 0
+have = cc.has_header_symbol('time.h', 'tzname')
conf.set('HAVE_DECL_TZNAME', have ? 1 : false)

code = '''
18 changes: 18 additions & 0 deletions package/utils/util-linux/patches/090-meson-libpam.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
--- a/meson.build
+++ b/meson.build
@@ -299,10 +299,14 @@ conf.set('HAVE_LIBUDEV', lib_udev.found(

lib_crypt = cc.find_library('crypt')

-lib_pam = cc.find_library('pam')
+req_libpam = not (get_option('build-login').disabled() or get_option('build-chfn-chsh').disabled()
+ or get_option('build-su').disabled() or get_option('build-runuser').disabled())
+lib_pam = cc.find_library('pam', required : req_libpam)
if lib_pam.found()
lib_pam_misc = cc.find_library('pam_misc')
lib_pam = [lib_pam, lib_pam_misc]
+else
+ lib_pam_misc = declare_dependency()
endif

lib_cryptsetup = dependency(
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
From cd23a4336f49ba6a12ade557a09589f2a7c966f4 Mon Sep 17 00:00:00 2001
From: Rosen Penev <[email protected]>
Date: Mon, 2 May 2022 16:18:33 -0700
Subject: [PATCH] meson: make libcap-ng dependent on setpriv

Signed-off-by: Rosen Penev <[email protected]>
---
meson.build | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--- a/meson.build
+++ b/meson.build
@@ -334,7 +334,8 @@ have = cc.has_function(
conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false)

lib_cap_ng = dependency(
- 'libcap-ng')
+ 'libcap-ng',
+ required : get_option('build-setpriv'))

lib_selinux = dependency(
'libselinux',
@@ -1754,7 +1755,7 @@ if opt and not is_disabler(exe)
exes += exe
endif

-opt = not get_option('build-setpriv').disabled()
+opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found()
exe = executable(
'setpriv',
setpriv_sources,
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
From e0c1a86bf88b568a7afe8ebaea1b9f84afb892c2 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <[email protected]>
Date: Wed, 4 May 2022 23:52:31 -0400
Subject: [PATCH] meson: get the project version from the version-gen script

This matches autotools and ensures that the version number is actually
reliable.
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('util-linux', 'c',
- version : '2.37',
+ version : run_command('tools/git-version-gen', check: true).stdout(),
license : 'GPLv2+')

pkgconfig = import('pkgconfig')
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
From dc307e1cbf73f6dbf72bb049c19d332774cdb4e7 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <[email protected]>
Date: Thu, 5 May 2022 00:16:15 -0400
Subject: [PATCH] meson: fix error in processing version for pc files

This awk command was copied verbatim from configure.ac, which included
non-awk syntax because configure.ac cannot contain [ literals.

Rewrite these autoconf quadrigraphs as their actual values, for meson.

Fixes always setting the micro version to "0".
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/meson.build
+++ b/meson.build
@@ -41,7 +41,7 @@ conf.set_quoted('PACKAGE_VERSION', meson

codes = [''' {print $1} ''',
''' {sub("-.*","",$2); print $2} ''',
- ''' {sub("-.*","",$3); print $3 ~ /^@<:@0-9@:>@+$/ ? $3 : 0} ''']
+ ''' {sub("-.*","",$3); print $3 ~ /^[0-9]+$/ ? $3 : 0} ''']
pc_version = []
foreach code : codes
res = run_command('bash', '-c',
10 changes: 10 additions & 0 deletions package/utils/util-linux/patches/200-meson-no-po.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/meson.build
+++ b/meson.build
@@ -774,7 +774,6 @@ subdir('disk-utils')
subdir('misc-utils')
subdir('text-utils')
subdir('term-utils')
-subdir('po')

includes = [dir_include,
dir_libblkid,
14 changes: 14 additions & 0 deletions package/utils/util-linux/patches/210-use-urandom.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--- a/lib/randutils.c
+++ b/lib/randutils.c
@@ -26,6 +26,11 @@
#define THREAD_LOCAL static
#endif

+/* force /dev/urandom to avoid hanging on early boot */
+#undef HAVE_GETRANDOM
+#undef SYS_getrandom
+#undef __NR_getrandom
+
#ifdef HAVE_GETRANDOM
# include <sys/random.h>
#elif defined (__linux__)

0 comments on commit c2658a5

Please sign in to comment.