diff options
author | Jordan Williams <jordan@jwillikers.com> | 2024-04-05 07:49:17 -0700 |
---|---|---|
committer | Jordan Williams <jordan@jwillikers.com> | 2024-04-05 08:56:24 -0700 |
commit | b6799ccbc08aea69a26cdaa97ab436bfae2ae27f (patch) | |
tree | 4d54962c98e9ad6f845677eef59442cfa18620ca | |
parent | a764efb5fb14b9a66bff8807c04ddcebc51939ea (diff) | |
download | util-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.build | 19 | ||||
-rw-r--r-- | libmount/meson.build | 20 | ||||
-rw-r--r-- | libmount/python/meson.build | 6 | ||||
-rw-r--r-- | meson.build | 55 | ||||
-rw-r--r-- | meson_options.txt | 14 |
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', |