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
This commit is contained in:
Konrad Kleine 2024-05-17 09:27:48 +00:00 committed by Timm Bäder
parent 361c194ff0
commit 7f69c7ebdf
10 changed files with 152 additions and 91 deletions

View file

@ -34,6 +34,7 @@ llvm_snapshot_changelog_entry="* $(date +'%a %b %d %Y') LLVM snapshot - ${llvm_s
tempfile=$(mktemp) tempfile=$(mktemp)
cat > $tempfile <<EOF cat > $tempfile <<EOF
%if %{with snapshot_build}
%global maj_ver ${llvm_snapshot_version_major} %global maj_ver ${llvm_snapshot_version_major}
%global min_ver ${llvm_snapshot_version_minor} %global min_ver ${llvm_snapshot_version_minor}
%global patch_ver ${llvm_snapshot_version_patch} %global patch_ver ${llvm_snapshot_version_patch}
@ -49,6 +50,7 @@ cat > $tempfile <<EOF
%global llvm_snapshot_git_revision_short ${llvm_snapshot_git_revision_short} %global llvm_snapshot_git_revision_short ${llvm_snapshot_git_revision_short}
%global llvm_snapshot_version_suffix ${llvm_snapshot_version_suffix} %global llvm_snapshot_version_suffix ${llvm_snapshot_version_suffix}
%global llvm_snapshot_changelog_entry ${llvm_snapshot_changelog_entry} %global llvm_snapshot_changelog_entry ${llvm_snapshot_changelog_entry}
%endif
EOF EOF
# One for logs # One for logs

1
.gitignore vendored
View file

@ -11,3 +11,4 @@
/BUILD /BUILD
/BUILDROOT /BUILDROOT
/out /out
/version.spec.inc

202
Makefile
View file

@ -1,93 +1,155 @@
YYYYMMDD=$(shell date +%Y%m%d) YYYYMMDD=$(shell date +%Y%m%d)
OUTDIR=$(shell pwd)/out
SPEC=llvm.spec
BUILDDIR=$(shell pwd)/BUILD
BUILDROOTDIR=$(shell pwd)/BUILD
SOURCEDIR=$(shell pwd) SOURCEDIR=$(shell pwd)
SPEC=llvm.spec
FEDORA_RELEASE=f40 FEDORA_RELEASE=f40
.PHONY: setup # Map deprecated targets to new targets
setup: .PHONY: setup local-rpm local-srpm local-prep local-clean
mkdir -pv $(OUTDIR) setup local-rpm local-srpm local-prep local-clean:
mkdir -pv $(BUILDDIR) $(eval mapped_target:=$(subst setup,snapshot-setup,$(MAKECMDGOALS)))
mkdir -pv $(BUILDROOTDIR) $(eval mapped_target:=$(subst local-clean,snapshot-clean,$(mapped_target)))
mkdir -pv $(SOURCEDIR) $(eval mapped_target:=$(subst local-,snapshot-,$(mapped_target)))
$(info WARNING: "$(MAKECMDGOALS)" is deprecated. Instead running "$(mapped_target)")
$(MAKE) $(mapped_target)
.PHONY: snapshot-vars
snapshot-vars:
$(eval RESULTDIR:=$(shell pwd)/snapshot-results)
.PHONY: release-vars
release-vars:
$(eval RESULTDIR:=$(shell pwd)/release-results)
.PHONY: prep
prep:
mkdir -pv $(RESULTDIR)
.PHONY: snapshot-setup
snapshot-setup: snapshot-vars prep
YYYYMMDD=$(YYYYMMDD) ./.copr/snapshot-info.sh > $(SOURCEDIR)/version.spec.inc YYYYMMDD=$(YYYYMMDD) ./.copr/snapshot-info.sh > $(SOURCEDIR)/version.spec.inc
spectool -g --define "_sourcedir $(SOURCEDIR)" llvm.spec spectool -g --define "_sourcedir $(SOURCEDIR)" --define "_with_snapshot_build 1" $(SPEC)
.PHONY: local-srpm .PHONY: release-setup
local-srpm: setup release-setup: release-vars prep
spectool -g --define "_sourcedir $(SOURCEDIR)" $(SPEC)
.PHONY: snapshot-srpm
snapshot-srpm: snapshot-setup
rpmbuild \ rpmbuild \
--define "yyyymmdd $(YYYYMMDD)" \ --with=snapshot_build \
--define "_srcrpmdir $(OUTDIR)" \ --define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \ --define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
-bs $(SPEC) -bs $(SPEC)
.PHONY: local-rpm .PHONY: release-srpm
local-rpm: setup release-srpm: release-setup
fedpkg --release $(FEDORA_RELEASE) -v \ rpmbuild \
local \ --define "_rpmdir $(RESULTDIR)" \
--builddir $(BUILDDIR) \ --define "_sourcedir $(SOURCEDIR)" \
--buildrootdir $(BUILDROOTDIR) \ --define "_specdir $(SOURCEDIR)" \
--define "yyyymmdd $(YYYYMMDD)" \ --define "_srcrpmdir $(RESULTDIR)" \
-- $(SPEC) --noclean --define "_builddir $(RESULTDIR)" \
-bs $(SPEC)
.PHONY: local-clean .PHONY: snapshot-rpm
local-clean: snapshot-rpm: snapshot-setup
-rm -rf $(BUILDDIR) rpmbuild \
-rm -rf $(BUILDROOTDIR) --with=snapshot_build \
-rm -rf $(OUTDIR) --define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bb $(SPEC)
.PHONY: release-rpm
release-rpm: release-setup
rpmbuild \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bb $(SPEC)
.PHONY: snapshot-clean
snapshot-clean: snapshot-vars _clean
.PHONY: release-clean
release-clean: release-vars _clean
.PHONY: _clean
_clean:
-rm -rf $(RESULTDIR)
-rm -f *.txt -rm -f *.txt
-rm -f *.tar.xz -rm -f *.tar.xz
-rm -f *.tar.xz.sig -rm -f *.tar.xz.sig
-rm -rf x86_64 -rm -rf $(shell uname -m)
-rm -rf noarch -rm -rf noarch
-rm -rf *.src.rpm -rm -rf *.src.rpm
-rm -rf /tmp/lto-llvm-*.o -rm -rf /tmp/lto-llvm-*.o
.PHONY: local-list-check .PHONY: snapshot-prep
local-list-check: setup snapshot-prep: snapshot-setup
fedpkg --release $(FEDORA_RELEASE) -v \ rpmbuild \
local \ --with=snapshot_build \
--builddir $(BUILDDIR) \ --define "_rpmdir $(RESULTDIR)" \
--buildrootdir $(BUILDROOTDIR) \ --define "_sourcedir $(SOURCEDIR)" \
--define "yyyymmdd $(YYYYMMDD)" \ --define "_specdir $(SOURCEDIR)" \
-- $(SPEC) -bl --define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bp $(SPEC)
.PHONY: local-prep .PHONY: release-prep
local-prep: setup release-prep: releae-setup
fedpkg --release $(FEDORA_RELEASE) -v \ rpmbuild \
prep \ --define "_rpmdir $(RESULTDIR)" \
--builddir $(BUILDDIR) \ --define "_sourcedir $(SOURCEDIR)" \
--buildrootdir $(BUILDROOTDIR) \ --define "_specdir $(SOURCEDIR)" \
--define "yyyymmdd $(YYYYMMDD)" \ --define "_srcrpmdir $(RESULTDIR)" \
-- $(SPEC) --define "_builddir $(RESULTDIR)" \
--noclean \
-bp $(SPEC)
# .PHONY: local-list-check
# local-list-check: setup
# fedpkg --release $(FEDORA_RELEASE) -v \
# local \
# --builddir $(BUILDDIR) \
# --buildrootdir $(BUILDROOTDIR) \
#
# --with=snapshot_build \
# -- $(SPEC) -bl
.PHONY: local-tmt-vm # .PHONY: local-tmt-vm
local-tmt-vm: # local-tmt-vm:
# This is to ensure the required packages are installed # # This is to ensure the required packages are installed
rpm -q tmt tmt+provision-virtual # rpm -q tmt tmt+provision-virtual
# This is to check if you've started libvirt # # This is to check if you've started libvirt
# If this fails, run: sudo systemctl start libvirtd # # If this fails, run: sudo systemctl start libvirtd
# systemctl status libvirtd --no-pager # # systemctl status libvirtd --no-pager
# In case of: Failed to boot testcloud instance (authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage') # # In case of: Failed to boot testcloud instance (authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage')
# Add yourself to libvirt group: sudo usermod -a -G libvirt $USER # # Add yourself to libvirt group: sudo usermod -a -G libvirt $USER
cat /etc/group | grep libvirt | grep $(USER) # cat /etc/group | grep libvirt | grep $(USER)
tmt \ # tmt \
-c distro=fedora-rawhide \ # -c distro=fedora-rawhide \
-c arch=x86_64 \ # -c arch=x86_64 \
-c snapshot=20240124 # -c snapshot=20240124
run \ # run \
-avv \ # -avv \
provision \ # provision \
-h virtual.testcloud \ # -h virtual.testcloud \
-c system \ # -c system \
-i fedora-rawhide \ # -i fedora-rawhide \
prepare \ # prepare \
-h install \ # -h install \
-c fedora-llvm-team/llvm-snapshots-big-merge-20240124 \ # -c fedora-llvm-team/llvm-snapshots-big-merge-20240124 \
test \ # test \
report # report

View file

@ -73,7 +73,11 @@ cd llvm
\ \
\ \
%if %{without compat_build} %if %{without compat_build}
%if %{with snapshot_build}
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp;offload" \ -DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp;offload" \
%else
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp" \
%endif
%endif %endif
\ \
\ \

View file

@ -1,5 +1,8 @@
%{?llvm_snapshot_changelog_entry} %{?llvm_snapshot_changelog_entry}
* Fri May 17 2024 Konrad Kleine <kkleine@redhat.com> - 18.1.5
- Update to 18.1.5
* Tue Aug 01 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 17.0.0~rc1-2 * Tue Aug 01 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 17.0.0~rc1-2
- Enable LLVM_UNREACHABLE_OPTIMIZE temporarily - Enable LLVM_UNREACHABLE_OPTIMIZE temporarily

View file

@ -1,4 +1,3 @@
%bcond_without snapshot_build
# Components enabled if supported by target architecture: # Components enabled if supported by target architecture:
%define gold_arches %{ix86} x86_64 aarch64 %{power64} s390x %define gold_arches %{ix86} x86_64 aarch64 %{power64} s390x
%ifarch %{gold_arches} %ifarch %{gold_arches}
@ -29,9 +28,10 @@
%undefine _include_frame_pointers %undefine _include_frame_pointers
# Suffixless tarball name (essentially: basename -s .tar.xz llvm-project-17.0.6.src.tar.xz) # Suffixless tarball name (essentially: basename -s .tar.xz llvm-project-17.0.6.src.tar.xz)
%global src_tarball_dir llvm-project-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src
%if %{with snapshot_build} %if %{with snapshot_build}
%global src_tarball_dir llvm-project-%{llvm_snapshot_git_revision} %global src_tarball_dir llvm-project-%{llvm_snapshot_git_revision}
%else
%global src_tarball_dir llvm-project-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src
%endif %endif
#region LLVM globals #region LLVM globals

View file

@ -8,7 +8,9 @@ Patch2002: 0003-PATCH-clang-Don-t-install-static-libraries.patch
Patch2005: 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch Patch2005: 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
#region LLD patches #region LLD patches
Patch3001: 0001-Always-build-shared-libs-for-LLD.patch %if %{with snapshot_build}
Patch3002: 0001-Always-build-shared-libs-for-LLD.patch
%endif
#endregion #endregion
# # Drop the following patch after debugedit adds support to DWARF-5: # # Drop the following patch after debugedit adds support to DWARF-5:

View file

@ -1,6 +1,6 @@
%if %{without snapshot_build} %if %{without snapshot_build}
# llvm # llvm
%{gpgverify} --keyring='%{SOURCE1006}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %{gpgverify} --keyring='%{SOURCE6}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%endif %endif
# -T : Do Not Perform Default Archive Unpacking (without this, the <n>th source would be unpacked twice) # -T : Do Not Perform Default Archive Unpacking (without this, the <n>th source would be unpacked twice)

View file

@ -2,8 +2,8 @@
Source0: https://github.com/llvm/llvm-project/archive/%{llvm_snapshot_git_revision}.tar.gz Source0: https://github.com/llvm/llvm-project/archive/%{llvm_snapshot_git_revision}.tar.gz
%else %else
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz
Source1001: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz.sig Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz.sig
Source1006: release-keys.asc Source6: release-keys.asc
%endif %endif
%if %{without compat_build} %if %{without compat_build}
@ -12,7 +12,9 @@ Source2005: macros.%{pkg_name_clang}
# Sources we use to split up the main spec file in sections so that we can more # Sources we use to split up the main spec file in sections so that we can more
# easily see what specfile sections are touched by a patch. # easily see what specfile sections are touched by a patch.
%if %{with snapshot_build}
Source1000: version.spec.inc Source1000: version.spec.inc
%endif
Source1001: build.spec.inc Source1001: build.spec.inc
Source1002: changelog.spec.inc Source1002: changelog.spec.inc
Source1003: check.spec.inc Source1003: check.spec.inc

View file

@ -1,15 +0,0 @@
%global maj_ver 18
%global min_ver 0
%global patch_ver 0
%undefine rc_ver
%global llvm_snapshot_version 18.0.0
%global llvm_snapshot_version_tag 18.0.0~pre20231225.ga041da31093303
%global llvm_snapshot_version_major 18
%global llvm_snapshot_version_minor 0
%global llvm_snapshot_version_patch 0
%global llvm_snapshot_yyyymmdd 20231225
%global llvm_snapshot_git_revision a041da31093303b02b6da5fe919a0a3c234eb466
%global llvm_snapshot_git_revision_short a041da31093303
%global llvm_snapshot_version_suffix pre20231225.ga041da31093303
%global llvm_snapshot_changelog_entry * Mon Dec 25 2023 LLVM snapshot - 18.0.0~pre20231225.ga041da31093303