On Wed, Sep 09, 2020 at 05:53:06PM +0200, Jan Kiszka wrote:
Am 9. September 2020 17:47:59 MESZ schrieb Pavel Hrdina <phrdina(a)redhat.com>:
>On Wed, Sep 09, 2020 at 05:06:19PM +0200, Jan Kiszka wrote:
>> On 09.09.20 16:38, Erik Skultety wrote:
>> > On Mon, Sep 07, 2020 at 11:25:34PM +0200, Jan Kiszka wrote:
>> >> From: Jan Kiszka <jan.kiszka(a)siemens.com>
>> >>
>> >> If the target path contains a link with an absolute path (e.g.
>> >> /var/run -> /run), makedirs will target the wrong location.
>Resolve the
>> >> path first, then append DESTDIR again if needed.
>> >
>> > Can you elaborate on this? os.makedirs should follow the symlinks
>before
>> > actually creating the directory hierarchy, so I'm failing to see
>the problem
>> > this patch is trying to address.
>> >
>>
>> mkdir -p /my/destdir/var /my/destdir/run
>> ln -s /run /my/destdir/var/run
>> meson build --prefix=/usr
>> DESTDIR=/my/destdir ninja -C build install
>>
>> -> PermissionError: [Errno 13] Permission denied:
>> '/my/destdir/var/run/libvirt'
>
>I would say don't do that as that's not purpose of DESTDIR and running
>libvirt from the DESTDIR installation will not work as it will not find
>all the required files.
>
>What is you use-case or what are you trying to achieve?
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
It's exactly for what I'm using it: installing the package into a rootfs dir that
is alien to the builder. It will become the rootfs on the target only.
So if I understand it correctly you set DESTDIR to the path to that
rootfs in order to install it there.
I'm not sure if that is the desired usage of DESTDIR. My understanding
is that it should be empty directory where package systems will install
the project in order to create a package out of it. Or for users to
inspect what is installed by the project.
Looking at our old autoconf build system it would fail with the same
permission denied error as we were using this in Makefile:
$(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/libxl"
Based on that I'm not sure if we want to fix it.
PS: Is it normal with meson that one has to implement such basic
stuff at project level?
I would not say it's normal but in the current state of Meson it is
probably expected to have some features missing as it's a fairly young
project and they are still introducing a lot of features.
Pavel