2016-09-20 11:44:40 +02:00
|
|
|
========
|
|
|
|
OVERVIEW
|
|
|
|
|
|
|
|
This package is a dummy package that always depends on the
|
|
|
|
version of corresponding LLVM packages that openSUSE
|
|
|
|
currently supports. This file documents the procedure for
|
|
|
|
updating the various LLVM components.
|
|
|
|
|
|
|
|
There are three major update scenarios that will be addressed
|
|
|
|
here, patch-level updates to the current LLVM version,
|
|
|
|
patch-level updates to older LLVM versions, and major/minor
|
|
|
|
version updates.
|
|
|
|
|
|
|
|
LLVM version numbers come in three levels. For version
|
2021-07-11 12:56:05 +02:00
|
|
|
X.0.Z, changes to the X level are major updates, changes to
|
2016-09-20 11:44:40 +02:00
|
|
|
the Y level are minor updates, and changes to the Z level
|
2019-06-17 09:30:19 +02:00
|
|
|
are patch-level updates. Since LLVM 4, the minor version
|
|
|
|
is always expected to be 0. [1] Library .so numbers are
|
|
|
|
based on the major version, for example libLLVM.so.X.
|
2016-09-20 11:44:40 +02:00
|
|
|
Patch-level updates do not update the version number of
|
2019-06-17 09:30:19 +02:00
|
|
|
libraries. For this reason, only changes to the major
|
|
|
|
version number get a new llvm package.
|
2016-09-20 11:44:40 +02:00
|
|
|
|
|
|
|
There are up to three packages that need to be handled in a
|
|
|
|
given update. This package, the base "llvm" package, the
|
2019-06-17 09:30:19 +02:00
|
|
|
current "llvmX" package (X is the major version numbers),
|
|
|
|
and the next "llvmX" package if the major version has changed.
|
2016-09-20 11:44:40 +02:00
|
|
|
|
|
|
|
NOTE: This package should always have the same "License"
|
2019-06-17 09:30:19 +02:00
|
|
|
tag as the currently-supported version of the llvmX package.
|
|
|
|
|
|
|
|
[1] http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html
|
2016-09-20 11:44:40 +02:00
|
|
|
|
2016-10-12 09:53:17 +02:00
|
|
|
|
2016-09-20 11:44:40 +02:00
|
|
|
===========================================
|
|
|
|
PATCH-LEVEL UPDATES TO CURRENT LLVM VERSION
|
|
|
|
|
|
|
|
For patch level updates, this package (llvm) and the current
|
2019-06-17 09:30:19 +02:00
|
|
|
llvmX package need to be updated.
|
2016-09-20 11:44:40 +02:00
|
|
|
|
2019-06-17 09:30:19 +02:00
|
|
|
1. llvmX package:
|
2016-09-20 11:44:40 +02:00
|
|
|
1. Add the new sources to the package and delete the old
|
2021-07-11 12:56:05 +02:00
|
|
|
ones. This will not include clang-docs-X.0.Z.src.tar.xz
|
|
|
|
or llvm-docs-X.0.Z.src.tar.xz (see next item).
|
|
|
|
2. Build clang-docs-X.0.Z.src.tar.xz and
|
|
|
|
llvm-docs-X.0.Z.src.tar.xz. The instructions are in
|
|
|
|
the %install section of llvmX.spec. The instructions
|
|
|
|
need RPM substitutions, for example via rpmspec -P.
|
|
|
|
Add those sources as well and delete the old ones.
|
|
|
|
3. Update the "_relver" tag in llvmX.spec to match the
|
2019-06-17 09:30:19 +02:00
|
|
|
new sources.
|
2016-10-12 09:53:17 +02:00
|
|
|
4. Update the version number in the patches to match the
|
|
|
|
new sources.
|
2021-07-11 12:56:05 +02:00
|
|
|
5. Update the "_uaver" tag in llvmX.spec to match
|
|
|
|
the "_relver" tag.
|
2019-12-23 09:47:34 +01:00
|
|
|
6. Confirm everything builds successfully and there are
|
2016-09-20 11:44:40 +02:00
|
|
|
no new rpmlint issues.
|
2019-12-23 09:47:34 +01:00
|
|
|
7. Update the llvmX.changes file.
|
2016-09-20 11:44:40 +02:00
|
|
|
2. llvm package:
|
2019-06-17 09:30:19 +02:00
|
|
|
1. Update the "Version" tag to match the new llvmX
|
2016-09-20 11:44:40 +02:00
|
|
|
version.
|
2016-10-12 09:53:17 +02:00
|
|
|
2. Update the llvm.changes file.
|
|
|
|
|
2016-09-20 11:44:40 +02:00
|
|
|
|
|
|
|
========================================
|
|
|
|
PATCH-LEVEL UPDATES TO OLD LLVM VERSIONS
|
|
|
|
|
|
|
|
For patch-level updates to versions of LLVM before the
|
2019-06-17 09:30:19 +02:00
|
|
|
current version, only the corresponding llvmX package
|
2016-09-20 11:44:40 +02:00
|
|
|
needs to be updated.
|
|
|
|
|
2019-06-17 09:30:19 +02:00
|
|
|
1. llvmX package:
|
2016-09-20 11:44:40 +02:00
|
|
|
1. Add the new sources to the package and delete the old
|
2021-07-11 12:56:05 +02:00
|
|
|
ones. This will not include clang-docs-X.0.Z.src.tar.xz
|
|
|
|
or llvm-docs-X.0.Z.src.tar.xz (see next item).
|
|
|
|
2. Build clang-docs-X.0.Z.src.tar.xz and
|
|
|
|
llvm-docs-X.0.Z.src.tar.xz. The instructions are in
|
|
|
|
the %install section of llvmX.spec. The instructions
|
|
|
|
need RPM substitutions, for example via rpmspec -P.
|
|
|
|
Add those sources as well and delete the old ones.
|
|
|
|
3. Update the "_relver" tag in llvmX.spec to match the
|
2019-06-17 09:30:19 +02:00
|
|
|
new sources.
|
2016-10-12 09:53:17 +02:00
|
|
|
4. Update the version number in the patches to match the
|
|
|
|
new sources.
|
2021-07-11 12:56:05 +02:00
|
|
|
5. Update the "_uaver" tag in llvmX.spec to match
|
2016-09-20 11:44:40 +02:00
|
|
|
the "Version" tag.
|
2019-12-23 09:47:34 +01:00
|
|
|
6. Confirm everything builds successfully and there are
|
2016-10-12 09:53:17 +02:00
|
|
|
no new rpmlint issues. Some patches may need to be
|
|
|
|
removed or rebased.
|
2019-12-23 09:47:34 +01:00
|
|
|
7. Update the llvmX.changes file.
|
2016-09-20 11:44:40 +02:00
|
|
|
|
|
|
|
|
2021-07-11 12:56:05 +02:00
|
|
|
=====================
|
|
|
|
MAJOR VERSION UPDATES
|
2016-09-20 11:44:40 +02:00
|
|
|
|
|
|
|
For updates that change the major or minor version number,
|
2019-06-17 09:30:19 +02:00
|
|
|
this package (llvm) needs to be updated, a new llvmX
|
|
|
|
package needs to be created, and the old llvmX package
|
2016-09-20 11:44:40 +02:00
|
|
|
needs to be modified.
|
|
|
|
|
2019-06-17 09:30:19 +02:00
|
|
|
1. New llvmX package:
|
|
|
|
1. Copy (do not link) the old llvmX to the new
|
2016-09-20 11:44:40 +02:00
|
|
|
major/minor version number.
|
2016-10-12 09:53:17 +02:00
|
|
|
2. Add the new sources to the package and delete the old
|
2021-07-11 12:56:05 +02:00
|
|
|
ones. This will not include clang-docs-X.0.Z.src.tar.xz
|
|
|
|
or llvm-docs-X.0.Z.src.tar.xz (see next item).
|
|
|
|
3. Build clang-docs-X.0.Z.src.tar.xz and
|
|
|
|
llvm-docs-X.0.Z.src.tar.xz. The instructions are in
|
|
|
|
the %install section of llvmX.spec. The instructions
|
|
|
|
need RPM substitutions, for example via rpmspec -P.
|
|
|
|
Add those sources as well and delete the old ones.
|
2016-10-12 09:53:17 +02:00
|
|
|
4. Rename the .spec, .changes, and rpmlintrc files in the
|
2019-06-17 09:30:19 +02:00
|
|
|
new llvmX package to the new major/minor version
|
2016-09-20 11:44:40 +02:00
|
|
|
number
|
2019-06-17 09:30:19 +02:00
|
|
|
5. Rename the packages in llvmX.spec files to match the
|
|
|
|
new package name.
|
|
|
|
6. Change the "_sonum" tag in llvmX.spec to match the
|
|
|
|
new major/minor versions. It should be of the form "X".
|
2022-04-03 22:07:55 +02:00
|
|
|
Change the "_itsme" definition to "%define _itsmeX 1".
|
2019-06-17 09:30:19 +02:00
|
|
|
7. Change the "_minor" tag in llvmX.spec to match
|
2016-09-20 11:44:40 +02:00
|
|
|
the new major/minor versions. It should be of the
|
2019-06-17 09:30:19 +02:00
|
|
|
form "X.0".
|
|
|
|
8. Change the "_uaver" tag in llvmX.spec to match the
|
2021-07-11 12:56:05 +02:00
|
|
|
new major/minor versions. It should be of the form "X0Z".
|
|
|
|
9. Update the "_relver" tag and the version numbers in
|
|
|
|
the patches as described in PATCH-LEVEL UPDATES above.
|
2019-06-17 09:30:19 +02:00
|
|
|
10. Confirm llvmX.spec builds successfully and there are
|
2016-09-20 11:44:40 +02:00
|
|
|
no new rpmlint issues.
|
2022-04-03 22:07:55 +02:00
|
|
|
11. Check whether the .so numbers of "libc++.so.W.V" or
|
|
|
|
"libclang.so.X" have changed. If so, change the
|
|
|
|
"_socxx" or "_soclang" tag to match.
|
2016-09-20 11:44:40 +02:00
|
|
|
It should be of the form "W" if the "V" value is 0
|
|
|
|
or "W_V" if the "V" value is greater than 0.
|
2016-10-12 09:53:17 +02:00
|
|
|
12. Confirm everything builds successfully and there are
|
|
|
|
no new rpmlint issues. Some patches may need to be
|
|
|
|
removed or rebased.
|
2019-06-17 09:30:19 +02:00
|
|
|
13. Update the llvmX.changes file.
|
2022-04-03 22:07:55 +02:00
|
|
|
2. llvm package:
|
2019-06-17 09:30:19 +02:00
|
|
|
1. Update the "Version" tag to match the new llvmX
|
2016-09-20 11:44:40 +02:00
|
|
|
version.
|
|
|
|
2. Change the "_sonum" tag to match the one in the
|
2019-06-17 09:30:19 +02:00
|
|
|
new "llvmX.spec" file.
|
|
|
|
3. Update the llvm.changes file.
|
2022-04-03 22:07:55 +02:00
|
|
|
3. Project config:
|
|
|
|
1. Change %product_libs_llvm_ver to X.
|
|
|
|
2. If one of the .so version numbers for libclang, libc++
|
|
|
|
or libc++abi changed, add a corresponding
|
|
|
|
Prefer: libcxxW
|
|
|
|
Prefer: libcxxabiW
|
|
|
|
Prefer: libclangW
|
|
|
|
for the new .so version and a corresponding definition
|
|
|
|
%product_libs_llvm_ver_libcxxW X
|
|
|
|
%product_libs_llvm_ver_libcxxabiW X
|
|
|
|
%product_libs_llvm_ver_libclangW X
|
|
|
|
with W the old .so version and X the old LLVM version.
|