Date: Wed, 2 May 2007 01:12:54 +0100 From: "Steven Hartland" <killing@multiplay.co.uk> To: <freebsd-ports@freebsd.org> Subject: Packages not respecting DESTDIR ( perl5.8 ) Message-ID: <0c2101c78c4e$a1db9ad0$b6db87d4@multiplay.co.uk>
next in thread | raw e-mail | index | archive | help
I'm trying to install ports into a jail but even some key ports like don't seen to support this option even to the extent they appear to break the host OS deleting files. I'm assuming this shouldn't be the case? Repro steps: cd /usr/ports/lang/perl5.8 make install ls -l /usr/local/bin/perl* -rwxr-xr-x 2 root wheel 9424 May 1 23:30 /usr/local/bin/perl -r-xr-xr-x 1 root wheel 15101 May 1 23:30 /usr/local/bin/perl-after-upgrade lrwxr-xr-x 1 root wheel 24 May 1 23:30 /usr/local/bin/perl5 -> /usr/local/bin/perl5.8.8 -rwxr-xr-x 2 root wheel 9424 May 1 23:30 /usr/local/bin/perl5.8.8 -rwxr-xr-x 1 root wheel 37307 May 1 23:30 /usr/local/bin/perlbug -rwxr-xr-x 1 root wheel 17965 May 1 23:30 /usr/local/bin/perlcc -rwxr-xr-x 1 root wheel 236 May 1 23:30 /usr/local/bin/perldoc -rwxr-xr-x 1 root wheel 11949 May 1 23:30 /usr/local/bin/perlivp All good so far. make DESTDIR=/usr/local/jails/jail1 install Does nothing, a quirk of the port system for a while now where it seems to attempt to remember the state but gets it wrong in this type of case. make DESTDIR=/usr/local/jails/jail1 reinstall which goes well until: /usr/bin/strip: '/usr/local/bin/perl5.8.8': No such file /usr/bin/strip: '/usr/local/bin/perl': No such file /usr/local/bin/pod2man: not found *** Error code 127 Make is not my strong point but looking at the makefile it seems the post and pre install steps are broken and not using DESTDIR. ls -l /usr/local/bin/perl* -r-xr-xr-x 1 root wheel 15101 May 1 23:30 /usr/local/bin/perl-after-upgrade lrwxr-xr-x 1 root wheel 24 May 1 23:30 /usr/local/bin/perl5 -> /usr/local/bin/perl5.8.8 -rwxr-xr-x 1 root wheel 37307 May 1 23:30 /usr/local/bin/perlbug -rwxr-xr-x 1 root wheel 17965 May 1 23:30 /usr/local/bin/perlcc -rwxr-xr-x 1 root wheel 236 May 1 23:30 /usr/local/bin/perldoc -rwxr-xr-x 1 root wheel 11949 May 1 23:30 /usr/local/bin/perlivp This has now trashed the base perl which was installed first and it shouldnt have gone any where near it. The following diff fixes most of the issues but use.perl, pkg-install and pkg-deinstall and or their invocation still need fixing up. [patch] --- Makefile.orig Tue May 1 23:46:35 2007 +++ Makefile Wed May 2 00:40:38 2007 @@ -178,19 +178,19 @@ post-install: - @${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER} - @${STRIP_CMD} ${PREFIX}/bin/perl - @${PREFIX}/bin/pod2man ${WRKDIR}/perl-after-upgrade >${WRKDIR}/perl-after-upgrade.1 - @${INSTALL_SCRIPT} ${WRKDIR}/perl-after-upgrade ${PREFIX}/bin/perl-after-upgrade + @${STRIP_CMD} ${DESTDIR}${PREFIX}/bin/perl${PERL_VER} + @${STRIP_CMD} ${DESTDIR}${PREFIX}/bin/perl + @${DESTDIR}/${PREFIX}/bin/perl ${DESTDIR}${PREFIX}/bin/pod2man ${WRKDIR}/perl-after-upgrade >${WRKDIR}/perl-after-upgrade.1 + @${INSTALL_SCRIPT} ${WRKDIR}/perl-after-upgrade ${DESTDIR}${PREFIX}/bin/perl-after-upgrade @${INSTALL_MAN} ${WRKDIR}/perl-after-upgrade.1 ${MAN1PREFIX}/man/man1/perl-after-upgrade.1 - @${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5 + @${CHROOT} ${DESTDIR} ${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5 .for files in ${BSDPAN_FILES} - ${MKDIR} ${BSDPAN_DEST}/${files:H} + ${MKDIR} ${DESTDIR}${BSDPAN_DEST}/${files:H} ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ - ${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files} + ${BSDPAN_WRKSRC}/${files} ${DESTDIR}${BSDPAN_DEST}/${files} .endfor .ifndef WITHOUT_USE_PERL PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL .if ${OSVERSION} < 500036 - ${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl + ${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${DESTDIR}${PREFIX}/bin/use.perl @fmt ${PKGMESSAGE} .endif [/patch] ================================================ This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it. In the event of misdirection, illegible or incomplete transmission please telephone +44 845 868 1337 or return the E.mail to postmaster@multiplay.co.uk.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0c2101c78c4e$a1db9ad0$b6db87d4>