Bug 674301

Summary: flex-static.i686 is missing from the x86_64 repo
Product: [Fedora] Fedora Reporter: Martin Simmons <martin>
Component: distributionAssignee: Bill Nottingham <notting>
Status: CLOSED RAWHIDE QA Contact: Bill Nottingham <notting>
Severity: low Docs Contact:
Priority: unspecified    
Version: 14CC: dcantrell, dennis, pmachata, rvokal
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-03-12 19:51:56 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Martin Simmons 2011-02-01 11:25:47 UTC
Description of problem:
libfl.a from flex-static is need to compile simple flex code, but the x86_64 repo doesn't contain the i686 build of flex-static.

Version-Release number of selected component (if applicable):
14

How reproducible:
100%

Steps to Reproduce:
1.Compile and link a simple flex program that links to -lfl using gcc -m32.
2.Look in the repo with yum list flex-static
  
Actual results:
1. /usr/bin/ld: skipping incompatible /usr/lib64/libfl.a when searching for -lfl
   /usr/bin/ld: cannot find -lfl
2. Loaded plugins: presto, refresh-packagekit
   Installed Packages
   flex-static.x86_64 2.5.35-11.fc14 @anaconda-InstallationRepo-201010211827.x86_64

Expected results:
1. It should be linking with /usr/lib/libfl.a.
2. Should show flex-static.i686 as being available as well.

Additional info:
flex-static is different from other static libraries because it provides something that isn't in any .so library, so I think that is a reason to put it in the repo.
Obtaining and installing the flex-static.i686 package from the i386 repo works.

Comment 1 Bill Nottingham 2011-02-01 17:57:37 UTC
flex-static should provide, or be named, flex-devel, I believe.

See https://fedoraproject.org/wiki/PackagingDrafts/StaticLibraryPolicy:

2. Static libraries only. When a package only provides static libraries you can place all the static library files in the *-devel subpackage. When doing this you also must have a virtual Provide for the *-static package:

%package devel
Provides: foo-static = %{version}-%{release}

Comment 2 Petr Machata 2011-02-01 20:00:39 UTC
So, are we blacklisting -static packages, or what's the reason?  That point says "you can", and it seems more correct having it in -static when, in fact, it's exclusively static libraries that we provide.

Comment 3 Petr Machata 2012-03-12 14:19:29 UTC
The situation is still the same.  flex-static is provided for the major architecture, but is missing in minor architecture (verified on x86_64 and ppc64).

If the sub-package rename is necessary to make static libraries visible in distribution, then so be it, otherwise I don't see a reason to do it.

Comment 4 Bill Nottingham 2012-03-12 14:54:30 UTC
We do multilib for development packages, keying off the -devel package name. Given that in other cases we've been requested to not ship the static libs as a compat arch package when we have dynamic equivalents, bringing in all -static packages seemed wrong.

If it's named flex-devel, it will get pulled in.

Comment 5 Petr Machata 2012-03-12 17:22:29 UTC
Would just providing flex-devel instead of renaming the subpackage have the same effect?

Comment 6 Bill Nottingham 2012-03-12 18:00:41 UTC
No.

Comment 7 Petr Machata 2012-03-12 19:51:56 UTC
I've renamed the package with corresponding Obsoletes: and Provides: rules so that clients can request flex-static as before.