[Bug 1164454] New: duplicated binaries between llvm9 and llvm7
http://bugzilla.suse.com/show_bug.cgi?id=1164454 Bug ID: 1164454 Summary: duplicated binaries between llvm9 and llvm7 Classification: openSUSE Product: openSUSE Distribution Version: Leap 15.2 Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: Other Assignee: bnc-team-screening@forge.provo.novell.com Reporter: mlin@suse.com QA Contact: qa-bugs@suse.de CC: rguenther@suse.com Found By: --- Blocker: --- llvm9[1] is newly added to SLE15 SP2 and was arrived to Leap, we see duplicated binaries issue between llvm9 and llvm7, see below, i586: python3-clang: - llvm7 - llvm9 x86_64: libc++-devel: - llvm7 - llvm9 libc++1: - llvm7 - llvm9 libc++abi-devel: - llvm7 - llvm9 libc++abi1: - llvm7 - llvm9 python3-clang: - llvm7 - llvm9 llvm7 in SLE15 SP2 hasn't build but inherited from update channel thus this isn't a problem there, however we need to find a solution for Leap. Richard, seems it's not yet to have bugowner of llvm9 in SLE, I added you to CC'ed due to llvm9 in SLE15 SP2 was submitted by you. [1] https://build.opensuse.org/request/show/774578 -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c1
Richard Biener
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c2
--- Comment #2 from Richard Biener
Note applying the Factory solution to SLE would mean updating llvm7 in SP2 and thus splitting it, requiring future maint updates to be done twice, once for SP1 and once for SP2+ which doesn't sound appealing to me.
Also as customers should still see and use the llvm7 variants of those packages since llvm9 only materializes as libLLVM9.so and libclang9.so and nothing else. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c3
Max Lin
What are the actual duplicate binaries? For SLE15 none fo the above cited sub-packages should make it to the media, for Leap we probably want the full llvm9 though.
The actual duplicated binaries: libc++-devel, libc++1, libc++abi-devel, libc++abi1 and python3-clang RPMs, llvm7 and llvm9 both had provide those RPMs. For Leap, if we had both full llvm9 and full llvm7, OBS scheduler will just picks one of duplicated RPM if any package build requires it.
libc++1, yes - doing it properly would need some similar mechanism as we have for the GCC runtime (some %define as to which one becoming the main one in the project config and suffixing the other).
What's the solution for Factory here? Ah, we update the old package to no longer build libcxx and python3-clang.
The spec file says
# install python bindings # The python bindings use the unversioned libclang.so, # so it doesn't make sense to have multiple versions of it %if %{with pyclang} install -d %{buildroot}%{python3_sitelib}/clang
Note applying the Factory solution to SLE would mean updating llvm7 in SP2 and thus splitting it, requiring future maint updates to be done twice, once for SP1 and once for SP2+ which doesn't sound appealing to me.
Can't you apply some magic to the "product config" to prefer the llvm9 variants for Leap?
for duplicated RPMs, prefer llvm9 variants has not fix this issue, Prefer: is used for RPM. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c4
--- Comment #4 from Richard Biener
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c5
--- Comment #5 from Max Lin
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c6
Aaron Puchert
What's the solution for Factory here? Ah, we update the old package to no longer build libcxx and python3-clang. Correct, this is documented in README.packaging in the llvm metapackage. (Perhaps not the place one would expect it...)
Note applying the Factory solution to SLE would mean updating llvm7 in SP2 and thus splitting it, requiring future maint updates to be done twice, once for SP1 and once for SP2+ which doesn't sound appealing to me. Are the packages otherwise shared between SPs? Because Leap has different repos, as far as I know. And so far I didn't run into rebase conflicts because of turning off the libc++ builds for older packages.
By the way, we should also update the llvm metapackage (https://build.opensuse.org/package/show/openSUSE:Leap:15.2/llvm), so that llvm9 would be used by most packages. I don't think that defaulting to the old version is a good idea. There was also a major version update to LLVM between Leap 15.0 and 15.1, specifically from 5 to 7. So I don't think there is anything new here. We'd just need to repeat what was done back then. So I'd prefer the Factory solution for Leap 15.2: disable the libc++ & python-clang builds for llvm7, update the llvm metapackage to 9.0.1. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c7
--- Comment #7 from Richard Biener
(In reply to Richard Biener from comment #1)
What's the solution for Factory here? Ah, we update the old package to no longer build libcxx and python3-clang. Correct, this is documented in README.packaging in the llvm metapackage. (Perhaps not the place one would expect it...)
Note applying the Factory solution to SLE would mean updating llvm7 in SP2 and thus splitting it, requiring future maint updates to be done twice, once for SP1 and once for SP2+ which doesn't sound appealing to me. Are the packages otherwise shared between SPs? Because Leap has different repos, as far as I know. And so far I didn't run into rebase conflicts because of turning off the libc++ builds for older packages.
Yes, in SLE the actual binary rpm packages are shared.
By the way, we should also update the llvm metapackage (https://build.opensuse.org/package/show/openSUSE:Leap:15.2/llvm), so that llvm9 would be used by most packages. I don't think that defaulting to the old version is a good idea.
There was also a major version update to LLVM between Leap 15.0 and 15.1, specifically from 5 to 7. So I don't think there is anything new here. We'd just need to repeat what was done back then.
This was also done for SLE15 SP1 but there llvm5 was not adjusted (the issue doesn't arise there since the setup is different - a service pack is just a set of update rpms ontop of the GA product). If we ever need to update llvm5 we'd need to disable the pieces that would otherwise conflict.
So I'd prefer the Factory solution for Leap 15.2: disable the libc++ & python-clang builds for llvm7, update the llvm metapackage to 9.0.1.
That works for me but then the origin should be the Factory packages rather than the SLE ones. Note that in SLE15 SP2 we have quite some packages that use clang/llvm-devel and all of those (but Mesa!) still use llvm7 - I'm not sure whether they build if we update the 'llvm' package or which one would need adjustment to build-require llvm7/clang7 variants. This and because the "update" for SP2 was late is the reason I refrained from touching the 'llvm' meta-package and made sure we only use llvm9 from Mesa (where it was requested as a feature) for SP2. I also wonder if we want to drop llvm5/7 from Leap 15.2 if we introduce llvm9. But as said all this is quite some work and I currently have no spare cycles for a proper solution in Leap. We can of course try pulling llvm and llvm9 from Factory into a staging and see what breaks... -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c8
--- Comment #8 from Aaron Puchert
That works for me but then the origin should be the Factory packages rather than the SLE ones. Note that in SLE15 SP2 we have quite some packages that use clang/llvm-devel and all of those (but Mesa!) still use llvm7 - I'm not sure whether they build if we update the 'llvm' package or which one would need adjustment to build-require llvm7/clang7 variants. This and because the "update" for SP2 was late is the reason I refrained from touching the 'llvm' meta-package and made sure we only use llvm9 from Mesa (where it was requested as a feature) for SP2. Ok, I'm not sure what's in SLE that depends on LLVM, might have a look later today.
I also wonder if we want to drop llvm5/7 from Leap 15.2 if we introduce llvm9. I've already filed (https://build.opensuse.org/request/show/776163) for deletion of llvm5, because it's no longer required as dependency. We can't drop 7 though, because a handful of packages still want that. (ghc, beignet, python-llvmlite...)
But as said all this is quite some work and I currently have no spare cycles for a proper solution in Leap. Yeah, the different setup of SLE and Leap makes it a bit harder to find a solution that works for both.
We can of course try pulling llvm and llvm9 from Factory into a staging and see what breaks... llvm9 could still come from SLE, then we wouldn't violate the idea of having the base packages come from SLE. Only the metapackage would come from Factory.
To drop the duplicate llvm7 packages, we could just take the version from Factory as well. I think diverging from SLE in the light of this bug should be Ok. We've diverged anyway after my fix to bug 1138457. That request went in despite the origin change. (https://build.opensuse.org/request/show/712921) -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c9
--- Comment #9 from Aaron Puchert
http://bugzilla.suse.com/show_bug.cgi?id=1164454
Frederic Crozat
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c10
--- Comment #10 from Max Lin
http://bugzilla.suse.com/show_bug.cgi?id=1164454
Max Lin
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c11
--- Comment #11 from Aaron Puchert
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c12
--- Comment #12 from Max Lin
My idea was that we stage this and try if it works, as Richard Biener suggested in comment 7. If it doesn't work, there is no point in discussing it.
Ok, let's see how it works in Leap staging https://build.opensuse.org/project/show/openSUSE:Leap:15.2:Staging:E -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c13
--- Comment #13 from Max Lin
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c14
--- Comment #14 from Richard Biener
As Aaron has mentioned at https://build.opensuse.org/request/show/774578 , rust is build failed with llvm9, rust is also from SLE thus it's potentially rust should be build fail also in SLE...
SLE has 'llvm' still at version 7 so packages wanting to use llvm9 need to explicitely build-require llvm9-devel and friends. Only Mesa-drivers does that at the moment. -- You are receiving this mail because: You are on the CC list for the bug.
SLE has 'llvm' still at version 7 so packages wanting to use llvm9 need to explicitely build-require llvm9-devel and friends. Only Mesa-drivers does that at the moment. Correct, which is a bit of a problem though (or could be): linking with multiple versions of libLLVM.so is not supported, but Mesa consists of
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c15
--- Comment #15 from Aaron Puchert
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c16
--- Comment #16 from Max Lin
(In reply to Max Lin from comment #13)
As Aaron has mentioned at https://build.opensuse.org/request/show/774578 , rust is build failed with llvm9, rust is also from SLE thus it's potentially rust should be build fail also in SLE...
SLE has 'llvm' still at version 7 so packages wanting to use llvm9 need to explicitely build-require llvm9-devel and friends. Only Mesa-drivers does that at the moment.
ah right! I forgot we had llvm change in the same staging group, I should think twice before leave the comment...silly me. yes, Mesa update has explicity build requires llvm9-devel therefore Mesa update can't accept to Leap until this issue has resolved. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c17
--- Comment #17 from Aaron Puchert
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c18
Richard Biener
My suggestion would be to change rust in SLE and Leap to require llvm7-devel instead of llvm-devel >= 6.0 and update the llvm metapackage to version 9.
Otherwise we're just going to run into issues with packages like kdevelop5 or libqt5-creator that use libLLVM and Mesa.
I'm not against such change, it would be an update to SLE15-SP1 rust (we don't want to split sources for this). Given rust isn't happy with llvm9 the >= 6.0 check is "bogus" anyways. There's only a group of maintainers though, CCing. So if we "fix" rust then pulling 'llvm' from Factory into Leap works? Can you stage that (change rust in Leap) to try? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c19
--- Comment #19 from Max Lin
(In reply to Aaron Puchert from comment #17)
My suggestion would be to change rust in SLE and Leap to require llvm7-devel instead of llvm-devel >= 6.0 and update the llvm metapackage to version 9.
Otherwise we're just going to run into issues with packages like kdevelop5 or libqt5-creator that use libLLVM and Mesa.
I'm not against such change, it would be an update to SLE15-SP1 rust (we don't want to split sources for this). Given rust isn't happy with llvm9 the >= 6.0 check is "bogus" anyways. There's only a group of maintainers though, CCing.
So if we "fix" rust then pulling 'llvm' from Factory into Leap works? Can you stage that (change rust in Leap) to try?
FYI I've added rust to staging E[1] from Factory, the rust version is 1.40, there is no build error appeared in staging E at least. [1] https://build.opensuse.org/project/show/openSUSE:Leap:15.2:Staging:E -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c20
Antonio Larrosa
http://bugzilla.suse.com/show_bug.cgi?id=1164454
Lubos Kocman
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c24
Antonio Larrosa
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c25
--- Comment #25 from Swamp Workflow Management
http://bugzilla.suse.com/show_bug.cgi?id=1164454
http://bugzilla.suse.com/show_bug.cgi?id=1164454#c26
--- Comment #26 from Max Lin
https://bugzilla.suse.com/show_bug.cgi?id=1164454
Chenzi Cao
https://bugzilla.suse.com/show_bug.cgi?id=1164454
https://bugzilla.suse.com/show_bug.cgi?id=1164454#c27
Richard Biener
https://bugzilla.suse.com/show_bug.cgi?id=1164454
Stefan Weiberg
participants (2)
-
bugzilla_noreply@novell.com
-
bugzilla_noreply@suse.com