diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 11 | ||||
-rw-r--r-- | mesonbuild/scripts/meson_install.py | 5 |
2 files changed, 13 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index ce8d46e..077254d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -545,8 +545,15 @@ int dummy; def generate_subdir_install(self, d): for sd in self.build.get_install_subdirs(): - src_dir = os.path.join(self.environment.get_source_dir(), sd.source_subdir) - inst_dir = sd.installable_subdir + inst_subdir = sd.installable_subdir.rstrip('/') + idir_parts = inst_subdir.split('/') + if len(idir_parts) > 1: + subdir = os.path.join(sd.source_subdir, '/'.join(idir_parts[:-1])) + inst_dir = idir_parts[-1] + else: + subdir = sd.source_subdir + inst_dir = sd.installable_subdir + src_dir = os.path.join(self.environment.get_source_dir(), subdir) dst_dir = os.path.join(self.environment.get_prefix(), sd.install_dir) d.install_subdirs.append([src_dir, inst_dir, dst_dir]) diff --git a/mesonbuild/scripts/meson_install.py b/mesonbuild/scripts/meson_install.py index 1cba480..0af7c24 100644 --- a/mesonbuild/scripts/meson_install.py +++ b/mesonbuild/scripts/meson_install.py @@ -55,7 +55,6 @@ def install_subdirs(data): if not os.path.exists(dst_dir): os.makedirs(dst_dir) for root, dirs, files in os.walk(src_prefix): - print(root) for d in dirs: abs_src = os.path.join(src_dir, root, d) filepart = abs_src[len(src_dir)+1:] @@ -75,6 +74,10 @@ def install_subdirs(data): print('Tried to copy file %s but a directory of that name already exists.' % abs_dst) if os.path.exists(abs_dst): os.unlink(abs_dst) + parent_dir = os.path.split(abs_dst)[0] + if not os.path.isdir(parent_dir): + os.mkdir(parent_dir) + shutil.copystat(os.path.split(abs_src)[0], parent_dir) shutil.copy2(abs_src, abs_dst, follow_symlinks=False) def install_data(d): |