From 272024b9370380a538417004d478ef594bd0703c Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Sun, 1 Mar 2020 17:33:12 +0000 Subject: [PATCH 1/4] meson_vapi_link.py: Don't reset the cwd We're exiting anyway so it's unnecessary. --- meson_vapi_link.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/meson_vapi_link.py b/meson_vapi_link.py index eb64fd6..5b33063 100644 --- a/meson_vapi_link.py +++ b/meson_vapi_link.py @@ -5,18 +5,14 @@ import subprocess import sys vapidir = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], sys.argv[1], 'vala', 'vapi') +os.chdir(vapidir) # FIXME: meson will not track the creation of these files # https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 old = 'ggit-1.0' new = 'libgit2-glib-1.0' -wd = os.getcwd() -os.chdir(vapidir) - for ext in ['vapi', 'deps']: src = os.path.join('{}.{}'.format(new, ext)) dest = os.path.join('{}.{}'.format(old, ext)) subprocess.call(['ln', '-s', '-f', src, dest]) - -os.chdir(wd) -- 2.24.1 From f49f3f5a6cc20f54cdd9001f64912ca4d018ffec Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Sun, 1 Mar 2020 17:33:12 +0000 Subject: [PATCH 2/4] meson_vapi_link.py: Remove unnecessary os.path.join We only have one argument, so it does nothing. --- meson_vapi_link.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meson_vapi_link.py b/meson_vapi_link.py index 5b33063..58e0f6b 100644 --- a/meson_vapi_link.py +++ b/meson_vapi_link.py @@ -13,6 +13,6 @@ old = 'ggit-1.0' new = 'libgit2-glib-1.0' for ext in ['vapi', 'deps']: - src = os.path.join('{}.{}'.format(new, ext)) - dest = os.path.join('{}.{}'.format(old, ext)) + src = '{}.{}'.format(new, ext) + dest = '{}.{}'.format(old, ext) subprocess.call(['ln', '-s', '-f', src, dest]) -- 2.24.1 From 170e1c31dad2208e3ce659628efdbf0623ebbda7 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Sun, 1 Mar 2020 17:33:12 +0000 Subject: [PATCH 3/4] meson_vapi_link.py: Improve calculation of vapidir The script gets the *absolute* datadir passed as its argument. This means os.path.join will throw away the MESON_INSTALL_DESTDIR_PREFIX, breaking the symlinking when DESTDIR is set. Also handle the case where the datadir is not inside the prefix by prepending the destdir ourselves. We make the datadir relative to the root by stripping the drive letter (if any) and the initial separator. --- meson.build | 2 +- meson_vapi_link.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 3a423b3..6d314b5 100644 --- a/meson.build +++ b/meson.build @@ -135,7 +135,7 @@ if enable_vapi assert(enable_gir, 'vapi support was requested, but introspection support is mandatory.') assert(add_languages('vala', required: false), 'vapi support was requested, but vala not found.') - meson.add_install_script('meson_vapi_link.py', get_option('datadir')) + meson.add_install_script('meson_vapi_link.py', libgit2_glib_datadir) endif # Check for libgit2 ssh support diff --git a/meson_vapi_link.py b/meson_vapi_link.py index 58e0f6b..d7fc729 100644 --- a/meson_vapi_link.py +++ b/meson_vapi_link.py @@ -4,7 +4,14 @@ import os import subprocess import sys -vapidir = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], sys.argv[1], 'vala', 'vapi') +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR') +if destdir: + datadir = os.path.splitdrive(datadir)[1].lstrip(os.path.sep) + datadir = os.path.join(destdir, datadir) + +vapidir = os.path.join(datadir, 'vala', 'vapi') os.chdir(vapidir) # FIXME: meson will not track the creation of these files -- 2.24.1 From 29db98df0f65519bbcc9827253b0849ce7fb741c Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Sun, 1 Mar 2020 17:33:12 +0000 Subject: [PATCH 4/4] meson_vapi_link.py: Use python's own utils instead of calling 'ln' Replace the use of 'ln' with os.symlink. Since subprocess.call does not raise any exception when the called process fails, this script likely silently did nothing on Windows. Instead, fall back to using shutil.copy to copy instead of symlinking. --- meson_vapi_link.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/meson_vapi_link.py b/meson_vapi_link.py index d7fc729..db1e4e8 100644 --- a/meson_vapi_link.py +++ b/meson_vapi_link.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 import os -import subprocess +import shutil import sys datadir = sys.argv[1] @@ -22,4 +22,7 @@ new = 'libgit2-glib-1.0' for ext in ['vapi', 'deps']: src = '{}.{}'.format(new, ext) dest = '{}.{}'.format(old, ext) - subprocess.call(['ln', '-s', '-f', src, dest]) + try: + os.symlink(src, dest) + except OSError: + shutil.copy(src, dest) -- 2.24.1