support for DESTDIR: security/openssh-portable
Gábor Kövesdán
gabor at FreeBSD.org
Fri Aug 11 09:38:55 UTC 2006
Brooks Davis wrote:
> 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
>
This is a good idea, but there's a big mess in this area as you already
said, so I think it would be a long term goal. I find John's solution
pretty good for now. An another item for automatization would be to
install PORTDOCS into DOCSDIR in post-install phase. and introduce
NO_PORTDOCSINSTALL or something like that to turn this off. But both of
them needs a lot of modification in affected ports as well.
--
Cheers,
Gabor
More information about the freebsd-ports
mailing list