Bug 1145735

Summary: Duplicate binaries produced by different llvm versions
Product: [openSUSE] openSUSE Tumbleweed Reporter: Dominique Leuenberger <dimstar>
Component: OtherAssignee: Aaron Puchert <aaronpuchert>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None CC: dimstar, matz
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Dominique Leuenberger 2019-08-15 11:28:22 UTC
Reported by the duplicate binary detection bot:

  libc++-devel:
  - llvm6
  - llvm7
  - llvm8
  libc++1:
  - llvm6
  - llvm7
  - llvm8
  libc++abi-devel:
  - llvm6
  - llvm7
  - llvm8
  libc++abi1:
  - llvm6
  - llvm7
  - llvm8
  python3-clang:
  - llvm6
  - llvm7
  - llvm8

Those binaries are all produced by three different llvm versions. For OBS and the product, this is an issue insofar as there is no guarantee which of the three wins to be published (but only ONE gets used/published)

Only one package should produce the binaries (others can use a name suffix, as is done for GCC for example)
Comment 1 Aaron Puchert 2019-08-15 20:54:11 UTC
Apparently both I and michalsrb have overseen that part in llvm's README.packaging:

> ===============================
> MAJOR AND MINOR VERSION UPDATES
> 
> For updates that change the major or minor version number,
> this package (llvm) needs to be updated, a new llvmX
> package needs to be created, and the old llvmX package
> needs to be modified.
> 
> 1. New llvmX package: [...]
> 2. Old llvmX package:
>    1. If the .so number of libc++.so.W.V has not changed,
>       remove the "%if" and %ifarch" tests around 
>       %bcond_without/%bcond_with libcxx in llvmX.spec
>       and make it always %bcond_with.  If the .so numbers
>       have changed, these can be left-as-is.
>    3. Change "%bcond_without pyclang" to 
>       "%bcond_with pyclang" in llvmX.spec.
>    4. Confirm everything builds successfully and there are
>       no new rpmlint issues.
>    5. Update the llvmX.changes file.

That should solve it.

Versioning the files is probably not needed for the libc++ (if the so name is the same, I'd assume the libraries are backwards-compatible) and not possible for python3-clang.
Comment 2 Aaron Puchert 2019-08-16 20:33:03 UTC
By the way, is this about duplicate files or duplicate package names? Because there are also the clang*-checker packages, which all contain the same files. But the different versions seem to conflict each other, so maybe that's Ok.
Comment 3 Aaron Puchert 2019-08-21 22:20:38 UTC
I've submitted change requests to devel:tools:compiler:

- https://build.opensuse.org/request/show/725002 for llvm6
- https://build.opensuse.org/request/show/725091 for llvm7

I don't have submit rights for either of these packages, so we'll have to wait.
Comment 4 Aaron Puchert 2019-09-10 00:10:01 UTC
Requests for both llvm6 and llvm7 have landed in Factory, could you verify that the issue has been solved? I don't know how to run the bot or where its results are published.
Comment 5 Dominique Leuenberger 2019-09-10 14:03:43 UTC
(In reply to Aaron Puchert from comment #4)
> Requests for both llvm6 and llvm7 have landed in Factory, could you verify
> that the issue has been solved? I don't know how to run the bot or where its
> results are published.

This looks all right now - the bot puts its results in
https://build.opensuse.org/package/view_file/openSUSE:Factory:Staging/dashboard/duplicate_binaries?expand=1

where llvm is no longer listed (i.e. solved)
Comment 6 Swamp Workflow Management 2019-10-19 15:00:07 UTC
This is an autogenerated message for OBS integration:
This bug (1145735) was mentioned in
https://build.opensuse.org/request/show/741225 Factory / llvm8