diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2019-11-12 07:34:30 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2019-11-26 01:49:57 +0100 |
commit | 49a8e90bc78c17600eb4903ba00be26341df9161 (patch) | |
tree | 355273950891ab3af5fac440aa3a7efa38299cae /scripts | |
parent | 349c22d043290ccd0cce9f30981f5415e295442a (diff) | |
download | pacman-49a8e90bc78c17600eb4903ba00be26341df9161.tar.gz pacman-49a8e90bc78c17600eb4903ba00be26341df9161.tar.xz |
meson: make non-symlink scripts install for real, and use a better wrapper
We now generate the scripts using their real name, install them using
meson's builtin facility instead of an install_script, and generate the
wrapper scripts in the root of the build directory, instead of a
subdirectory.
This gets us closer to resolving FS#64394.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/meson.build | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/scripts/meson.build b/scripts/meson.build index 696d8ddd..d2466523 100644 --- a/scripts/meson.build +++ b/scripts/meson.build @@ -26,42 +26,38 @@ foreach script : scripts install_dir : get_option('bindir')) endforeach +script_wrappers = [] foreach script : wrapped_scripts script_shortname = script.split('.')[0] - # Build the script, but don't install it. We want to keep it as a "private" - # artifact that we reference from a wrapper script in order to bootstrap it - # the build directory. internal_script = custom_target( script, input : script, command : [ SCRIPT_EDITOR, '@INPUT@', '@OUTPUT@', '0755'], - output : script, - build_by_default : true) - - cdata = configuration_data() - cdata.set_quoted('BASH', BASH.path()) - cdata.set_quoted('BUILDDIR', meson.current_build_dir()) - cdata.set_quoted('REAL_PROGPATH', internal_script.full_path()) - - # Create a wrapper script that bootstraps the real script within the build - # directory. Use configure_file instead of a custom_target to ensure that - # permissions on the input script wrapper are preserved. - configure_file( - input : join_paths(meson.source_root(), 'build-aux', 'script-wrapper.sh.in'), output : script_shortname, - configuration : cdata) + install : true, + install_dir : BINDIR) + + script_wrappers += [[ script_shortname, internal_script, meson.current_build_dir() ]] - # Install the real script - meson.add_install_script(MESON_INSTALL_SCRIPT, - internal_script.full_path(), - join_paths(BINDIR, script_shortname)) + if script_shortname == 'repo-add' + repo_add = internal_script + endif endforeach foreach symlink : ['repo-remove', 'repo-elephant'] meson.add_install_script(MESON_MAKE_SYMLINK, 'repo-add', join_paths(BINDIR, symlink)) + + internal_script = custom_target( + symlink, + build_by_default : true, + command : ['ln', '-sf', 'repo-add', '@OUTPUT@'], + depends : repo_add, + output : symlink) + + script_wrappers += [[ symlink, internal_script, meson.current_build_dir() ]] endforeach subdir('libmakepkg') |