Hi,
during yesterday's FPC meeting, I voted "0" on this proposal:
https://fedoraproject.org/wiki/PackagingDrafts/Treatment_Of_Bundled_Libra...
<cite>
Packages with Bundled Libraries
Packages which contain bundled libraries (bundled libraries being
defined as libraries which exist and are mantained independently,
whether or not they are packaged separately for Fedora) must be handled
in the following manner:
* Bundled libraries (and/or their source code) must be explicitly
deleted during %prep. Build scripts may need to be patched to deal with
this situation. Whenever possible, the patching should be done in a way
to conditionalize use of the bundled libraries, so that it can be sent
upstream for consideration.
* It is not necessary to remove bundled libraries from the source
tarball unless there is a legal reason to do so
* Bundled libraries must NEVER end up in a package, even if they
are not used.
...
</cite>
As I won't be able to attend FPC meetings for the next 2 weeks, I was
asked to elaborate my vote here:
a) I perceive this proposal as unclear,
esp. wrt. a definition of "library".
It on one hand refers to "bundled binary libraries" (c.f. bootstrapping)
on the other hand, it refers to "bundled sources", but it is unclear
about bundled "libraries" of scripted languages (e.g. perl modules).
b) Conditionally building "bundled libraries" or parts from them
statically and linking against them statically, is a common way,
packages apply to escape from distributions shipping "old/insufficient"
versions of libraries.
I.e.
* mandating removing bundled libs will render packaging such packages
impossible, for distros which ship outdated/insufficient system
libraries, e.g. RHEL.
* "removing bundled libs" presumes "bundled libs" to be explicit.
In reality, this often is circumvented by "bundling a lib's files"
instead of a whole library.
I.e. this proposal is "blacklisting" one use case, but ignores another
use-case.
c) The proposal is explicitly demanding to "remove bundled libraries" in
%prep.
This is applicable without problems in some cases, with some efforts
attached to it in many cases, but it also is technically difficult to
implement in occasions (== error-prone and non-feasible).
Esp. in the latter cases, reality tells that it's often close to
impossible to "upstream" patches resulting from this, because certain
upstreams consider their "bundling" to be a feature and not to be a
"defect/bad design".
All in all, I agree with the objectives of this proposal but consider
this proposal to be too rough/un-cooked and to be
non-applicable/non-helpful.
It should be reworded to express the intentions behind it [1] and may-be
provide some "cookbook receipes".
Ralf
[1] "Re-use system-libs when ever possible".