aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Williams <jordan@jwillikers.com>2024-04-05 07:49:17 -0700
committerJordan Williams <jordan@jwillikers.com>2024-04-05 08:56:24 -0700
commitb6799ccbc08aea69a26cdaa97ab436bfae2ae27f (patch)
tree4d54962c98e9ad6f845677eef59442cfa18620ca
parenta764efb5fb14b9a66bff8807c04ddcebc51939ea (diff)
downloadutil-linux-b6799ccbc08aea69a26cdaa97ab436bfae2ae27f.tar.gz
meson: Only build libmount when required
It is not currently possible to build any part of util-linux without building libmount when using Meson. The libuuid library is commonly used on macOS, where it is not possible to build libmount. To address this, this PR makes it possible to build without libmount and libblkid. Options have been added to allow toggling whether to build targets that require libmount. This makes it possible to fully disable building libmount. The python object had to be defined outside of the meson.build file in libmount/python since this may no longer be included. The python object is used for tests. Signed-off-by: Jordan Williams <jordan@jwillikers.com>
-rw-r--r--libblkid/meson.build19
-rw-r--r--libmount/meson.build20
-rw-r--r--libmount/python/meson.build6
-rw-r--r--meson.build55
-rw-r--r--meson_options.txt14
5 files changed, 75 insertions, 39 deletions
diff --git a/libblkid/meson.build b/libblkid/meson.build
index b2161c6214..8d1d880aa1 100644
--- a/libblkid/meson.build
+++ b/libblkid/meson.build
@@ -1,4 +1,9 @@
dir_libblkid = include_directories('.', 'src')
+if not build_libblkid
+ blkid_dep = disabler()
+ blkid_static_dep = disabler()
+ subdir_done()
+endif
defs = configuration_data()
defs.set('LIBBLKID_DATE', libblkid_date)
@@ -147,12 +152,10 @@ blkid_dep = declare_dependency(link_with: lib_blkid, include_directories: '.')
lib_blkid_static = lib_blkid.get_static_lib()
blkid_static_dep = declare_dependency(link_with: lib_blkid_static, include_directories: '.')
-if build_libblkid
- pkgconfig.generate(lib_blkid,
- description : 'Block device id library',
- subdirs : 'blkid',
- version : pc_version)
- if meson.version().version_compare('>=0.54.0')
- meson.override_dependency('blkid', blkid_dep)
- endif
+pkgconfig.generate(lib_blkid,
+ description : 'Block device id library',
+ subdirs : 'blkid',
+ version : pc_version)
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('blkid', blkid_dep)
endif
diff --git a/libmount/meson.build b/libmount/meson.build
index 2534191faf..6b16aab94d 100644
--- a/libmount/meson.build
+++ b/libmount/meson.build
@@ -1,3 +1,9 @@
+if not build_libmount
+ mount_dep = disabler()
+ mount_static_dep = disabler()
+ subdir_done()
+endif
+
dir_libmount = include_directories('.', 'src')
defs = configuration_data()
@@ -99,14 +105,12 @@ lib_mount = library(
install : build_libmount)
mount_dep = declare_dependency(link_with: lib_mount, include_directories: '.')
-if build_libmount
- pkgconfig.generate(lib_mount,
- description : 'mount library',
- subdirs : 'libmount',
- version : pc_version)
- if meson.version().version_compare('>=0.54.0')
- meson.override_dependency('mount', mount_dep)
- endif
+pkgconfig.generate(lib_mount,
+ description : 'mount library',
+ subdirs : 'libmount',
+ version : pc_version)
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('mount', mount_dep)
endif
libmount_tests = [
diff --git a/libmount/python/meson.build b/libmount/python/meson.build
index 702ca8f378..0957bca06b 100644
--- a/libmount/python/meson.build
+++ b/libmount/python/meson.build
@@ -1,9 +1,3 @@
-python_module = import('python')
-
-python = python_module.find_installation(
- get_option('python'),
- required : get_option('build-python'),
- disabler : true)
build_python = python.found()
pylibmount_sources = '''
diff --git a/meson.build b/meson.build
index 6c45947308..0095ad6f7c 100644
--- a/meson.build
+++ b/meson.build
@@ -78,7 +78,7 @@ conf.set_quoted('ADJTIME_PATH', '/etc/adjtime') # yes, both are used :(
conf.set_quoted('_PATH_VENDORDIR', vendordir)
conf.set('USE_VENDORDIR', vendordir == '' ? false : 1)
-build_libblkid = not get_option('build-libblkid').disabled()
+build_libblkid = not get_option('build-libblkid').require(get_option('build-libmount').allowed()).disabled()
conf.set('HAVE_LIBBLKID', build_libblkid ? 1 : false)
summary('libblkid', build_libblkid ? 'enabled' : 'disabled', section : 'components')
@@ -101,7 +101,8 @@ conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false)
have_struct_statx = cc.sizeof('struct statx', prefix : '#include <sys/stat.h>') > 0
conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false)
-build_libmount = not get_option('build-libmount').disabled()
+build_libmount = get_option('build-libmount').require(get_option('build-libblkid').allowed()).allowed()
+
conf.set('HAVE_LIBMOUNT', build_libmount ? 1 : false)
conf.set('USE_LIBMOUNT_SUPPORT_NAMESPACES', 1)
conf.set('USE_LIBMOUNT_MOUNTFD_SUPPORT', have_mountfd_api ? 1 : false)
@@ -111,7 +112,7 @@ build_libsmartcols = not get_option('build-libsmartcols').disabled()
conf.set('HAVE_LIBSMARTCOLS', build_libsmartcols ? 1 : false)
summary('libsmartcols', build_libsmartcols ? 'enabled' : 'disabled', section : 'components')
-build_libfdisk = not get_option('build-libfdisk').disabled()
+build_libfdisk = not get_option('build-libfdisk').require(get_option('build-libblkid').allowed()).disabled()
conf.set('HAVE_LIBFDISK', build_libfdisk ? 1 : false)
summary('libfdisk', build_libfdisk ? 'enabled' : 'disabled', section : 'components')
@@ -905,6 +906,12 @@ bison_gen = generator(
output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
+python_module = import('python')
+python = python_module.find_installation(
+ get_option('python'),
+ required : true,
+ disabler : true)
+
meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
@@ -1497,6 +1504,7 @@ if opt and not is_disabler(exe)
bashcompletions += ['tunelp']
endif
+opt = not get_option('build-fstrim').disabled()
exe = executable(
'fstrim',
fstrim_sources,
@@ -1504,8 +1512,9 @@ exe = executable(
link_with : [lib_common],
dependencies : [mount_dep],
install_dir : sbindir,
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['sys-utils/fstrim.8.adoc']
bashcompletions += ['fstrim']
@@ -1724,6 +1733,7 @@ if not is_disabler(exe)
bashcompletions += ['prlimit']
endif
+opt = not get_option('build-lsns').disabled()
exe = executable(
'lsns',
lsns_sources,
@@ -1732,8 +1742,9 @@ exe = executable(
lib_smartcols],
dependencies : [mount_dep],
install_dir : usrbin_exec_dir,
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['sys-utils/lsns.8.adoc']
bashcompletions += ['lsns']
@@ -1798,6 +1809,7 @@ endif
# setuid?
+opt = not get_option('build-swapon').disabled()
exe = executable(
'swapon',
swapon_sources,
@@ -1806,13 +1818,15 @@ exe = executable(
lib_smartcols],
dependencies : [blkid_dep, mount_dep],
install_dir : sbindir,
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['sys-utils/swapon.8.adoc']
bashcompletions += ['swapon']
endif
+opt = not get_option('build-swapoff').disabled()
exe = executable(
'swapoff',
swapoff_sources,
@@ -1820,8 +1834,9 @@ exe = executable(
link_with : [lib_common],
dependencies : [blkid_dep, mount_dep],
install_dir : sbindir,
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manlinks += {'swapoff.8': 'swapon.8'}
bashcompletions += ['swapoff']
@@ -2719,6 +2734,7 @@ exes += exe
manadocs += ['misc-utils/whereis.1.adoc']
bashcompletions += ['whereis']
+opt = not get_option('build-lslocks').disabled()
exe = executable(
'lslocks',
lslocks_sources,
@@ -2727,13 +2743,15 @@ exe = executable(
lib_smartcols],
dependencies : [mount_dep],
install_dir : usrbin_exec_dir,
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['misc-utils/lslocks.8.adoc']
bashcompletions += ['lslocks']
endif
+opt = not get_option('build-lsblk').disabled()
exe = executable(
'lsblk',
lsblk_sources,
@@ -2742,8 +2760,9 @@ exe = executable(
lib_tcolors,
lib_smartcols],
dependencies : [blkid_dep, lib_udev, mount_dep],
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['misc-utils/lsblk.8.adoc']
bashcompletions += ['lsblk']
@@ -2932,6 +2951,7 @@ if not is_disabler(exe)
bashcompletions += ['wipefs']
endif
+opt = not get_option('build-findmnt').disabled()
exe = executable(
'findmnt',
findmnt_sources,
@@ -2939,8 +2959,9 @@ exe = executable(
link_with : [lib_common,
lib_smartcols],
dependencies : [blkid_dep, lib_udev, mount_dep],
- install : true)
-if not is_disabler(exe)
+ install : opt,
+ build_by_default : opt)
+if opt and not is_disabler(exe)
exes += exe
manadocs += ['misc-utils/findmnt.8.adoc']
bashcompletions += ['findmnt']
diff --git a/meson_options.txt b/meson_options.txt
index 1bc0bc2ecf..95cfb820da 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -53,10 +53,16 @@ option('build-fdisks', type : 'feature',
description : 'build fdisk(8), sfdisk(8) and cfdisk(8)')
option('build-mount', type : 'feature',
description : 'build mount(8) and umount(8)')
+option('build-swapon', type : 'feature',
+ description : 'build swapon')
+option('build-swapoff', type : 'feature',
+ description : 'build swapoff')
option('build-losetup', type : 'feature',
description : 'build losetup')
option('build-zramctl', type : 'feature',
description : 'build zramctl')
+option('build-lsns', type : 'feature',
+ description : 'build lsns')
option('build-fsck', type : 'feature',
description : 'build fsck')
option('build-partx', type : 'feature',
@@ -101,6 +107,12 @@ option('build-cal', type : 'feature',
description : 'build cal')
option('build-logger', type : 'feature',
description : 'build logger')
+option('build-lsblk', type : 'feature',
+ description : 'build lsblk')
+option('build-lslocks', type : 'feature',
+ description : 'build lslocks')
+option('build-findmnt', type : 'feature',
+ description : 'build findmnt')
option('build-lsfd', type : 'feature',
description : 'build lsfd')
option('build-switch_root', type : 'feature',
@@ -123,6 +135,8 @@ option('build-rfkill', type : 'feature',
description : 'build rfkill')
option('build-tunelp', type : 'feature',
description : 'build tunelp')
+option('build-fstrim', type : 'feature',
+ description : 'build fstrim')
option('build-kill', type : 'feature',
description : 'build kill')
option('build-last', type : 'feature',