Bug 837901 - Wanted: 32-bit *static* boost libraries
Wanted: 32-bit *static* boost libraries
Product: Fedora
Classification: Fedora
Component: mash (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Bill Nottingham
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2012-07-05 14:43 EDT by Nadav Har'El
Modified: 2014-03-16 23:31 EDT (History)
7 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2012-07-24 16:39:20 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Nadav Har'El 2012-07-05 14:43:55 EDT
Even on x86_64 systems, each shared library is available in two versions, x86_64 and i686, so that 32-bit can be run, or compiled (with gcc -m32). Boost is no exception, and boost-thread (for example) is available in both x86_64 and i686 variants, even on a x86_64 installation.

In is unfortunate, then, that the corresponding *static* libraries - the "boost-static" package - is NOT available as i686, only x86_64. This means that I cannot compile my C++ programs with "-m32 -static", which is important to me - for generating self-contained Linux binaries.

Note that other important libraries are available in the static i686 versions - e.g., glibc-static.i686 and libstdc++.i686 are available on x86_64 installations.

I assume that adding the static i686 package to Fedora is easy, a matter of configuring a flag in the package build system.
Comment 1 Petr Machata 2012-07-09 02:54:28 EDT
We do build it, and presumably it is available in straight i686 setting:
I think that absence of i686 static packages from x86_64 repository is a distribution choice.
Comment 2 Bill Nottingham 2012-07-09 15:05:13 EDT
Correct; it's only included for the minimal case of glibc and libstdc++.
Comment 3 Nadav Har'El 2012-07-09 15:26:13 EDT
The problem is that I've come to depend on "-m32 -static" working, and when I started using Boost (because C++11 has severe backward ABI compatibility issues...), I hit a brick wall - "-m32 -static" can no longer work.

I'm curious - why can't "yum install boost-static.i686" on x86_64 simply download a package from the *i686* repository and install it? Why do we need another copy of the same file in the x86_64 repository, and then we need to start worrying about what we put there and what we don't? If yum just took the package from the i686 repository, I could ask to install even the most esoteric i686 library, and it would just work.
Comment 4 Bill Nottingham 2012-07-09 16:24:48 EDT
Splitting the repo up that way doubles the number of configured repos, doubles the repodata download, introduces conflicting RPMs, and so on. It's much simpler to have a coherent single repo that includes what's needed for multilib. 

It appears we could allow all -static packages into the repo and they at least wouldn't conflict. Whether the -devel packages they rely on would is a different issue.
Comment 5 Bill Nottingham 2012-07-24 16:39:20 EDT
Changed in mash-0.5.29. This should percolate out through rawhide in the next couple of days; it won't be changed for earlier releases.

Note You need to log in before you can comment on or make changes to this bug.