Maytham Alsudany <mayt...@debian.org> writes:

> Hi Simon,
>
> On Mon, 2025-02-03 at 13:32 +0100, Simon Josefsson wrote:
> [...]
>> Maybe adding an example for embedded static C object code like this
>> would help clarify the intention.
>
> Would adding the following after the first paragraph be sufficient in 
> your view?
>
>   Note that you do not need to list source packages recursively. For example, 
>   consider the following situation: A package named "foo" declares 
>   Static-Built-Using on "bar". "bar" declares Static-Built-Using on "baz". As 
>   long as "foo" does not directly incorporate the contents of the "baz" 
> package 
>   during its build, then "foo" must not list "baz" in its Static-Built-Using 
>   field.

That would be an improvement, thank you!

Thanks also for agreeing that this is the reasonable interpretation for
this situation, I wasn't 100% certain on that.

I believe the phrase

   "does not directly incorporate the contents"

still leaves room for ambiguity though.  Certaintly to some way of
reading "foo" WILL incorporate the particular bits coming from "baz"
directly, since those bits are provided identically within the "bar"
package.

Can we find some better articulation of the concept?

If package "bar" has "Static-Built-Using: baz", and could even have a
"Depends: baz" so that "baz" is actually installed when "bar" is
installed, I believe what we want is that a package "foo" that
Build-Depends on "bar" and statically uses files from "bar" to have
"Static-Build-Using: bar" when it refers ONLY to files in "bar".  If
"foo" also refers to and uses files provided by "baz" then it MUST also
have "Static-Build-Using: bar, baz".

I think the property we care about for distinguishing the recursive case
is more about the exposed interface (normally filenames) rather than the
actual content of the files.  The content WILL be included recursively,
that's the point of statically linking.  But mirroring that in
Static-Built-Using is not useful, as it will chain back to include all
compiler versions used to build them (and potentially the compilers that
built those, etc).  So we only mirror the filename interfaces needed.

I hope someone else can find better terminology and description of the
desired behaviour.

I'm also find with using your improved explanation as-is, and leave my
comment describing this detail in the bug tracker for future word
tweaks, in case there is ever any real problem due to this ambiguity.

/Simon

Attachment: signature.asc
Description: PGP signature

Reply via email to