Re: How to port a PHP application that uses Composer?

From: Stefan Esser <se_at_FreeBSD.org>
Date: Tue, 17 May 2022 16:09:34 UTC
Am 17.05.22 um 06:19 schrieb Mel Pilgrim:
> On 2022-05-16 20:14, Peter Beckman wrote:
[...]
>> Consider that it is something the installer needs to do, or build the
>> package as a deterministic set of packages already installed.
> 
> Yes, that's exactly the point I'm stuck on.  The fetch-extract-fetch and
> toe-stepping problems mentioned in my original email came from me trying to
> solve this either way:
> 
> "If I ran [composer] as part of the pkg building process, there's a
> fetch-extract race as it needs network access, but also a file extracted from
> the distfile.

You can override the do-fetch target with a more complex sequence of commands.
Those have network access and you could extract the required json file to some
temporary location to let the composer do its job.

The composer.phar script could be made a separate port referenced as a fetch
dependency (FETCH_DEPENDS=...) in the port you are working on.

In combination, the composer.phar would be installed first, then the initial
distfile fetched and the composer.json file extracted to be operated on by
the composer script.

I'd assume that composer will download the extra distfiles to the directory
where the json file is found, and you'll have to move them to the correct
distfiles directory (where "make extract" expects to find them ...).

Regards, STefan