Date: Wed, 2 Feb 2011 09:05:43 +0100 (CET) From: "Ganael LAPLANCHE" <ganael.laplanche@martymac.org> To: freebsd-ports@freebsd.org Subject: DATADIR recorded as a relative path in plist ? Message-ID: <20110202075517.M86909@martymac.org>
next in thread | raw e-mail | index | archive | help
Hi ! While struggling with DATADIR-safety messages from portlint, I've noticed something very odd : DATADIR, which is supposed to be an absolute path, is recorded as a relative path (to ${PREFIX}, I suppose) in pkg-plist. This leads to being unable to deinstall a port which has been installed with a different DATADIR. Here is a very simple example, easy to reproduce. It implies misc/pciids, which is supposed to be DATADIR-safe as it uses the %%DATADIR%% macro in its plist. Its 'do-install' target is as simple as : do-install: ${MKDIR} ${DATADIR} ${INSTALL_DATA} ${WRKSRC}/pci.ids ${DATADIR} So there is no special trick here, everything should go fine, but it does not : # cd /usr/ports/misc/pciids && make DATADIR=/tmp/pciids install ===> Vulnerability check disabled, database not found ===> License BSD GPLv2 GPLv3 accepted by the user ===> Extracting for pciids-20101124 => SHA256 Checksum OK for pciids-20101124.tar.bz2. ===> Patching for pciids-20101124 ===> Configuring for pciids-20101124 ===> Installing for pciids-20101124 ===> Generating temporary packing list ===> Checking if misc/pciids already installed /bin/mkdir -p /tmp/pciids install -o root -g wheel -m 444 /files/Ports/ports/misc/pciids/work/pciids-20101124/pci.ids /tmp/pciids ===> Registering installation for pciids-20101124 # ls /tmp/pciids pci.ids So far, so good : DATADIR is handled as an *absolute* path and pci.ids has been installed into /tmp/. Unfortunately, here is the content of the plist : # pkg_info -L pciids-20101124 Information for pciids-20101124: Files: /usr/local//tmp/pciids/pci.ids /usr/local/share/licenses/pciids-20101124/catalog.mk /usr/local/share/licenses/pciids-20101124/LICENSE /usr/local/share/licenses/pciids-20101124/BSD /usr/local/share/licenses/pciids-20101124/GPLv2 /usr/local/share/licenses/pciids-20101124/GPLv3 DATADIR has been recorded as a *relative* path to ${PREFIX}. Obviously, everything goes wrong when you try to uninstall the package : # make DATADIR=/tmp/pciids deinstall ===> Deinstalling for misc/pciids ===> Deinstalling pciids-20101124 pkg_delete: file '/usr/local//tmp/pciids/pci.ids' doesn't exist pkg_delete: file '/usr/local//tmp/pciids' doesn't exist pkg_delete: unable to completely remove directory '/usr/local//tmp/pciids' pkg_delete: couldn't entirely delete package (perhaps the packing list is incorrectly specified?) Am I missing something here ? Best regards, -- Ganael LAPLANCHE <ganael.laplanche@martymac.org> http://www.martymac.org | http://contribs.martymac.org FreeBSD: martymac <martymac@FreeBSD.org>, http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110202075517.M86909>