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.
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`.
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
* %check: export LD_LIBRARY_PATH because runtimes use external cmake projects that wouldn't find libclang++.so
* %check: use LLVM's LIT_XFAIL to mark tests that are expected to fail and don't just delete them
* clang: bring over *.patch files
* clang: remove build requires tags from clang package that are already defined by main llvm package
* clang: remove duplicates found in llvm globals and use %{pkg_datadir} instead of %{install_datadir}
* clang: rename and use pkg_name -> pkg_name_clang
* clang: use %{pkg_name_clang} instead of %{name}
* compiler-rt and libomp: wrap in %if %{without compat_build}
* libomp: also build libomp for s390x (See https://github.com/llvm/llvm-project/pull/66081)
* libomp: exclude libomp-devel on s390x just like libomp itself
* libomp: introduce pkg_name_libomp and cleanup the globals
* libomp: remove gdb-plugin (NEED TO CONFIRM IF THIS IS REALLY TRUE)
* libomp: filter out flaky libomp test: ompt/teams/distribute_dispatch.c
* llvm: add BuildRequires: graphviz to llvm-doc
* llvm: use %{pkg_name_llvm} instead of %{name}
* make: added temporary Makefile so I can more easily run srpm or rpm builds locally
* make: Added local-tmt-vm target (not really useful yet)
* rpm: for non-RHEL add prefix like "Jan 05 16:17:06" to every log line This should help in finding out how long things take to build/install/...
* rpm: fully specify %files for top-level packages
* rpm: make all packages fully qualified
* rpm: obsolete llvm-snapshot-builder
* rpm: remove BuildRequires: python3-lit because we have it in-tree
* rpm: remove BuildRequires: tags for clang and llvm specifics as we're building in-tree
* rpm: rename %llvm_srcdir -> %srcdir_llvm
* rpm: rename %pkg_name -> %pkg_name_llvm
* rpm: use full qualified name in %description
* rpm: use region comments in spec file to group by package. This allows editors to fold text to get a better overview
* rpmlint: update rc file to reflect clang and compiler-rt (libomp has no rpmlint rc file)
* use python-lit from within tree