Commit graph

866 commits

Author SHA1 Message Date
Tulio Magno Quites Machado Filho
d28725b2de Enable LLVM_ENABLE_ZSTD
Fixes rhbz#2321848.
2024-11-26 15:20:21 -03:00
Tulio Magno Quites Machado Filho
578ded7984 Remove patch applied upstream
PR #114907 has been merged on LLVM 20.
2024-11-22 21:01:14 +00:00
Nikita Popov
eefceee928 Fix RHEL 9 gating issues
This does two changes:
 * Add libomp -> llvm-libs dependency to satisfy rpmdeps.
 * Add LLVM_USE_PERF to bundle_compat_lib to avoid an ABI change.

I've introduces a cmake_common_args variable so we have a place to
put cmake variables that should apply to both the main build and
the compat build.
2024-11-22 08:28:05 +00:00
Konrad Kleine
28f33f948e Better detect last run script in mock chroot
Before when running one of the following targets it could be that there were multiple run files in `/var/lib/mock/$(MOCK_CHROOT)/root/var/tmp`.

```
edit-last-failing-script              - Opens the last failing or running script from mock in your editor
                                        of choice for you to edit it and later re-run it in mock with:
                                        "make mockbuild-rerun-last-script-...".
mockbuild-rerun-last-script           - Re-runs the last failing or running script of your release/mock mockbuild.
```

The function to edit the last one that was run sometimes picked the wrong file. Now we sort the files in there aforementioned directory before editing or running it again.
2024-11-21 15:00:06 +01:00
Timm Bäder
1acc1f3d64 Update to 19.1.4 2024-11-21 14:58:46 +01:00
Miro Hrončok
d7e2d3dc1f --with compat_build: Don't set %py_reproducible_pyc_path to unexisting path
+ /usr/lib/rpm/redhat/brp-fix-pyc-reproducibility /builddir/build/BUILDROOT/llvm19-19.1.3-4.fc40.x86_64/usr/lib/python3.12/site-packages
    find: ‘/builddir/build/BUILDROOT/llvm19-19.1.3-4.fc40.x86_64/usr/lib/python3.12/site-packages’: No such file or directory
    error: Bad exit status from /var/tmp/rpm-tmp.VbdRja (%install)
2024-11-20 19:12:14 +01:00
Konrad Kleine
836ccfcbb2 Don't build HTML documentation. Add lldb man pages.
* Install a redirection index.html page to point users to the
  upstream HTML documentation.
* Remove myst parser patch for RHEL.
* Remove -DLLVM_INCLUDE_DOCS
* Add lldb man-pages
2024-11-19 16:51:23 +01:00
Josh Stone
680f925c31 Fix profiling after a binutils NOTE change
Resolves: rhbz#2322754
Ref: https://github.com/llvm/llvm-project/issues/114605
Ref: https://github.com/llvm/llvm-project/pull/114907
2024-11-18 14:42:53 -08:00
Konrad Kleine
5bc80c81ed [make] Use mock instead of rpmbuild
I always wanted to use `mock` instead of `rpmbuild` for building release
and snapshot builds. I disliked `mock` for a very particular reason.
When a build failed and I wanted to go in and change the last running
script and re-run it, I thought this wasn't possible. Little did I know.

Here are the make targets and what they do now:

```
Available targets
-----------------
get-sources-snapshot                  - Downloads all sources we need
for a snapshot build.
get-sources-release                   - Downloads all sources we need
for a release build.
srpm-release                          - Builds an SRPM that can be used
for a release build.
srpm-snapshot                         - Builds an SRPM that can be used
for a snapshot build.
scrub-chroot                          - Completely remove the fedora
chroot and cache.
mockbuild-release                     - Start a mock build of the
release SRPM.
mockbuild-snapshot                    - Start a mock build of the
snapshot SRPM.
edit-last-failing-script              - Opens the last failing or
running script from mock in your editor
                                        of choice for you to edit it and
later re-run it in mock with:
                                        "make
mockbuild-rerun-last-script-...".
mockbuild-rerun-last-script           - Re-runs the last failing or
running script of your release/mock mockbuild.
help                                  - Display this help text.
get-llvm-version-release              - Determines the LLVM version
given in the llvm.spec file.
get-llvm-version-snapshot             - Determines the LLVM version
given in the version.spec.inc file.
get-spec-file-release                 - Parses the spec file for the
Release: tag
get-srpm-release                      - Determines the name of the SRPM
used for release builds
                                        Can be overriden by giving "make
... SRPM_PATH=foo.src.rpm".
get-srpm-snapshot                     - Determines the name of the SRPM
used for snapshot builds
                                        Can be overriden by giving "make
... SRPM_PATH=foo.src.rpm".
```

When you want to build a release build for fedora you can do so by
running `make mockbuild-release` it will download the sources for you
and create an SRPM that it will pass to `mock` for the final build.

To build for `centos` you can use `make mockbuild-release
MOCK_CHROOT=centos-stream-9-x86_64`.
2024-11-18 19:53:31 +00:00
Tulio Magno Quites Machado Filho
afbb604baf Keep using DWARF-5 on all snapshot builds
We want to continue testing DWARF-5 on all snapshot builds, including on
RHEL 8 and 9.
This is in-sync with
https://src.fedoraproject.org/tests/clang/pull-request/48 .

Fixes: 8451454bdb (Port changes from RHEL 9)
2024-11-18 14:41:20 -03:00
Timm Bäder
172a0aa9ed Install i386 config files for x86_64 2024-11-18 10:05:20 +01:00
Konrad Kleine
75539700db Fix --gcc-install-dir
This should fix this error:

```
clang: error: '/opt/rh/gcc-toolset-14/root/usr' does not contain a GCC installation
```
2024-11-13 10:51:33 +01:00
Konrad Kleine
8451454bdb Port changes from RHEL 9
This change brings back some patches we had applied in LLVM 18.
And since the `bundle_compat_lib` switch in RHEL still builds LLVM 18,
I've added them here. This was easily possible due to #323.

This effectively allows us to build LLVM 19 in RHEL9 (see also RHEL-57461).

I've also added the `--gcc-install-dir` to the config file which is used
once clang is installed. This is to tell clang in RHEL which standard
library to link against.

We decided to no longer patch clang to default to DWARF4. Instead we tune
the default by adding `-gdwarf-4` to the config file.

RHEL-wise we've bumped the gts version from 13 to 14 (see RHEL-38228).
2024-11-13 09:56:22 +01:00
Nikita Popov
f14556f77b Don't install binutils-gold on RHEL 8
This subpackage is only available since RHEL 9.
2024-11-11 13:32:39 +00:00
Nikita Popov
8ad28122a0 Add BuildRequires on binutils-gold
While we *are* building the gold plugin, I noticed that we're
no longer running the tests for it on f41 and rawhide. Add a
BuildRequires on binutils-gold to restore the tests.
2024-11-08 12:34:15 +01:00
Konrad Kleine
a7e3073a2c Patch numbering
We've established the habit of numbering patches the following way:

  0-499: All patches that are unconditionally applied
  500-1000: Patches applied under certain conditions (e.g. only on RHEL8)
  1500-1599: Patches for LLVM 15
  1600-1699: Patches for LLVM 16
  1700-1799: Patches for LLVM 17
  ...
  2000-2099: Patches for LLVM 20

The idea behind this is that the last range of patch numbers (e.g. 2000-2099) allow
us to "deprecate" a patch instead of deleting it right away.
Suppose llvm upstream in git is at version 20 and there's a patch living
in some PR that has not been merged yet. You can copy that patch and put it
in a line like:

  Patch2011: upstream.patch

As time goes by, llvm moves on to LLVM 21 and meanwhile the patch has landed.
There's no need for you to remove the "Patch2011:" line. In fact, we encourage you
to not remove it for some time. For compat libraries and compat packages we might
still need this patch and so we're applying it automatically for you in those
situations. Remember that a compat library is always at least one major version
behind the latest packaged LLVM version.

I've restored a patch for an older version of LLVM:

We needed to move the

`0001-Always-build-shared-libs-for-LLD.patch`

from the `0-499` range to the `19xx` (current release) and `20xx`
(snapshots) range. In addition the old version of the patch was restored
with the following command and added to the `18xx` range:

```
$ git show
0656f30e3739d2d371d58f2fad66d634a766e0fe:0001-Always-build-shared-libs-for-LLD.patch
> 0001-18-Always-build-shared-libs-for-LLD.patch
```

This was needed because the `bundle_compat_lib` (RHEL only) build
condition needs the old version of the patch.
2024-11-07 11:05:49 +01:00
Timm Bäder
f0d7b28fe5 Update to 19.1.3 2024-11-05 16:30:59 +01:00
Jesus Checa Hidalgo
078fee286e Update README.md for tests directory 2024-11-04 11:58:55 +00:00
Jesus Checa Hidalgo
5336de0daf Update rpminspect config
rpminspect now allows to set unicode ignore rules on the dist-git config
Add the known example for misleading bidirectional shipped with
clang-tidy docs here, so we don't need to update the
rpminspect-data-fedora package every single new fedora release.
2024-11-04 11:58:55 +00:00
Jesus Checa Hidalgo
43452f8b07 Update gating settings
With the addition of new testplans now we're making the plan result
reporting in bodhi separately (ci.fmf).
Updated the gating acceptance rules to require the two new plans.
lld-alternative is always required. kernel-ark is required only in
rawhide.
2024-11-04 11:58:55 +00:00
Jesus Checa Hidalgo
3793bc27d2 Add missing testplans from other components
kernel-ark-build to build latest upstream kernel-ark sources with clang
lld-alternative to test update-alternatives upon install/uninstall
2024-11-04 11:58:55 +00:00
Jesus Checa Hidalgo
14d74717e3 Update build-gating plan to test all components
With the merge of all the packages into llvm now we need to test
all those with llvm, but the tests are still scattered across different
test repos. This commit adds discover steps to gather all the tests.
2024-11-04 11:58:55 +00:00
Nikita Popov
b7f988626e Include liblldb.so in bundle_compat_lib
This is needed by bpftrace now.
2024-11-01 10:09:40 +01:00
Tom Stellard
b2ba6764ef Add file entry for new clang-sycl-linker tool 2024-11-01 04:28:33 +00:00
Nikita Popov
de0bfe9a28 Backport requires fixes from RHEL 10
Make the following changes:
 * Fix a number of `%{?isa}` to use `%{?_isa}` instead.
 * Add explicit lld-libs -> llvm-libs and lldb -> clang-libs
   dependencies (to satisfy rpminspect rpmdeps analysis).
 * Fix libomp-devel -> libomp dependency (it was accidentally
   using libomp-devel -> llvm instead).
 * Change all `= %{version}` requires to `= %{version}-%{release}`.
   We were mostly already doing this, but missed some places.
2024-10-31 13:26:06 +01:00
Jesus Checa Hidalgo
71b35f8e70 Fix %postun scriptlet for llvm-devel when upgrading/downgrading
The scriptlet tried to run llvm-config-%{maj_ver} when upgrading or
downgrading to check if ${maj_ver} has changed. Since postun runs
after the package files have been uninstalled this will always fail
to run the command. We should run instead llvm-config%{exec_suffix},
which in the case of upgrades or downgrades will still be present,
installed from the new package.
2024-10-29 13:49:59 +01:00
Konrad Kleine
cbf1601ea0 Add pre-commit update to git blame ignore revs list 2024-10-29 11:18:19 +01:00
Konrad Kleine
260d8e1cdc [pre-commit]: pre-commit-hooks 5.0.0, tmt 1.38.0
After the update I ran: `pre-commit run -a`
2024-10-29 11:17:42 +01:00
Nikita Popov
1be1f5ebdc Backport openmp fixes from RHEL 10
Backport patch from https://github.com/llvm/llvm-project/pull/111831
to fix openmp affinity tests on some brew ppc runners.

Also add one more openmp test to the ignore list for s390x.

Also add --time-tests to the lit args -- I had one instance where
openmp tests were running for 4h on s390x. If this happends again,
this should help determine which tests take so much time.
2024-10-14 12:18:30 +02:00
Timm Bäder
543b887fe7 Port a few changes from the llvm 18 compat packages
https://src.fedoraproject.org/rpms/lld18/pull-request/2
https://src.fedoraproject.org/rpms/clang18/pull-request/5
2024-10-11 03:50:30 +00:00
Nikita Popov
8fa6bd72a1 Skip openmp tests when builder uses 5-level page tables
A large number of openmp tests using tsan fail when we hit certain
machines on the rhel8-beefy channel in brew, because they appear
to the use 5-level page tables. This results in memory being
mapped in places where tsan does not expect it.
See https://github.com/llvm/llvm-project/issues/111492 for more
context.

Work around this by disabling the openmp tests that use tsan if
the cpu has the la57 feature.
2024-10-09 12:09:20 +02:00
Konrad Kleine
025b6c75da Remove %elif no which is unsupported on RHEL8 2024-10-09 11:45:24 +02:00
Jesus Checa Hidalgo
2e5951b0d7 Add exception for badfuncs inspection (rpminspect)
As compiler-rt libraries are now part of llvm package, we need to set
the exception we previously had on compiler-rt repo in the llvm repo.
2024-10-09 11:25:04 +02:00
Nikita Popov
10f88a7d35 Only disable rpath during installation
We currently disable rpath during both build and install. Instead,
we use LD_LIBRARY_PATH to allow the built clang to find the
libLLVM.so etc objects.

However, this does not work well if the system clang and the
clang being built have the same version. During the build, we
use both the system clang and the just-built clang, and they
need to use the system and just-built shared objects respectively.
However, use of LD_LIBRARY_PATH causes us to always use the
just-built objects as long as the versions match.

This is a problem in two scenarios: When building compat packages
for the current system LLVM version, we mix system clang with
compat libraries, which assume different paths. And when building
release candidates, a build using a previous rc of a newer rc
may use ABI-incompatible objects, because we don't version sonames
on rc versions.

Fix this by keeping the rpath during the build and only stripping
it on installation using the CMAKE_SKIP_INSTALL_RPATH option.
For manually installed binaries, we need to also manually strip
the rpath using chrpath.

This way system clang will use system libraries, and just-built
clang will use just-built libraries.
2024-10-08 16:30:46 +02:00
Konrad Kleine
4f254e51b9 Add "Cleanup CMake arguments" commit to blame ignore list 2024-10-07 20:10:45 +00:00
Konrad Kleine
485e5ec719 Cleanup CMake arguments
Before we had a very long list of CMake arguments.

There was no room for annotation through comments. Now we have a new
global called `%cmake_config_args` that one can append to.

I've created these `#regions` to group the options for each sub-project:

```
  #region clang options
  #region compiler-rt options
  #region docs options
  #region lldb options
  #region llvm options
  #region openmp options
  #region test options
  #region misc options
```
2024-10-07 20:10:45 +00:00
Maxwell G
a11e4ffa4e Add 'Provides: clangd' to the clang-tools-extra subpackage 2024-10-07 14:51:54 -03:00
Nikita Popov
b7ae7ced72 Add tasking/issue-69733.c to flaky test list
This spurious failure has been observed both on aarch64 in fedora
rawhide koji and on ppc64le in c10s koji.

I've filed an upstream issue to track this here:
https://github.com/llvm/llvm-project/issues/111140
2024-10-04 14:27:27 +02:00
Nikita Popov
836ee0844f Add provides for libomp(major) and libomp-devel(major)
Forward-port from
https://src.fedoraproject.org/rpms/libomp18/pull-request/1.
2024-10-04 09:50:27 +02:00
Konrad Kleine
4251de274b Add #region #endregion comments
Each `#region XY` now has an `#endregion XY` instead of just
`#endregion`. This is optional and `XY` does not have to be repeated for
the "system" to work but it makes working with regions a bit more
convenient.

```
  #region globals...

  #region packages...

  #region prep...

  #region build...

  #region install...

  #region check...

  #region misc...

  #region files...

  #region changelog...
```
2024-10-02 13:28:19 +00:00
Konrad Kleine
031f5fb3e8 Add changelog entry for 19.1.0 update 2024-10-02 13:14:36 +00:00
Konrad Kleine
f5ae12659d Copy over %changelog from b6b17b013e 2024-10-02 13:03:46 +00:00
Konrad Kleine
6da4543be7 Remove %llvm_snapshot_changelog_entry 2024-10-02 13:03:46 +00:00
Konrad Kleine
ffcc9eb8ec Add .git-blame-ignore-revs
When merging the `*.spec.inc` files into `llvm.spec` this became
necessary to preserve git history on llvm.spec.
2024-10-02 11:28:12 +00:00
Konrad Kleine
9984e82c50 Merge *.spec.inc files into llvm.spec
This commit should be listed in .git-blame-ignore-revs because it moved
the content of the files untouched into llvm.spec.
2024-10-02 11:27:32 +00:00
Nikita Popov
3b5b15045a Pass --with=snapshot_build in copr Makefile
We now no longer default to this in the spec file, so pass it
explicitly on copr.
2024-09-30 08:38:00 +00:00
Konrad Kleine
630d2eb2b0 Disable snapshots by default
Since https://github.com/fedora-llvm-team/llvm-snapshots/pull/754 all
build chroots on Copr that are used for snapshot building will have
`--with=snapshot_build` set.

This addresses the concern [1] that Copr specific conditionals are
discouraged if not forbidden in spec files.

[1]: https://src.fedoraproject.org/rpms/llvm/pull-request/301#comment-221782
2024-09-30 08:37:45 +00:00
Nikita Popov
870cda1c16 Rebase RHEL myst_parser patch 2024-09-30 08:37:29 +00:00
Nikita Popov
388a193671 Remove clang-pseudo
Removed in https://github.com/llvm/llvm-project/pull/109154.
2024-09-24 09:19:20 +00:00
Nikita Popov
3cc5391899 Remove clang-rename
Removed in https://github.com/llvm/llvm-project/pull/108988.
2024-09-20 09:53:54 +00:00