Description of problem: up2date fails to download default arch pkg (-m32) for libgomp on ppc64 from tps-rhnqa.log: . . . sigVerify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm verify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm FAILED: no such file sigVerify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc64.rpm signature verification: PASS for /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc64.rpm : keyID: db42a60e . . . There should by implicitly available libgomp*.ppc pkg even if this is 64 bit architecture, and libgomp*.ppc64 should be available via up2date --arch command (additional installation). Version-Release number of selected component (if applicable): up2date-4.4.67-4.ppc How reproducible: Always Steps to Reproduce: 1. 2. 3. Actual results: sigVerify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm verify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm FAILED: no such file sigVerify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc64.rpm signature verification: PASS for /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc64.rpm : keyID: db42a60e Expected results: sigVerify of /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm signature verification: PASS for /var/spool/up2date/libgomp-4.1.0-18.EL4.ppc.rpm : keyID: db42a60e Additional info: Found during tps-RHNQA testing of 2006:0511 for RHEL4. The similar problem is on ia64, s390x and x86_64 archs (default option for ia64,s390x and x86_64 is -m64) (there are downloaded native pkgs libgomp.*.{ia64,s390x,x86_64} and their 32 bit versions is available via running up2date --arch={i386,s390,i386} -i libgomp command. But this is not the case of the ppc64 arch. The default option here is -m32, so there should be libgomp.*.ppc implicit available, and libgomp.*.ppc64 by additional installation. Current state is exactly contradictory (there are libgomp.*.ppc64 implicit available, and libgomp.*.ppc by additional installation) See http://errata.devel.redhat.com/errata/showrequest.cgi?advisory=2006:0511#c76 if unsure.
ppc pkgs filelist (which new pkgs should be installed): /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-c++-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-debuginfo-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-debuginfo-4.1.0-18.EL4.ppc64.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-gfortran-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-java-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgcj4-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgcj4-4.1.0-18.EL4.ppc64.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgcj4-devel-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgcj4-src-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgfortran-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgfortran-4.1.0-18.EL4.ppc64.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgomp-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libgomp-4.1.0-18.EL4.ppc64.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libmudflap-4.1.0-18.EL4.ppc.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libmudflap-4.1.0-18.EL4.ppc64.rpm /mnt/redhat/beehive/updates/dist/4AS/ppc/libmudflap-devel-4.1.0-18.EL4.ppc.rpm what is installed(for i in `cat pkgnames-new-4AS-ppc.list`; do rpm -q $i; done): gcc4-4.1.0-18.EL4.ppc gcc4-c++-4.1.0-18.EL4.ppc gcc4-debuginfo-4.1.0-18.EL4.ppc gcc4-gfortran-4.1.0-18.EL4.ppc gcc4-java-4.1.0-18.EL4.ppc libgcj4-4.1.0-18.EL4.ppc64 libgcj4-4.1.0-18.EL4.ppc libgcj4-devel-4.1.0-18.EL4.ppc libgcj4-src-4.1.0-18.EL4.ppc libgfortran-4.1.0-18.EL4.ppc64 libgfortran-4.1.0-18.EL4.ppc libgomp-4.1.0-18.EL4.ppc64 libgomp-4.1.0-18.EL4.ppc libmudflap-4.1.0-18.EL4.ppc64 libmudflap-4.1.0-18.EL4.ppc libmudflap-devel-4.1.0-18.EL4.ppc
I fixed a large number of multilib issues with up2date 4.4.69 pkgs in 3u8 & 4u4. Please retest using those packages. However, up2date uses rpm to determine "preferred arch." If, on ppc64, rpm states that ppc64 is preferred over ppc, up2date will follow that rule. If a change needs to happen here, we would need to focus the discussion at the rpm level, not up2date.
Received up2date result: up2date --nox -d --src gcc4 gcc4-c++ gcc4-debuginfo gcc4-gfortran gcc4-java libgcj4 libgcj4-devel libgcj4-src libgfortran libgomp libmudflap libmudflap-devel Fetching Obsoletes list for channel: rhel-ppc-as-4... Fetching Obsoletes list for channel: rhel-ppc-as-4-extras... Fetching Obsoletes list for channel: rhel-ppc-as-4-hwcert... Fetching Obsoletes list for channel: rhel-ppc-as-4-fastrack... Fetching rpm headers... ######################################## Name Version Rel ---------------------------------------------------------- gcc4 4.1.0 18.EL4 ppc gcc4-c++ 4.1.0 18.EL4 ppc gcc4-gfortran 4.1.0 18.EL4 ppc gcc4-java 4.1.0 18.EL4 ppc libgcj4 4.1.0 18.EL4 ppc libgcj4 4.1.0 18.EL4 ppc64 libgcj4-devel 4.1.0 18.EL4 ppc libgcj4-src 4.1.0 18.EL4 ppc libgfortran 4.1.0 18.EL4 ppc libgfortran 4.1.0 18.EL4 ppc64 libgomp 4.1.0 18.EL4 ppc64 libmudflap 4.1.0 18.EL4 ppc libmudflap 4.1.0 18.EL4 ppc64 libmudflap-devel 4.1.0 18.EL4 ppc Testing package set / solving RPM inter-dependencies... warning: waiting for transaction lock on /var/lock/rpm/transaction ######################################## gcc4-4.1.0-18.EL4.ppc.rpm: ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: gcc4-c++-4.1.0-18.EL4.ppc.r ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. gcc4-gfortran-4.1.0-18.EL4. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. gcc4-java-4.1.0-18.EL4.ppc. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-4.1.0-18.EL4.ppc.rp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-4.1.0-18.EL4.ppc64. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-devel-4.1.0-18.EL4. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-src-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgomp-4.1.0-18.EL4.ppc64. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-devel-4.1.0-18.E ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done.
Expected up2date result: up2date --nox -d --src gcc4 gcc4-c++ gcc4-debuginfo gcc4-gfortran gcc4-java libgcj4 libgcj4-devel libgcj4-src libgfortran libgomp libmudflap libmudflap-devel Fetching Obsoletes list for channel: rhel-ppc-as-4... Fetching Obsoletes list for channel: rhel-ppc-as-4-extras... Fetching Obsoletes list for channel: rhel-ppc-as-4-hwcert... Fetching Obsoletes list for channel: rhel-ppc-as-4-fastrack... Fetching rpm headers... ######################################## Name Version Rel ---------------------------------------------------------- gcc4 4.1.0 18.EL4 ppc gcc4-c++ 4.1.0 18.EL4 ppc gcc4-gfortran 4.1.0 18.EL4 ppc gcc4-java 4.1.0 18.EL4 ppc libgcj4 4.1.0 18.EL4 ppc libgcj4 4.1.0 18.EL4 ppc64 libgcj4-devel 4.1.0 18.EL4 ppc libgcj4-src 4.1.0 18.EL4 ppc libgfortran 4.1.0 18.EL4 ppc libgfortran 4.1.0 18.EL4 ppc64 libgomp 4.1.0 18.EL4 ppc64 libmudflap 4.1.0 18.EL4 ppc libmudflap 4.1.0 18.EL4 ppc64 libmudflap-devel 4.1.0 18.EL4 ppc Testing package set / solving RPM inter-dependencies... warning: waiting for transaction lock on /var/lock/rpm/transaction ######################################## gcc4-4.1.0-18.EL4.ppc.rpm: ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: gcc4-c++-4.1.0-18.EL4.ppc.r ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. gcc4-gfortran-4.1.0-18.EL4. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. gcc4-java-4.1.0-18.EL4.ppc. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-4.1.0-18.EL4.ppc.rp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-4.1.0-18.EL4.ppc64. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-devel-4.1.0-18.EL4. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgcj4-src-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgomp-4.1.0-18.EL4.ppc. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-devel-4.1.0-18.E ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done.
up2date up2date-4.4.69-22.ppc returns following: up2date --nox -d --src gcc4 gcc4-c++ gcc4-debuginfo gcc4-gfortran gcc4-java libgcj4 libgcj4-devel libgcj4-src libgfortran libgomp libmudflap libmudflap-devel => Fetching Obsoletes list for channel: rhel-ppc-as-4... Fetching Obsoletes list for channel: rhel-ppc-as-4-extras... . . . . . . libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgfortran-4.1.0-18.EL4.pp ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libgomp-4.1.0-18.EL4.ppc64. ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-4.1.0-18.EL4.ppc ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. libmudflap-devel-4.1.0-18.E ########################## Done. gcc4-4.1.0-18.EL4.src.rpm: ########################## Done. So up2date still offers .ppc64 version of the libgomp pkg.
I'm not really sure what comments 4 & 5 are trying to tell me. Please take a look at the 2nd bit of comment 3: "However, up2date uses rpm to determine "preferred arch." If, on ppc64, rpm states that ppc64 is preferred over ppc, up2date will follow that rule. If a change needs to happen here, we would need to focus the discussion at the rpm level, not up2date." My understanding is that rpm prefers ppc64 over ppc on compatible systems. If this is not desired by customers, we need to drive that fix into rpm, not each and every separate tool that uses rpm (up2date, yum, etc). I'm closing this bug; if I've missed something not related to archscore, please re-open and point me at what I missed :)
The correct thing when using this package is to always have libgomp.ppc available on any ppc box (whether ppc or ppc64). <jwl> jakub: gcc4/libgomp question. On ppc for 4AS, an up2date of gcc4 yields gcc-4.1.ppc+libgomp.ppc64. libgomp.ppc is not installed. What problems does this pose? -- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=198649 <jakub> jwl: that you can't link -fopenmp programs by default? <jakub> jwl: unless you build it as 64-bit program, i.e. -m64 -fopenmp <roland> jwl: what happens for libgcc? <jakub> roland: libgcc is likely used by big number of packages, unlike libgomp <jakub> roland: so usually both libgcc.ppc and libgcc.ppc64 are installed <jwl> roland: for libgcc, you get both ppc and ppc64 <roland> jakub: true, so it might be winning only by luck rather than correctness <jakub> roland: for libgomp, the thing is that this is a new subpackage <jakub> roland: yeah. Really ppc64 shouldn't win over ppc on ppc*, when we clearly prefer 32-bit there <roland> jakub: and there is no canonical -devel pkg that requires libgomp? <jakub> roland: the rpm preferences don't match the distro intentions <jakub> roland: no, libgomp's -devel stuff is in gcc package, for both arches <roland> jakub: maybe gcc should Require: %{_libdir}/libgomp.so ? <roland> jakub: and then also require other-libdir on biarch arches <jakub> roland: maybe; but the RHEL4.4 packages are already done <jakub> roland: I can't require libgomp.ppc64 on ppc, because that would make it impossible to install gcc on 32-bit ppc CPUs <roland> jakub: hmm. i guess 32-bit hardware installs don't want to be able to use gcc -m64? <jk_meeting> roland: does that even work from a pure 32bit system? Rpm prevents the installing of off-arch packages. <roland> jk_meeting: no clue
I assume this is because: rpm -qpR /mnt/redhat/beehive/updates/dist/4AS/ppc/gcc4-4.1.0-18.EL4.ppc.rpm requires shows: libgomp = 4.1.0-18.EL4 on rawhide we also have libgomp.so.1 (which will be coloured) so we should pull in correctly due to the symlink deps rpm --qf '[%{filenames} %{filerequire}\n]' -q gcc shows you that. If we actually had something linking against libgomp in the package that'd pull it in, else we'd have to do something in the spec to require libgomp.so.X or libgomp.so.X (64bit) as appropriate.