Re: Why no flavor_USES helper?
- Reply: Mel Pilgrim : "Re: Why no flavor_USES helper?"
- In reply to: Baptiste Daroussin : "Re: Why no flavor_USES helper?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 06 Sep 2021 15:14:42 UTC
On 2021-09-06 6:40, Baptiste Daroussin wrote: > On Mon, Sep 06, 2021 at 06:33:29AM -0700, Mel Pilgrim wrote: >> On 2021-09-06 1:16, Baptiste Daroussin wrote: >>> On Sun, Sep 05, 2021 at 10:39:29AM -0700, Mel Pilgrim wrote: >>>> The flavors helpers like flavor_RUN_DEPENDS are super useful, but I need to >>>> modify USES based on flavor, and find that there is no helper for it. >>> >>> Besause USES are loader 100 lines earlier, meaning only USES are already >>> processed when we expand the helper. >>> >>> Without getting to far in the technical details, USES and FLAVORS are basically >>> expanded at the moment, in pre and post section, meaning one had to decide >>> either we should allow USES to define flavors, or we should allow USES helpers. >> >> Is this why there odd race conditions between USES and FLAVORS where, for >> example, if I have a FLAVOR that does USES+=pgsql and WANT_PGSQL, the >> corresponding postgresqlN-* ports aren't added to *_DEPENDS? > > I don't know, neither heard of that specific case, but it could be, if so, that > sound like a bug in pgsql.mk, I am interesting in an example that show this > behaviour. I use an overlay with poudriere as part of a deployment system. Part of it is ports-mgmt/superpkg, which uses FLAVORS to represent different server profiles. It's mostly a series of lines like this: .if ${FLAVOR} == mognet USES+= ds hwtools hyve mailbox mx ns webbase zfstools Which in turn references Mk/Uses files in the overlay. The one where I hit this apparent race condition is Mk/Uses/mailbox.mk which adds PostgreSQL server and contrib RUN_DEPENDS with these lines: USES+= pgsql phpenv WANT_PGSQL= contrib server .include "${PORTSDIR}/Mk/Uses/pgsql.mk" Without that .include line, the postgres RUN_DEPENDS don't get added. It's something specific to pgsql.mk. The phpenv.mk file, a php analog to python:env, gets included from this file. In another overlaid USES file, I have USES+=python:env and that also works fine.