tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: m4 and after (was: Yacc Shaving)



On Mar 12, 2024, at 11:52, J. Lewis Muir <jlmuir%imca-cat.org@localhost> wrote:
> On 03/12, Amitai Schleier wrote:
>> So my question in the previous boils down to, should I look for all
>> occurrences of USE_TOOLS+=auto* and make sure gm4 is in those USE_TOOLS
>> lists? Or would it match more people's expectations if USE_TOOLS+=autoconf
>> were to automatically imply USE_TOOLS+=gm4? I'm guessing you'd been leaning
>> toward the latter; does this explanation do anything to solidify or change
>> what folks would expect here?
> 
> This still doesn't make sense to me.  You said that if you install
> autoconf, you get its runtime dependencies too, which presumably
> includes gm4.  So, why would you be talking here about adding an
> explicit gm4 to USE_TOOLS for the case where autoconf is already in
> USE_TOOLS?  Are you saying that USE_TOOLS works differently than a
> normal package install in that only the tool installed via USE_TOOLS
> gets put at the front of pkgsrc's internal PATH, *not* any of its
> dependencies?  Is that the difference?

Ignoring the tools framework for a moment: yes, installing autoconf installs gm4. Both go to ${PREFIX}. Users can easily see and use both. Packages can too, whether or not they’ve declared any kind of dependency on them.

Returning to the tools framework: yes, the only programs that get placed in ${TOOLS_DIR}/bin, where pkgsrc searches first, are the ones declared by packages in USE_TOOLS. (Plus some others that pkgsrc always puts there.) But this is not transitive. So if a package says USE_TOOLS+=autoconf, autoconf is present in ${TOOLS_DIR}/bin, but autoconf’s runtime dependencies are not. Which is often “fine”, because m4 is usually going to be found in ${PREFIX}/bin and everything happens to work out. But it’s not fine if m4 is found elsewhere and that somehow doesn’t actually work, either by being an incompatible version or by being a dangling Command Line Tools stub.

So that’s a good way to re-rephrase my original question. It appears that putting something in USE_TOOLS does not automatically also create tool symlinks for that tool’s runtime tool dependencies. Should we, in the general case? And/or should we in the meantime do this only for gm4, as a special case?


Home | Main Index | Thread Index | Old Index