[PATCH setup] add --build-depend option
Jon Turney
jon.turney@dronecode.org.uk
Fri Jul 18 18:48:28 GMT 2025
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".
More information about the Cygwin-apps
mailing list