]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
meson: install manpages and bash completions
authorThomas Weißschuh <thomas@t-8ch.de>
Thu, 30 Dec 2021 15:35:03 +0000 (16:35 +0100)
committerThomas Weißschuh <thomas@t-8ch.de>
Thu, 30 Dec 2021 21:53:08 +0000 (22:53 +0100)
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
meson.build
tools/meson-make-manpage-stub.sh [new file with mode: 0644]

index 13475a554a94b4c992d1876b9ea425b918d8f07c..dced67076d65132bce63c679940fe6e1edf52164 100644 (file)
@@ -26,6 +26,7 @@ usrbin_exec_dir = join_paths(execprefixdir, 'bin')
 usrsbin_exec_dir = join_paths(execprefixdir, 'sbin')
 sysconfdir = '/etc'
 localstatedir = '/var'
+bash_completion = dependency('bash-completion', required : get_option('build-bash-completion'))
 
 vendordir = get_option('vendordir')
 
@@ -742,6 +743,7 @@ bison_gen = generator(
 
 
 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'
 
 config_h = configure_file(
   output : 'config.h',
@@ -750,7 +752,8 @@ config_h = configure_file(
 add_project_arguments('-include', 'config.h', language : 'c')
 
 manadocs = []
-manlinks = []
+manlinks = {}
+bashcompletions = []
 
 subdir('include')
 subdir('lib')
@@ -788,6 +791,7 @@ exe = executable(
   install_dir : usrbin_exec_dir,
   install : opt,
   build_by_default : opt)
+
 exe2 = executable(
   'chsh',
   'login-utils/chsh.c',
@@ -800,6 +804,8 @@ exe2 = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += [exe, exe2]
+  manadocs += ['login-utils/chfn.1.adoc', 'login-utils/chsh.1.adoc']
+  bashcompletions += ['chfn', 'chsh']
 endif
 
 exe = executable(
@@ -838,6 +844,9 @@ if opt and not is_disabler(exe)
   meson.add_install_script(meson_make_symlink,
                            'last',
                            join_paths(usrbin_exec_dir, 'lastb'))
+  manadocs += ['login-utils/last.1.adoc']
+  manlinks += {'lastb.1': 'last.1'}
+  bashcompletions += ['last']
 endif
 
 opt = not get_option('build-nologin').disabled()
@@ -851,6 +860,7 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/nologin.8.adoc']
 endif
 
 opt = not get_option('build-utmpdump').disabled()
@@ -864,6 +874,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/utmpdump.1.adoc']
+  bashcompletions += ['utmpdump']
 endif
 
 opt = not get_option('build-su').disabled()
@@ -886,6 +898,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/su.1.adoc']
+  bashcompletions += ['su']
 endif
 
 opt = not get_option('build-newgrp').disabled()
@@ -899,6 +913,7 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/newgrp.1.adoc']
 endif
 
 opt = not get_option('build-lslogins').disabled()
@@ -917,6 +932,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/lslogins.1.adoc']
+  bashcompletions += ['lslogins']
 endif
 
 opt = not get_option('build-vipw').disabled()
@@ -935,6 +952,7 @@ if opt and not is_disabler(exe)
   meson.add_install_script(meson_make_symlink,
                            'vipw',
                            join_paths(usrbin_exec_dir, 'vigr'))
+  manadocs += ['login-utils/vipw.8.adoc']
 endif
 
 opt = not get_option('build-runuser').disabled()
@@ -958,6 +976,12 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['login-utils/runuser.1.adoc']
+  if bash_completion.found()
+    meson.add_install_script(meson_make_symlink,
+                             'su',
+                             join_paths(bash_completion.get_variable('completionsdir'), 'runuser'))
+endif
 endif
 
 ############################################################
@@ -970,6 +994,8 @@ exe = executable(
   install_dir : usrbin_exec_dir,
   install : true)
 exes += exe
+manadocs += ['text-utils/col.1.adoc']
+bashcompletions += ['col']
 
 exe = executable(
   'colcrt',
@@ -978,6 +1004,8 @@ exe = executable(
   install_dir : usrbin_exec_dir,
   install : true)
 exes += exe
+manadocs += ['text-utils/colcrt.1.adoc']
+bashcompletions += ['colcrt']
 
 exe = executable(
   'colrm',
@@ -987,6 +1015,8 @@ exe = executable(
   install_dir : usrbin_exec_dir,
   install : true)
 exes += exe
+manadocs += ['text-utils/colrm.1.adoc']
+bashcompletions += ['colrm']
 
 exe = executable(
   'rev',
@@ -995,6 +1025,8 @@ exe = executable(
   install_dir : usrbin_exec_dir,
   install : true)
 exes += exe
+manadocs += ['text-utils/rev.1.adoc']
+bashcompletions += ['rev']
 
 exe = executable(
   'column',
@@ -1006,6 +1038,8 @@ exe = executable(
   install : true)
 if not is_disabler(exe)
   exes += exe
+  manadocs += ['text-utils/column.1.adoc']
+  bashcompletions += ['column']
 endif
 
 opt = not get_option('build-line').disabled()
@@ -1018,6 +1052,7 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['text-utils/line.1.adoc']
 endif
 
 opt = not get_option('build-pg').disabled()
@@ -1033,6 +1068,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['text-utils/pg.1.adoc']
+  bashcompletions += ['pg']
 endif
 
 opt = not get_option('build-ul').disabled()
@@ -1047,6 +1084,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  manadocs += ['text-utils/ul.1.adoc']
+  bashcompletions += ['ul']
 endif
 
 opt = not get_option('build-more').disabled()
@@ -1073,6 +1112,8 @@ exe2 = executable(
 exes += exe
 if opt and not is_disabler(exe)
   exes += [exe, exe2]
+  manadocs += ['text-utils/more.1.adoc']
+  bashcompletions += ['more']
 endif
 
 exe = executable(
@@ -1086,6 +1127,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['text-utils/hexdump.1.adoc']
+  bashcompletions += ['hexdump']
 endif
 
 opt = not get_option('build-lsmem').disabled()
@@ -1101,6 +1143,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/lsmem.1.adoc']
+  bashcompletions += ['lsmem']
 endif
 
 opt = not get_option('build-chmem').disabled()
@@ -1115,6 +1158,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/chmem.8.adoc']
+  bashcompletions += ['chmem']
 endif
 
 exe = executable(
@@ -1136,6 +1180,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/ipcmk.1.adoc']
+bashcompletions += ['ipcmk']
 
 exe = executable(
   'ipcrm',
@@ -1146,6 +1191,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/ipcrm.1.adoc']
+bashcompletions += ['ipcrm']
 
 opt = not get_option('build-ipcs').disabled()
 exe = executable(
@@ -1159,6 +1205,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/ipcs.1.adoc']
+  bashcompletions += ['ipcs']
 endif
 
 opt = not get_option('build-rfkill').disabled()
@@ -1174,6 +1221,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/rfkill.8.adoc']
+  bashcompletions += ['rfkill']
 endif
 
 exe = executable(
@@ -1187,6 +1235,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/renice.1.adoc']
+  bashcompletions += ['renice']
 endif
 
 exe = executable(
@@ -1200,6 +1249,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/setsid.1.adoc']
+  bashcompletions += ['setsid']
 endif
 
 exe = executable(
@@ -1213,6 +1263,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/readprofile.8.adoc']
+  bashcompletions += ['readprofile']
 endif
 
 opt = not get_option('build-tunelp').disabled()
@@ -1227,6 +1278,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/tunelp.8.adoc']
+  bashcompletions += ['tunelp']
 endif
 
 exe = executable(
@@ -1240,6 +1292,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/fstrim.8.adoc']
+  bashcompletions += ['fstrim']
 endif  
 
 exe = executable(
@@ -1252,6 +1305,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/dmesg.1.adoc']
+  bashcompletions += ['dmesg']
 endif
 
 exe = executable(
@@ -1274,6 +1328,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/ctrlaltdel.8.adoc']
+bashcompletions += ['ctrlaltdel']
 
 exe = executable(
   'fsfreeze',
@@ -1283,6 +1338,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/fsfreeze.8.adoc']
+bashcompletions += ['fsfreeze']
 
 exe = executable(
   'blkdiscard',
@@ -1294,6 +1350,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/blkdiscard.8.adoc']
+bashcompletions += ['blkdiscard']
 
 exe = executable(
   'blkzone',
@@ -1304,6 +1361,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/blkzone.8.adoc']
+bashcompletions += ['blkzone']
 
 exe = executable(
   'ldattach',
@@ -1314,6 +1372,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/ldattach.8.adoc']
+bashcompletions += ['ldattach']
 
 exe = executable(
   'rtcwake',
@@ -1324,6 +1383,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/rtcwake.8.adoc']
+bashcompletions += ['rtcwake']
 
 exe = executable(
   'setarch',
@@ -1333,6 +1393,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/setarch.8.adoc']
+bashcompletions += ['setarch']
 
 setarch_links = ['uname26', 'linux32', 'linux64']
 setarch_links_arch = {
@@ -1351,6 +1412,7 @@ foreach link: setarch_links
   meson.add_install_script(meson_make_symlink,
                            'setarch',
                            join_paths(usrbin_exec_dir, link))
+  manlinks += {link + '.8': 'setarch.8'}
 endforeach
 
 opt = not get_option('build-eject').disabled()
@@ -1366,6 +1428,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exe = exe
   manadocs += ['sys-utils/eject.1.adoc']
+  bashcompletions += ['eject']
 endif
 
 opt = not get_option('build-losetup').disabled()
@@ -1381,6 +1444,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   manadocs += ['sys-utils/losetup.8.adoc']
   exes += exe
+  bashcompletions += ['losetup']
 endif
 
 opt = opt and 'losetup' in static_programs
@@ -1411,6 +1475,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/zramctl.8.adoc']
+  bashcompletions += ['zramctl']
 endif
 
 exe = executable(
@@ -1424,6 +1489,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/prlimit.1.adoc']
+  bashcompletions += ['prlimit']
 endif
 
 exe = executable(
@@ -1438,6 +1504,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/lsns.8.adoc']
+  bashcompletions += ['lsns']
 endif
 
 opt = not get_option('build-mount').disabled()
@@ -1464,6 +1531,7 @@ if opt and not is_disabler(exe)
   manadocs += ['sys-utils/fstab.5.adoc',
                    'sys-utils/mount.8.adoc',
                    'sys-utils/umount.8.adoc']
+  bashcompletions += ['mount', 'umount']
 endif
 
 opt2 = opt and 'mount' in static_programs
@@ -1510,6 +1578,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/swapon.8.adoc']
+  bashcompletions += ['swapon']
 endif
 
 exe = executable(
@@ -1523,7 +1592,8 @@ exe = executable(
   install : true)
 if not is_disabler(exe)
   exes += exe
-  manlinks += 'sys-utils/swapoff.8.adoc'
+  manlinks += {'swapoff.8': 'swapon.8'}
+  bashcompletions += ['swapoff']
 endif
 
 exe = executable(
@@ -1538,6 +1608,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/lscpu.1.adoc']
+  bashcompletions += ['lscpu']
 endif
 
 exe = executable(
@@ -1549,6 +1620,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/chcpu.8.adoc']
+bashcompletions += ['chcpu']
 
 exe = executable(
   'wdctl',
@@ -1560,6 +1632,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/wdctl.8.adoc']
+  bashcompletions += ['wdctl']
 endif
 
 opt = not get_option('build-mountpoint').disabled()
@@ -1573,6 +1646,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/mountpoint.1.adoc']
+  bashcompletions += ['mountpoint']
 endif
 
 opt = not get_option('build-fallocate').disabled()
@@ -1587,6 +1661,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/fallocate.1.adoc']
+  bashcompletions += ['fallocate']
 endif
 
 opt = not get_option('build-pivot_root').disabled()
@@ -1600,6 +1675,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/pivot_root.8.adoc']
+  bashcompletions += ['pivot_root']
 endif
 
 opt = not get_option('build-switch_root').disabled()
@@ -1630,6 +1706,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/unshare.1.adoc']
+  bashcompletions += ['unshare']
 endif
 
 opt = opt and 'unshare' in static_programs
@@ -1658,6 +1735,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/nsenter.1.adoc']
+  bashcompletions += ['nsenter']
 endif
 
 opt = opt and 'nsenter' in static_programs
@@ -1687,6 +1765,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/setpriv.1.adoc']
+  bashcompletions += ['setpriv']
 endif
 
 exe = executable(
@@ -1699,6 +1778,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['sys-utils/flock.1.adoc']
+bashcompletions += ['flock']
 
 opt = not get_option('build-lsirq').disabled()
 exe = executable(
@@ -1713,6 +1793,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/lsirq.1.adoc']
+  bashcompletions += ['lsirq']
 endif
 
 opt = not get_option('build-irqtop').disabled()
@@ -1730,6 +1811,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/irqtop.1.adoc']
+  bashcompletions += ['irqtop']
 endif
 
 opt = not get_option('build-ipcs').disabled()
@@ -1745,6 +1827,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['sys-utils/lsipc.1.adoc']
+  bashcompletions += ['lsipc']
 endif
 
 opt = build_hwclock
@@ -1760,7 +1843,8 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
-  manadocs += ['sys-utils/hwclock.8.adoc']
+  manadocs += ['sys-utils/hwclock.8.adoc', 'sys-utils/adjtime_config.5.adoc']
+  bashcompletions += ['hwclock']
 endif
 
 exe = executable(
@@ -1771,6 +1855,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['disk-utils/mkfs.8.adoc']
+bashcompletions += ['mkfs']
 
 opt = not get_option('build-bfs').disabled()
 exe = executable(
@@ -1784,6 +1869,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['disk-utils/mkfs.bfs.8.adoc']
+  bashcompletions += ['mkfs.bfs']
 endif
 
 exe = executable(
@@ -1795,6 +1881,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['disk-utils/isosize.8.adoc']
+bashcompletions += ['isosize']
 
 exe = executable(
   'mkswap',
@@ -1809,6 +1896,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['disk-utils/mkswap.8.adoc']
+  bashcompletions += ['mkswap']
 endif
 
 exe = executable(
@@ -1823,6 +1911,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['disk-utils/swaplabel.8.adoc']
+  bashcompletions += ['swaplabel']
 endif
 
 opt = not get_option('build-fsck').disabled()
@@ -1840,6 +1929,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['disk-utils/fsck.8.adoc']
+  bashcompletions += ['fsck']
 endif
 
 opt = not get_option('build-minix').disabled()
@@ -1869,6 +1959,7 @@ exe3 = executable(
 if opt and not is_disabler(exe)
   exes += [exe, exe2, exe3]
   manadocs += ['disk-utils/mkfs.minix.8.adoc','disk-utils/fsck.minix.8.adoc']
+  bashcompletions += ['mkfs.minix', 'fsck.minix']
 endif
 
 opt = not get_option('build-cramfs').disabled()
@@ -1893,6 +1984,7 @@ exe2 = executable(
 if not is_disabler(exe)
   exes += [exe, exe2]
   manadocs += ['disk-utils/mkfs.cramfs.8.adoc','disk-utils/fsck.cramfs.8.adoc']
+  bashcompletions += ['mkfs.cramfs', 'fsck.cramfs']
 endif
 
 opt = not get_option('build-raw').disabled()
@@ -1909,6 +2001,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['disk-utils/raw.8.adoc']
+  bashcompletions += ['raw']
 endif
 
 opt = not get_option('build-fdformat').disabled()
@@ -1933,6 +2026,7 @@ exe = executable(
   install_dir : sbindir,
   install : true)
 manadocs += ['disk-utils/blockdev.8.adoc']
+bashcompletions += ['blockdev']
 
 opt = not get_option('build-fdisks').disabled()
 if opt and not have_dirfd and not have_ddfd
@@ -1952,6 +2046,7 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  bashcompletions += ['fdisk']
 endif
 
 opt2 = opt and 'fdisk' in static_programs
@@ -1986,6 +2081,7 @@ exe = executable(
   build_by_default : opt)
 if opt and not is_disabler(exe)
   exes += exe
+  bashcompletions += ['sfdisk']
 endif
 
 opt2 = opt and 'sfdisk' in static_programs
@@ -2023,6 +2119,7 @@ if opt and not is_disabler(exe)
   manadocs += ['disk-utils/fdisk.8.adoc',
                    'disk-utils/sfdisk.8.adoc',
                    'disk-utils/cfdisk.8.adoc']
+  bashcompletions += ['cfdisk']
 endif
 
 opt = not get_option('build-partx').disabled()
@@ -2066,6 +2163,7 @@ if opt
                    'disk-utils/delpart.8.adoc',
                    'disk-utils/resizepart.8.adoc',
                    'disk-utils/partx.8.adoc']
+  bashcompletions += ['addpart', 'delpart', 'resizepart', 'partx']
 endif
 
 ############################################################
@@ -2083,6 +2181,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['term-utils/script.1.adoc']
+bashcompletions += ['script']
 
 exe = executable(
   'test_script',
@@ -2108,6 +2207,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['term-utils/scriptlive.1.adoc']
+bashcompletions += ['scriptlive']
 
 exe = executable(
   'scriptreplay',
@@ -2119,6 +2219,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['term-utils/scriptreplay.1.adoc']
+bashcompletions += ['scriptreplay']
 
 opt = not get_option('build-agetty').disabled()
 exe = executable(
@@ -2148,6 +2249,7 @@ exe = executable(
 if opt
   exes += exe
   manadocs += ['term-utils/setterm.1.adoc']
+  bashcompletions += ['setterm']
 endif
 
 opt = not get_option('build-mesg').disabled()
@@ -2162,6 +2264,7 @@ exe = executable(
 if opt
   exes += exe
   manadocs += ['term-utils/mesg.1.adoc']
+  bashcompletions += ['mesg']
 endif
 
 opt = not get_option('build-wall').disabled()
@@ -2176,6 +2279,7 @@ exe = executable(
 if opt
   exes += exe
   manadocs += ['term-utils/wall.1.adoc']
+  bashcompletions += ['wall']
 endif
 
 # chgrp tty $(DESTDIR)$(usrbin_execdir)/wall
@@ -2241,6 +2345,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/cal.1.adoc']
+bashcompletions += ['cal']
 
 opt = not get_option('build-logger').disabled()
 exe = executable(
@@ -2255,6 +2360,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/logger.1.adoc']
+  bashcompletions += ['logger']
 endif
 
 exe = executable(
@@ -2276,6 +2382,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/look.1.adoc']
+bashcompletions += ['look']
 
 exe = executable(
   'mcookie',
@@ -2286,6 +2393,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/mcookie.1.adoc']
+bashcompletions += ['mcookie']
 
 exe = executable(
   'namei',
@@ -2295,6 +2403,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/namei.1.adoc']
+bashcompletions += ['namei']
 
 exe = executable(
   'whereis',
@@ -2305,6 +2414,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/whereis.1.adoc']
+bashcompletions += ['whereis']
 
 exe = executable(
   'lslocks',
@@ -2318,6 +2428,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/lslocks.8.adoc']
+  bashcompletions += ['lslocks']
 endif
 
 exe = executable(
@@ -2333,6 +2444,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/lsblk.8.adoc']
+  bashcompletions += ['lsblk']
 endif
 
 exe = executable(
@@ -2358,6 +2470,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/uuidgen.1.adoc']
+  bashcompletions += ['uuidgen']
 endif
 
 exe = executable(
@@ -2372,6 +2485,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/uuidparse.1.adoc']
+  bashcompletions += ['uuidparse']
 endif
 
 opt = build_uuidd
@@ -2397,6 +2511,7 @@ exe2 = executable(
 if not is_disabler(exe)
   exes += [exe, exe2]
   manadocs += ['misc-utils/uuidd.8.adoc']
+  bashcompletions += ['uuidd']
 endif
 
 opt = build_libblkid
@@ -2412,6 +2527,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/blkid.8.adoc']
+  bashcompletions += ['blkid']
 endif
 
 opt = opt and 'blkid' in static_programs
@@ -2476,6 +2592,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/findfs.8.adoc']
+  bashcompletions += ['findfs']
 endif
 
 exe = executable(
@@ -2490,6 +2607,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/wipefs.8.adoc']
+  bashcompletions += ['wipefs']
 endif
 
 exe = executable(
@@ -2505,6 +2623,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/findmnt.8.adoc']
+  bashcompletions += ['findmnt']
 endif
 
 exe = executable(
@@ -2529,6 +2648,7 @@ exe = executable(
 if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/rename.1.adoc']
+  bashcompletions += ['rename']
 endif
 
 exe = executable(
@@ -2540,6 +2660,7 @@ exe = executable(
   install : true)
 exes += exe
 manadocs += ['misc-utils/getopt.1.adoc']
+bashcompletions += ['getopt']
 
 exe = executable(
   'fincore',
@@ -2552,6 +2673,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/fincore.1.adoc']
+  bashcompletions += ['fincore']
 endif
 
 exe = executable(
@@ -2564,6 +2686,7 @@ exe = executable(
 if not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/hardlink.1.adoc']
+  bashcompletions += ['hardlink']
 endif
 
 exe = executable(
@@ -2623,6 +2746,7 @@ if opt and not is_disabler(exe)
                'schedutils/ionice.1.adoc',
                'schedutils/taskset.1.adoc',
               'schedutils/uclampset.1.adoc']
+  bashcompletions += ['chrt', 'ionice', 'taskset', 'uclampset']
 endif
 
 ############################################################
@@ -3061,10 +3185,11 @@ if build_libuuid
     'libuuid/man/uuid_parse.3.adoc',
     'libuuid/man/uuid_time.3.adoc',
     'libuuid/man/uuid_unparse.3.adoc']
-  manlinks += [
-    'libuuid/man/uuid_generate_random.3',
-    'libuuid/man/uuid_generate_time.3',
-    'libuuid/man/uuid_generate_time_safe.3']
+  manlinks += {
+    'uuid_generate_random.3': 'uuid_generate.3',
+    'uuid_generate_time.3': 'uuid_generate.3',
+    'uuid_generate_time_safe.3': 'uuid_generate.3',
+  }
 endif
 
 asciidoctor = find_program('asciidoctor', required : false)
@@ -3081,7 +3206,9 @@ if asciidoctor.found()
       command : [ asciidoctor,
          '-b', 'manpage',
          '-a', 'VERSION=' + meson.project_version(),
+         '-a', 'release-version=' + meson.project_version(),
          '-a', 'ADJTIME_PATH=/etc/adjtime',
+         '-a', 'package-docdir=' + docdir,
          '--base-dir=' + meson.current_source_dir(),
           '--destination-dir=' + meson.current_build_dir(),
          '@INPUT@'],
@@ -3090,4 +3217,21 @@ if asciidoctor.found()
       install: true,
       install_dir : mandirn)
   endforeach
+
+  foreach link_name, target : manlinks
+    link_section = link_name.split('.')[-1]
+    target_section = target.split('.')[-1]
+    meson.add_install_script(meson_make_manpage_stub,
+      join_paths('man' + target_section, target),
+      join_paths(mandir, 'man' + link_section, link_name))
+  endforeach
+endif
+
+if bash_completion.found()
+  foreach completion : bashcompletions
+    install_data(
+      join_paths('bash-completion', completion),
+      install_dir : bash_completion.get_variable('completionsdir')
+    )
+  endforeach
 endif
diff --git a/tools/meson-make-manpage-stub.sh b/tools/meson-make-manpage-stub.sh
new file mode 100644 (file)
index 0000000..b1af333
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -eu
+
+mkdir -vp "$(dirname "${DESTDIR:-}$2")"
+printf '.so %s\n' "$1" > "${DESTDIR:-}$2"