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.