Commit graph

744 commits

Author SHA1 Message Date
Nikita Popov
d271547ac2 Don't use wildcard for lld binaries
Otherwise we'll also ship lldb. Instead explicitly list lld and
lld-link.
2024-07-17 14:24:59 +02:00
Nikita Popov
0d402a179a Don't xfail omp_collapse tests on ppc64le
The tests pass: https://download.copr.fedorainfracloud.org/results/@fedora-llvm-team/llvm-snapshots-big-merge-20240716/fedora-rawhide-ppc64le/07737001-llvm/builder-live.log.gz

The tests do fail on s390x. Note that the thread_state_{1,2}.c tests
are already part of the ppc64le exclusive xfail list above, so
we can make this one specific to s390x.
2024-07-16 12:04:40 +02:00
Nikita Popov
4be1491f26 Actually disable lldb tests
Make sure to use %% for macros inside comments.
2024-07-16 09:52:51 +02:00
Nikita Popov
d3496ff556 Fix copr check
Per https://docs.pagure.org/copr.copr/user_documentation.html#rpm-macros
the `%copr_username` macro includes `@` at the start.
2024-07-15 09:13:31 +02:00
Konrad Kleine
626da9456a Prepare non-snapshot builds
Remove version.spec.inc from git
================================

We no longer track `version.spec.inc` in git. This is useful for
development. If we build a snapshot, the file is required but if we
build a `release` build (see below), then we don't include it.

Make improvements
=================

We distinguish between `snapshot-` and `release-` builds now in the
`Makefile`. These old targets are mapped to their new counterparts and a
deprecation warning is shown:

* `setup` -> `snapshot-setup`
* `local-rpm` -> `snapshot-rpm`
* `local-srpm` -> `snapshot-srpm`
* `local-prep` -> `snapshot-prep`
* `local-clean` -> `snapshot-clean`

We also have these new Make targets that run the build process with a
release tarball instead:

* `release-setup`
* `release-rpm`
* `release-srpm`
* `release-prep`
* `release-clean`

The targets `local-list-check` and `local-tmt-vm` have been commented
out because I think they were not needed. I just kept them for future
reference of research done in those areas.

All builds described by the `Makefile` are still local and no `mock` is
involved. I find this the easiest to debug.

Toggle default bcond state for snapshot_build
=============================================

We want to be able to build non-snapshot releases with this repo. That's
why be default the build condition `snapshot_build` is off. So
only when you explicitly enable `--with=snapshot_build` or define
`--define "_with_snapshot_build 1"` you'll be able to build a snapshot.
If however the build happens in Copr with a namespace that begins with
`fedora-llvm-team/llvm-snapshots-`, then the build condition is ON by
default and there's no need to enable it explicitly with `--with=snapshot_build`.

Things related to release update
================================

* Add llvm-project tarball and signature to sources
* Fix: error: source 1001 defined multiple times
* Fix: error: source 1006 defined multiple times
* Fix missing newline
* Conditionally apply 0001-Always-build-shared-libs-for-LLD.patch
* Only enable offload runtime in snapshot mode

Misc.
=====

* Add missing prep dependency
2024-07-11 18:47:43 +00:00
Konrad Kleine
6c6af36acb lldb: Fail to configure if certain requirements are not met for testing 2024-07-11 11:37:05 +00:00
Konrad Kleine
d6b3a2dab8 lldb: disable tests for lldb 2024-07-11 11:36:42 +00:00
Konrad Kleine
323ee2723e lldb: fix ModuleNotFoundError: No module named 'pexpect'
We've seen a lot of tests that were missing the pexpect python module
and that resulted in a state of
[`UNRESOLVED`](https://llvm.org/docs/CommandGuide/lit.html).
2024-07-10 12:52:49 +00:00
Konrad Kleine
b79ab4f3cc Remove timestamp prefix in log lines
With the llvm-build-stats we have what we wanted.
2024-07-09 19:04:48 +00:00
Konrad Kleine
5ce95c133e lld: move ldconfig_scriptlets into llvm.spec 2024-07-09 18:55:12 +00:00
Konrad Kleine
b167b820db lldb: add BuildRequires: procps-ng
This is to mitigate `/bin/sh: line 1: ps: command not found` in the
build logs.
2024-07-09 18:55:12 +00:00
Konrad Kleine
c00f9f2e11 Reorganize %check section 2024-07-09 18:55:12 +00:00
Nikita Popov
78289e831d Remove compact_unwind_encoding.h patch
This is no longer necessary now that we're building from the monorepo.
2024-07-09 17:37:28 +02:00
Nikita Popov
1c8a88c870 Fix python3-clang
Drop confusing `cd ..` so we stay in the root of the LLVM sources
and the install command succeeds.
2024-07-08 14:15:52 +02:00
Nikita Popov
4a3b0b3b90 Only ship libclang* in clang-libs
Previously we were also shipping libLLVM* and libLLD*.
2024-07-08 11:19:40 +02:00
Tulio Magno Quites Machado Filho
9070ddbbbb Add subpackage llvm-toolset
Related: RHEL-45729
2024-07-03 09:28:39 -03:00
Konrad Kleine
26fc541eba Merge #234 DRAFT: Add lldb to big-merge 2024-07-03 11:06:19 +00:00
Nikita Popov
3f1eb51952 Only put libLLVM*.a into llvm-static
Currently we also accidentally ship libomptarget.devicertl.a.
2024-07-03 11:30:09 +02:00
Konrad Kleine
802e5ea8aa Add another flaky lldb test to exclude list
This test seems flaky:

lldb-api :: functionalities/fork/concurrent_vfork/TestConcurrentVFork.py
2024-07-03 07:48:20 +00:00
Konrad Kleine
ff2779276f Makefile fixes
We can prefetch the sources using spectool as usual.
2024-07-03 07:47:36 +00:00
Konrad Kleine
393325cce1 Include liblldb*.so in %files
See
https://src.fedoraproject.org/rpms/llvm/pull-request/234#comment-206914
2024-07-02 21:29:41 +00:00
Konrad Kleine
86fec774e2 Move all BuildRequires: tags to llvm.spec
See
https://src.fedoraproject.org/rpms/llvm/pull-request/234#comment-206917
2024-07-02 21:29:41 +00:00
Konrad Kleine
459476a447 Remove %ldconfig_scriptlets and remove liblldb*.a files 2024-07-02 21:29:41 +00:00
Konrad Kleine
edb4034ecd Don't clean after building the RPM 2024-07-02 21:29:41 +00:00
Konrad Kleine
5b13ad894f Filter out flaky, unresolved and broken lldb test 2024-07-02 16:45:48 +02:00
Konrad Kleine
9cf03a4db7 Avoid building lldb docs
This should fix this error:

```
Jul 01 12:48:27 FAILED: tools/lldb/docs/CMakeFiles/docs-lldb-html
/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/llvm/redhat-linux-build/tools/lldb/docs/CMakeFiles/docs-lldb-html
Jul 01 12:48:27 cd
/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/llvm/redhat-linux-build/tools/lldb/docs
&& /usr/bin/cmake -E env
LLDB_SWIG_MODULE=/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/llvm/redhat-linux-build/tools/lldb/docs
/usr/bin/sphinx-build-3 -b html -d
/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/llvm/redhat-linux-build/tools/lldb/docs/_doctrees-lldb-html
-q -t builder-html -D version=19 -D release=mainline
/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/lldb/docs
/home/fedora/src/llvm-rpms/llvm-big-merge/BUILD/llvm-project-e19ac0dcfd7357161210f157ed0559836e88155f/llvm/redhat-linux-build/tools/lldb/docs/html
Jul 01 12:48:27
Jul 01 12:48:27 Extension error:
Jul 01 12:48:27 Could not import extension sphinx_automodapi.automodapi
(exception: No module named 'sphinx_automodapi')
Jul 01 12:48:27 install sphinx_automodapi with /usr/bin/python3 -m pip
install sphinx_automodapi
Jul 01 12:48:27 install sphinx furo theme with /usr/bin/python3 -m pip
install furo
```

the two python modules are not in fedroa unfortunately.
2024-07-02 16:45:48 +02:00
Konrad Kleine
f7fcef719f Add lldb to big-merge
See https://github.com/fedora-llvm-team/llvm-snapshots/issues/573
2024-07-02 16:45:48 +02:00
Konrad Kleine
65f59d5e89 Add lldb.spec from which we integrate 2024-07-02 16:45:48 +02:00
Konrad Kleine
0b4a620d6d Fix lit filtering
I forgot to add the 'g' modifier to sed. Before only the first occurence
of a '.' was replaced in a path and not every dot.
2024-07-02 16:41:53 +02:00
Konrad Kleine
d8e9deb6da Remove HTML asset files from /usr/share/clang-doc
In https://github.com/fedora-llvm-team/llvm-snapshots/issues/564#issuecomment-2191023635
we noticed that `clang-doc-default-stylesheet.css` and `index.js` are no
longer installed to `/usr/share/clang` but `/usr/share/clang-doc`
instead. This addresses the [change in upstream](https://github.com/llvm/llvm-project/pull/96555).
2024-06-26 09:43:38 +02:00
Tom Stellard
f6b64e7c77 Add directory ownership for libomp cmake dir 2024-06-25 10:37:36 +00:00
Konrad Kleine
a34b2a7947 Format all files with 'pre-commit run -a' 2024-06-25 12:22:22 +02:00
Konrad Kleine
93536f47fa Add pre-commit 2024-06-25 12:14:21 +02:00
Tom Stellard
8e21cf96b0 Build libclang-cpp.so separately to avoid OOM errors
We were running out of memory linking this on the ppc64le COPR builders.
2024-06-10 12:56:45 +00:00
Nikita Popov
91bcaea8e2 Rebase LLD patch 2024-06-05 08:47:13 +02:00
Nikita Popov
c5be72cd34 Ship .ninja_log in llvm-build-stats package
This should make it easier to analyze which parts of the build
are slow. The new package is only available in snapshot builds,
we don't want to ship it in production.
2024-05-31 16:41:44 +02:00
Nikita Popov
c1ee2896c0 Remove 32-bit arm related conditionals
32-bit ARM hasn't been supported for quite a while, remove the
related conditions. This has already happened for the non-big-merge
branches.
2024-05-30 10:23:13 +02:00
Nikita Popov
13cd3ecc2e Add new reduce-chunk-list binary
Added in https://github.com/llvm/llvm-project/pull/89470.
2024-05-29 11:24:03 +02:00
Nikita Popov
3e8f8bf09f Exclude hwasan_symbolize on i686 2024-05-28 16:01:28 +02:00
Nikita Popov
4f3c9f6743 Add i686 -> i386 compiler-rt symlink
This ports the change from https://src.fedoraproject.org/rpms/compiler-rt/pull-request/67
to big-merge, which is a bit more complicated here due to the
explicit file lists.

By default compiler_rt_triple is the same as llvm_triple. For x86
it is i386-redhat-linux-gnu instead, with a symlink to the
llvm_triple i686-redhat-linux-gnu.

And then the file list also needs to ship that symlink.
2024-05-28 15:57:25 +02:00
Nikita Popov
21909abc79 Fix clang resource directory path
The clang resource directory is always in lib/, while this was
creating the directories in lib64 (for 64-bit symbols).

This should fix the following error on ppc64le:

> error: Directory not found: /builddir/build/BUILDROOT/llvm-19.0.0~pre20240528.g1de1ee9cbabd64-1.fc39.ppc64le/usr/lib/clang/19/bin
2024-05-28 09:41:56 +00:00
Nikita Popov
076286ee98 Remove fedora 38 related workarounds
This chroot is no longer supported on copr.
2024-05-28 08:36:49 +02:00
Nikita Popov
1654df4ed3 Make lto handling similar to current rawhide
Have a --with lto_build option, where LTO is enabled by default
for everything except i686 and riscv. Use that flag to condition
whether `-DLLVM_UNITTEST_LINK_FLAGS` is passed.

Additionally, make use of the new Fat LTO functionality in rawhide
to use `-fno-lto` instead of `-Wl,-plugin-opt=O0` to save more
time linking unit tests.
2024-05-27 12:42:49 +00:00
Nikita Popov
dd570eaeab Clean up the lto_cflags mess
We were defining lto_cflags in three places. It looks like on
aarch64 nil won (LTO disabled), while on other architectures
`-flto=thin` won.

I think on rawhide, this means that we're currently shipping
bitcode in static archives, because the required
`-ffat-lto-objects` option from redhat-rpm-config is missing.

Resolve this by leaving the option at its default value --
if enabling it on aarch64 causes issues, we can disable it just
there again.

Also reenable the LLVM_UNITTEST_LINK_FLAGS option, which should
reduce the amount of time LTO takes.
2024-05-27 12:42:49 +00:00
Nikita Popov
bdef5bb591 More fixes for file lists
Fix these errors on s390x by excluding the files on that arch:

    File not found: /builddir/build/BUILDROOT/llvm-19.0.0~pre20240526.gc87a7b3bdb6737-1.fc41.s390x/usr/lib/clang/19/lib/s390x-redhat-linux-gnu/clang_rt.crtbegin.o
    File not found: /builddir/build/BUILDROOT/llvm-19.0.0~pre20240526.gc87a7b3bdb6737-1.fc41.s390x/usr/lib/clang/19/lib/s390x-redhat-linux-gnu/clang_rt.crtend.o
    File not found: /builddir/build/BUILDROOT/llvm-19.0.0~pre20240526.gc87a7b3bdb6737-1.fc41.s390x/usr/lib/clang/19/lib/s390x-redhat-linux-gnu/liborc_rt.a

Fix this error on i686 by explicitly creating the directory.
This matches what the implementation did pre-big-merge. I think
we do want to keep this directory structure consistent across all
arches.

    Directory not found: /builddir/build/BUILDROOT/llvm-19.0.0~pre20240526.gc87a7b3bdb6737-1.fc41.i386/usr/lib/clang/19/bin
2024-05-27 09:05:05 +02:00
Nikita Popov
9c52ec74ce Fix i386 build
These binaries are not created on i386, so don't try to remove
them. Alternatively could use rm -f.
2024-05-23 16:07:15 +02:00
Konrad Kleine
8d45d61a8d Fix ModuleNotFoundError: No module named 'myst_parser'
This should fix this error which appears on RHEL only:

```
Configuration error:
There is a programmable error in your configuration file:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/sphinx/config.py", line 326, in eval_config_file
    execfile_(filename, namespace)
  File "/usr/lib/python3.9/site-packages/sphinx/util/pycompat.py", line 88, in execfile_
    exec(code, _globals)
  File "/builddir/build/BUILD/llvm-project-c1d5cc99c6ba8e897ea145dbb2221a155b5e3e5a/llvm/redhat-linux-build/tools/clang/docs/conf.py", line 42, in <module>
    import myst_parser
ModuleNotFoundError: No module named 'myst_parser'
```

See also https://github.com/fedora-llvm-team/llvm-snapshots/issues/492
2024-05-22 23:42:30 +02:00
Nikita Popov
e0a9a93370 Use wildcard for sanitizer ignore/abi lists
The list of supported sanitizers differs per target, and depending
on that some of these files may or may not be present. Use a
wildcard rather than explicitly listing this out.
2024-05-22 09:23:29 +02:00
Tulio Magno Quites Machado Filho
b9e4db6642 Fix rhbz #2248872
Ensure the versioned llvm-config alternative gets removed during major
upgrades of the non-compat package.

Also add code that removes the versioned llvm-config alternatives of
the previous 3 LLVM versions. These versions didn't remove their own
versioned llvm-config alternative, leading to broken output, e.g.
llvm-config-16 points to llvm-config-64 from LLVM 17.
2024-05-21 12:18:51 +00:00
Nikita Popov
18588fefc1 Use wildcard for libclang_rt libraries
https://github.com/llvm/llvm-project/pull/92456 added a new
libclang_rt.ctx_profile.a library.

Given that these all have a fixed prefix, I think it's fine to
use a wildcard for them instead of explicitly listing them.
2024-05-20 06:49:48 +02:00