Merge branch 'meson-install-binary-links' into 'master'
Meson: install symlinks or copies of binaries See merge request federicomenaquintero/bzip2!26
This commit is contained in:
commit
cc1d5a784a
41
install_links.py
Executable file
41
install_links.py
Executable file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""Create a symlink or a copy of an installed file."""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('bindir')
|
||||
parser.add_argument('source')
|
||||
parser.add_argument('dest', nargs='+')
|
||||
parser.add_argument('--use-links', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
os.chdir(os.environ['MESON_INSTALL_DESTDIR_PREFIX'])
|
||||
os.chdir(args.bindir)
|
||||
|
||||
# Windows doesn't really use symlinks, just copy in that case. Windows
|
||||
# before vista (xp) doesn't have symlinks at all.
|
||||
if args.use_links:
|
||||
func = os.symlink
|
||||
verb = 'Linking'
|
||||
else:
|
||||
func = shutil.copy
|
||||
verb = 'Copying'
|
||||
|
||||
# at least os.symlink will fail if the destination already exists, just
|
||||
# remove the dest if it already exists.
|
||||
for dest in args.dest:
|
||||
if os.path.exists(dest):
|
||||
os.unlink(dest)
|
||||
|
||||
func(args.source, dest)
|
||||
print('{} {} to {}'.format(verb, args.source, dest))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
13
meson.build
13
meson.build
@ -101,6 +101,19 @@ install_data(
|
||||
install_mode : 'rwxr-xr-x',
|
||||
)
|
||||
|
||||
## Create aliases. Use links if possible, but copies if not.
|
||||
# Copies are mainly meant for windows, which doesn't have symlinks.
|
||||
bindir = get_option('bindir')
|
||||
targets = [['bzmore', 'bzless'], ['bzdiff', 'bzcmp'], ['bzgrep', 'bzegrep', 'bzfgrep'],
|
||||
['bzip2', 'bunzip2', 'bzcat']]
|
||||
extra_args = []
|
||||
if host_machine.system() != 'windows' and build_machine.system() != 'windows'
|
||||
extra_args = '--use-links'
|
||||
endif
|
||||
foreach t : targets
|
||||
meson.add_install_script('install_links.py', get_option('bindir'), t, extra_args)
|
||||
endforeach
|
||||
|
||||
## Generate pkg-config automaically from built library information
|
||||
pkg = import('pkgconfig')
|
||||
pkg.generate(
|
||||
|
Loading…
Reference in New Issue
Block a user