On Thu, Aug 10, 2006 at 03:25:38PM +0200, G?bor K?vesd?n wrote: > Brooks Davis wrote: > >On Wed, Aug 09, 2006 at 05:59:18PM -0600, John E Hein wrote: > > > >>John E Hein wrote at 17:43 -0600 on Aug 9, 2006: > >> > Well, the part that makes it annoying to duplicate in all ports is not > >> > the two separate words (CHROOT DESTDIR), but that you have to test > >> > defined(DESTDIR) && !empty(DESTDIR) before you can figure out whether > >> > to use ${CHROOT} ${DESTDIR} or not. > >> > > >> > So having that test to assign CHROOTDESTDIR or leave it empty in > >> > bsd.port.mk allows the port writer to just always invoke it without > >> > having to worry about testing for DESTDIR. > >> > >>You could pass this var to pkg-install scripts, too (put it in the > >>standard *SUB* lists). > >> > >>That way you don't have to do the dance that was added to > >>security/clamav/files/pkg-install.in: > >> > >>if [ -n "%%DESTDIR%%" ]; then > >> PW="/usr/sbin/chroot %%DESTDIR%% pw" > >> CHOWN="/usr/sbin/chroot %%DESTDIR%% chown" > >> MKDIR="/usr/sbin/chroot %%DESTDIR%% mkdir -p" > >>else > >> PW="pw" > >> CHOWN="chown" > >> MKDIR="mkdir -p" > >>fi > >> > >>but rather just: > >> > >>PW="%%CHROOTDESTDIR%% pw" > >>CHOWN="%%CHROOTDESTDIR%% chown" > >>MKDIR="%%CHROOTDESTDIR%% mkdir -p" > >> > > > >This seems bogus. I can't think of any good reason why packages should > >differ based on the valid of DESTDIR. Instead the pkg-install script > >should be run inside the chroot. > > > >-- Brooks > > > We wanted to go that way with garga when working on security/clamav, but > we realized that we can't just do chroot /foo pkg-install, since the > script is not located in the chroot itself. Do you have an another idea, > how to chroot those scripts?
My inclination would be something like: PKG_INSTALL_TEMP=`mktemp ${DESTDIR}/tmp/pkg_install` && \ (${CAT} ${PKG_INSTALL} > ${PKG_INSTALL_TEMP}; \ ${SH} ${PKG_INSTALL_TEMP}; \ ${RM} ${PKG_INSTALL_TEMP}) I think we should ideally introduce a feature to allow ports to automatically run pkg-install and stuff the code in bsd.port.mk so ports don't have to know about DESTDIR in this case. Actually, ports where pkg-install and the pre/post-install targets duplicate code (often slightly differently) drive me nuts so I'd prefer a NO_AUTOPKGINSTALL, but that would take some real work so a positive flag is probably better initially. -- Brooks
pgpsghQwjN56j.pgp
Description: PGP signature