Re: [PATCH setup] add --build-depend option

Jon Turney via Cygwin-apps <[email protected]>
Newsgroups gmane.os.cygwin.applications
Message-ID <[email protected]>
On 17/07/2025 00:31, John Haugabook via Cygwin-apps wrote:
> Hello,
> 
> This patch adds an option --build-depend that, when called; installs the
> packages listed in the build-depends property of setup.ini. It is for
> someone who wants to build the binaries of a package themselves, enabling
> them to pass one stringed package in lieu of a vector of packages.

Thanks very much for looking at this!

> Right now this is more or less a rough draft as feedback requested i.e.
> what's the best way to implement this, and to get specific detailed
> hand-holding help on two things (unless better approach):
>   1. Using the correct setup.ini file (debugged using copy of setup.ini) and
>      passing it as a string to the "stream" parameter of build_depend(), which
>      is declared as:
>      - std::string build_depend(std::string pkg_search, std::string stream)
>      in build_depends.h.

So, I'd suggest that's not quite the right approach, as it falls down 
when setup is requested to read from multiple package repositories.

(e.g. when fetching a supplemental set of packages from an overlay 
server, as described in [1])

[1] https://cygwin.com/package-server.html

If you take a look at 
IniDBBuilderPackage.cc:IniDBBuilderPackage::buildBeginBuildDepends(), 
you'll see where the current handling of build-requires data parsed from 
setup.ini stops.

It should be relatively straightforward to add another "nodeList" here, 
to assemble the data parsed from build-requires: lines in setup.ini
(identically to the existing handling of 
depends/obsoletes/provides/conflicts)

[There's a bit here where I skip over plumbing the build-requires into 
the packagedb]

> 
>   2. Convert and handle successful output of build_depend(), passing it to
>      "PackageOption" in package_meta.cc (unless better way) as a vector as
>      if the output from build_depend() was passed to -P, --packages.


In choose.cc:ChooserPage::applyCommandLinePackageSelection() there's an 
existing block of code which handles, uh, command line package selection.

It seems like we could have a separate chunk here, which iterates over 
the package names supplied to the '--build-depends' option, fetches 
their build-requires, and marks those packages as "to be installed".
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.