DESTDIR support broken?

Dominic Fandrey kamikaze at bsdforen.de
Fri Nov 22 14:31:42 UTC 2013


On 22/11/2013 14:17, Peter Pentchev wrote:
> On Fri, Nov 22, 2013 at 02:02:28PM +0100, Dominic Fandrey wrote:
>> On 19/11/2013 18:44, Dominic Fandrey wrote:
>>> On 18/11/2013 20:28, Kimmo Paasiala wrote:
>>>> On Mon, Nov 18, 2013 at 10:05 AM, Dominic Fandrey <kamikaze at bsdforen.de> wrote:
>>>>> On 18/11/2013 04:10, Eitan Adler wrote:
>>>>>> On Thu, Nov 14, 2013 at 1:00 PM, Dominic Fandrey <kamikaze at bsdforen.de> wrote:
>>>>>>> # make DESTDIR=/root/tmpdest install
>>>>>>> ===>  Creating some important subdirectories
>>>>>>
>>>>>> Are you sure you don't mean "make PREFIX=/root/tmpdest/" ?
>>>>>
>>>>> Yes.
>>>>>
>>>>> --
>>>>
>>>> I would expect DESTDIR=/some/path just work for any port. Last commit
>>>> to bsd.destdir was over a year ago so either it has been broken for a
>>>> long time or some other more recent commit has broken it.
>>>
>>> /root/tmpdest is a complete FreeBSD chroot (I did a
>>> "make installworld distribution DESTDIR=/root/tmpdest" right beforehand).
>>>
>>> I tried several ports, they all exhibit the same failure.
>>
>> The issue is that BSD make (in stable/10) passes "set -e" to the shell
>> by default.
>>
>> I submitted the details and a fix:
>> http://www.freebsd.org/cgi/query-pr.cgi?pr=184170
> 
> Hmm, even if this is so, I wonder if there would not be another funny
> problem later: for ports that actually use staging, bsd.stage.mk tries
> to pass a DESTDIR of its own to upstream's build system, so the DESTDIR
> specified on the make(1) command line might not be passed to upstream's
> build system at all.  So bsd.destdir.mk might do its thing, but then
> bsd.stage.mk would override the DESTDIR setting during the actual build
> and installation of the upstream sources, so I wonder if anything at all
> would be installed into the chroot.

bsd.stage.mk sets DESTDIR in MAKE_ARGS, which does not affect the ports
infrastructure at all. Instead it is passed to the make run in the WRKSRC
by the default do-build and do-install targets.

Where it is commonly picked up by build/install systems such as auto-tools
generated stuff to install into chroots. This results in the port being
installed into STAGEDIR where the ports system the creates a package.

And "pkg install" installs it into the actual DESTDIR. It is not affected
by MAKE_ARGS.

-- 
A: Because it fouls the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail? 


More information about the freebsd-ports mailing list