diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2016-08-27 22:45:50 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2016-08-27 23:07:59 -0400 |
commit | 3a593d0aca47fd0d8a18c42e14704fb863036e03 (patch) | |
tree | 15c57671a10581c928a0a34e270ce8858cce18d1 | |
parent | 7830cb61c39fbaf57933ac403dcdf5007667d87d (diff) | |
download | meson-3a593d0aca47fd0d8a18c42e14704fb863036e03.zip meson-3a593d0aca47fd0d8a18c42e14704fb863036e03.tar.gz meson-3a593d0aca47fd0d8a18c42e14704fb863036e03.tar.bz2 |
Always obey DESTDIR even with absolute install_dir.
Passing an absolute path to `install_dir` would previously always
attempt to install there, instead of obeying DESTDIR, since os.path.join
will 'reset' on absolute paths.
4 files changed, 25 insertions, 3 deletions
diff --git a/mesonbuild/scripts/meson_install.py b/mesonbuild/scripts/meson_install.py index 1924b95..6a3adab 100644 --- a/mesonbuild/scripts/meson_install.py +++ b/mesonbuild/scripts/meson_install.py @@ -106,7 +106,10 @@ def install_data(d): def install_man(d): for m in d.man: outfileroot = m[1] - outfilename = os.path.join(d.fullprefix, outfileroot) + if os.path.isabs(m[1]): + outfilename = destdir_join(d.destdir, m[1]) + else: + outfilename = os.path.join(d.fullprefix, m[1]) full_source_filename = m[0] outdir = os.path.split(outfilename)[0] os.makedirs(outdir, exist_ok=True) @@ -121,7 +124,10 @@ def install_man(d): def install_headers(d): for t in d.headers: fullfilename = t[0] - outdir = os.path.join(d.fullprefix, t[1]) + if os.path.isabs(t[1]): + outdir = destdir_join(d.destdir, t[1]) + else: + outdir = os.path.join(d.fullprefix, t[1]) fname = os.path.split(fullfilename)[1] outfilename = os.path.join(outdir, fname) print('Installing %s to %s' % (fname, outdir)) @@ -194,7 +200,10 @@ def check_for_stampfile(fname): def install_targets(d): for t in d.targets: fname = check_for_stampfile(t[0]) - outdir = os.path.join(d.fullprefix, t[1]) + if os.path.isabs(t[1]): + outdir = destdir_join(d.destdir, t[1]) + else: + outdir = os.path.join(d.fullprefix, t[1]) aliases = t[2] outname = os.path.join(outdir, os.path.split(fname)[-1]) should_strip = t[3] diff --git a/test cases/common/52 custom install dirs/installed_files.txt b/test cases/common/52 custom install dirs/installed_files.txt index 1b8b561..0cc533a 100644 --- a/test cases/common/52 custom install dirs/installed_files.txt +++ b/test cases/common/52 custom install dirs/installed_files.txt @@ -1,4 +1,10 @@ usr/dib/dab/dub/prog?exe +usr/dib/dab/dub2/prog2?exe usr/some/dir/sample.h +usr/some/dir2/sample.h usr/woman/prog.1.gz +usr/woman2/prog.1.gz usr/meow/datafile.cat +usr/meow2/datafile.cat +usr/woof/subdir/datafile.dog +usr/woof2/subdir/datafile.dog diff --git a/test cases/common/52 custom install dirs/meson.build b/test cases/common/52 custom install dirs/meson.build index 622ecad..494ff0e 100644 --- a/test cases/common/52 custom install dirs/meson.build +++ b/test cases/common/52 custom install dirs/meson.build @@ -1,5 +1,11 @@ project('custom install dirs', 'c') executable('prog', 'prog.c', install : true, install_dir : 'dib/dab/dub') +executable('prog2', 'prog.c', install : true, install_dir : get_option('prefix') + '/dib/dab/dub2') install_headers('sample.h', install_dir : 'some/dir') +install_headers('sample.h', install_dir : get_option('prefix') + '/some/dir2') install_man('prog.1', install_dir : 'woman') +install_man('prog.1', install_dir : get_option('prefix') + '/woman2') install_data('datafile.cat', install_dir : 'meow') +install_data('datafile.cat', install_dir : get_option('prefix') + '/meow2') +install_subdir('subdir', install_dir : 'woof') +install_subdir('subdir', install_dir : get_option('prefix') + '/woof2') diff --git a/test cases/common/52 custom install dirs/subdir/datafile.dog b/test cases/common/52 custom install dirs/subdir/datafile.dog new file mode 100644 index 0000000..7a5bcb7 --- /dev/null +++ b/test cases/common/52 custom install dirs/subdir/datafile.dog @@ -0,0 +1 @@ +Installed dog is installed. |