Mel Pilgrim wrote on 2022/12/17 06:49:
> On 2022-12-13 19:34, Tatsuki Makino wrote:
>> RUN_DEPENDS= foo>=1.2:devel/foo@nondefaultflavor
> No, that makes the port depend on that specific flavor. I need to allow any
> flavor to be installed.
>> The majority of the Python module is like this.
> Yes and, per my original post, this is about depending on a port that doesn't
> have such a framework around it.
>
> For example, let's say I have a run dependency on postfix. It has six
> flavors:
>
> # pkg search -qL pkg-name mail/postfix$
> postfix-sqlite-3.7.3_1,1
> postfix-sasl-3.7.3_1,1
> postfix-pgsql-3.7.3_1,1
> postfix-3.7.3_1,1
> postfix-ldap-3.7.3_1,1
> postfix-mysql-3.7.3_1,1
>
> As all six flavors will provide what is needed in this example situation,
> there is no reason to limit which one the user can install.
Okay.
This is, after all, just like llvm-devel flavor of my earlier email.
It's time to pass the baton to people-familiar-with-flavor@FreeBSD :)
> If I have this:
>
> RUN_DEPENDS= postfix>=3.7.3:mail/postfix
>
> and the user has, say, postfix-sqlite-3.7.3_1,1 installed, then the Ports
> System will think the dependency isn't met and try to build mail/postfix.
> Pkg will similarly not see postfix-sqlite-3.7.3_1,1 as a viable dependency
> due to the pkgname mismatch, try to install postfix, and fail on the conflict.
>
> However, if I have this:
>
> RUN_DEPENDS= postfix:mail/postfix
>
> and user has postfix-sqlite-3.7.3_1,1 installed, the Ports System will see
> that as meeting the depedency because the lack of version spec reduces the
> check to seeing if "postfix" is a file. Since all flavors of postfix install
> that program, all of them meet it. But now I can't specify a version
> restriction.
>
> So, in this specific example, the question becomes:
>
> What format does the RUN_DEPENDS line need to take to declare that any flavor
> of postfix will meet the requirement so that the user can install any flavor
> they want either via Ports or pkg?
>
> I'm asking because, given this problem was created by the FLAVORS
> implementation modifying pkgname, it must be just a matter of outdated
> documentation that the Porter's Handbook doesn't say how to handle this case.
>
> I mean, no one would be mad enough to choose that approach and not update the
> dependency solver(s) to handle it, right?
For python, Mk/bsd.default-versions.mk is the way to fix the FLAVOR, but is
there any way to know the FLAVOR of postfix or other pre-installed stuff?
I can only think of the following methods.
POSTFIX_PKGNAME!= pkg query %n mail/postfix || echo postfix-sqlite # use flavor
@sqlite
.if empty(POSTFIX_PKGNAME:Mpostfix-*)
RUN_DEPENDS+= postfix>0:mail/postfix
.else
RUN_DEPENDS+= ${POSTFIX_PKGNAME}>0:mail/postfix@${POSTFIX_PKGNAME:S/postfix-//}
.endif
If that fails, it need to use other methods.
Using the same flavors as postfix, OPTIONS to choose postfix flavor or split
into m@ster and sl@ve...
Regards.