Pass options to dependency
Adam Weinberger
adamw at adamw.org
Mon Jun 5 18:12:00 UTC 2017
> On 5 Jun, 2017, at 7:10, Eugene Grosbein <eugen at grosbein.net> wrote:
>
> 05.06.2017 18:51, Matthew Seaman пишет:
>> On 05/06/2017 10:56, Eugene Grosbein wrote:
>>> How can a port (its Makefile) pass a build option to BUILD_DEPENDS?
>>> For example, devel/ragel has:
>>>
>>> DOCS_USE= TEX=latex:build
>>> DOCS_BUILD_DEPENDS= fig2dev:print/transfig
>>>
>>> And "make -C /usr/ports/devel/ragel all-depends-list" shows HUGE
>>> list of its dependencies completely unneded for a port that just
>>> needs to use BUILD_DEPENDS=ragel:devel/ragel
>>>
>>> The reason is that bsd.options.mk includes PORT_OPTIONS+= DOCS
>>> unless user option NOPORTDOCS is set.
>>>
>>> Is it possible to specify something like OPTIONS_EXCLUDE=DOCS
>>> for BUILD_DEPENDS entity?
>>>
>>
>> Generally what you would do is create a slave port of the dependency
>> with the options settings you require. Doing this to turn off the DOCS
>> option would be unprecedented though.
>>
>> I believe the consensus nowadays is that DOCS should control installing
>> documentation that takes little or no effort to generate. If you need
>> to install a huge dependency tree in order to generate documentation,
>> then that should be controlled using a different option. Whether to
>> have that option default to either ON or OFF is at the discretion of the
>> maintainer.
>>
>> So my advice here is open a PR to get devel/ragel modified, and in the
>> mean time try and ignore all those unwanted dependencies while you work
>> on your own port.
>
> It would be more useful to have general way to build a dependency
> with needed set of options or at least introduce NODEPDOCS
> similar to NOPORTDOCS, wouldn't it?
Standard policy is that DOCS is always enabled by default, and if heavy dependencies are required, they have a new option name. TEXDOCS, for instance, for ragel's example.
NODEPDOCS is a little too grey because the interpretation is arbitrary; what about ports that need pandoc to produce manpages... we'd need a NODEPMANPAGES variable, and a NODEPHELPFILESBUTNOTDOCS, NODEPEXAMPLES, etc.
# Adam
--
Adam Weinberger
adamw at adamw.org
https://www.adamw.org
More information about the freebsd-ports
mailing list