meson already supports $DESTDIR natively, but in this case
we're using a custom script and so we have to do some extra
work ourselves.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
scripts/meson-install-web.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/scripts/meson-install-web.py b/scripts/meson-install-web.py
index fdf407ba33..e7456fa750 100755
--- a/scripts/meson-install-web.py
+++ b/scripts/meson-install-web.py
@@ -6,10 +6,23 @@ import sys
from pathlib import Path
+destdir = os.getenv('DESTDIR')
+if destdir:
+ destdir = Path(destdir)
+ if not destdir.is_absolute():
+ print('$DESTDIR must be an absolute path')
+ sys.exit(1)
+
for desc in sys.argv[1:]:
inst = desc.split(':')
src = Path(inst[0])
dst = Path(inst[1])
+ if destdir:
+ # Turn dst into a relative path by dropping its first component
+ # and append it to destdir to obtain the absolute destination
+ # path that respects the value $DESTDIR found in the environment
+ dst = Path(destdir, *dst.parts[1:])
+
dst.mkdir(parents=True, exist_ok=True)
shutil.copy(src, dst)
--
2.35.3
On Tue, Jul 19, 2022 at 04:17:44PM +0200, Andrea Bolognani wrote:
> meson already supports $DESTDIR natively, but in this case
> we're using a custom script and so we have to do some extra
> work ourselves.
>
> Signed-off-by: Andrea Bolognani <abologna@redhat.com>
> ---
> scripts/meson-install-web.py | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/scripts/meson-install-web.py b/scripts/meson-install-web.py
> index fdf407ba33..e7456fa750 100755
> --- a/scripts/meson-install-web.py
> +++ b/scripts/meson-install-web.py
> @@ -6,10 +6,23 @@ import sys
>
> from pathlib import Path
>
> +destdir = os.getenv('DESTDIR')
> +if destdir:
> + destdir = Path(destdir)
> + if not destdir.is_absolute():
> + print('$DESTDIR must be an absolute path')
> + sys.exit(1)
I don't see any reason for this check. Yes, DESTDIR is mostly used with
absolute path but the other two scripts where we use DESTDIR don't have
this check and meson itself doesn't complaint if the path is
not absolute as well.
That brings me to the other point that there is no need to use pathlib
at all. We can just do the same as scripts/meson-install-dirs.py or
scripts/meson-install-symlink.py:
destdir = os.environ.get('DESTDIR', os.sep)
for desc in sys.argv[1:]:
inst = desc.split(':')
dst = os.path.join(destdir, inst[1].strip(os.sep))
os.makedirs(dst, exist_ok=True)
shutil.copy(src, dst)
Pavel
> for desc in sys.argv[1:]:
> inst = desc.split(':')
> src = Path(inst[0])
> dst = Path(inst[1])
>
> + if destdir:
> + # Turn dst into a relative path by dropping its first component
> + # and append it to destdir to obtain the absolute destination
> + # path that respects the value $DESTDIR found in the environment
> + dst = Path(destdir, *dst.parts[1:])
> +
> dst.mkdir(parents=True, exist_ok=True)
> shutil.copy(src, dst)
> --
> 2.35.3
>
On Tue, Aug 09, 2022 at 05:26:28PM +0200, Pavel Hrdina wrote:
> On Tue, Jul 19, 2022 at 04:17:44PM +0200, Andrea Bolognani wrote:
> > +destdir = os.getenv('DESTDIR')
> > +if destdir:
> > + destdir = Path(destdir)
> > + if not destdir.is_absolute():
> > + print('$DESTDIR must be an absolute path')
> > + sys.exit(1)
>
> I don't see any reason for this check. Yes, DESTDIR is mostly used with
> absolute path but the other two scripts where we use DESTDIR don't have
> this check and meson itself doesn't complaint if the path is
> not absolute as well.
>
> That brings me to the other point that there is no need to use pathlib
> at all. We can just do the same as scripts/meson-install-dirs.py or
> scripts/meson-install-symlink.py:
>
> destdir = os.environ.get('DESTDIR', os.sep)
>
> for desc in sys.argv[1:]:
> inst = desc.split(':')
> dst = os.path.join(destdir, inst[1].strip(os.sep))
> os.makedirs(dst, exist_ok=True)
> shutil.copy(src, dst)
You're absolutely right. Somehow I had not realized that we already
had custom DESTDIR handling in other scripts that I could rip off ;)
v2 here:
https://listman.redhat.com/archives/libvir-list/2022-August/233655.html
--
Andrea Bolognani / Red Hat / Virtualization
© 2016 - 2026 Red Hat, Inc.