Re: installworld with NO_ROOT produces paths with .. for man pages

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Thu, 23 Sep 2021 13:08:49 UTC
On Thu, Sep 23, 2021 at 02:38:27PM +0300, Andriy Gapon wrote:
> On 28/08/2021 17:28, Andriy Gapon wrote:
> > 
> > This seems to be related to the recent change to install manual pages
> > for all platforms.
> > 
> > My method of creating a cross-platform installation image is to install
> > with NO_ROOT and then to tar up with @METALOG argument.
> > On the destination I simply untar the archive into a destination
> > directory (typically a fresh ZFS BE).
> > 
> > Today I noticed some complaints when extracting the archive, here is a few:
> > ./usr/share/man/man4/i386/../smapi.4.gz: Path contains '..'
> > ./usr/share/man/man4/i386/../vpd.4.gz: Path contains '..'
> > ./usr/share/man/man4/powerpc/../adb.4.gz: Path contains '..'
> > ./usr/share/man/man4/powerpc/../akbd.4.gz: Path contains '..'
> > 
> > This is a not a big deal but would be nice to "straighten" the
> > installation paths when installing such manual pages.
> > 
> > P.S.
> > NO_ROOT does not seem to be documented outside of the source code.
> > 
> 
> I think that it would be nice to fix that .. issue.
> Any suggestions?


MLINKS+=${_manpage} ../${_manpage}

so install(1) does what it is asked to do and write it do the metalog as such.

First it is a bad idea to have .. in mlink as we are creating hardlinks, so we
could have a cross device issue.

The issue was reported when those links were added: 0a0f7486413c

https://lists.freebsd.org/pipermail/dev-commits-src-all/2021-July/009164.html

imho the right way to do this would be to have a new kind of macros which would
create relative symlinks using ${INSTALL_RSYMLINK} to replace MLINKS

Best regards,
Bapt