mirror of
https://src.fedoraproject.org/rpms/llvm.git
synced 2024-11-24 09:32:42 +00:00
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:
parent
361c194ff0
commit
7f69c7ebdf
10 changed files with 152 additions and 91 deletions
|
@ -34,6 +34,7 @@ llvm_snapshot_changelog_entry="* $(date +'%a %b %d %Y') LLVM snapshot - ${llvm_s
|
|||
|
||||
tempfile=$(mktemp)
|
||||
cat > $tempfile <<EOF
|
||||
%if %{with snapshot_build}
|
||||
%global maj_ver ${llvm_snapshot_version_major}
|
||||
%global min_ver ${llvm_snapshot_version_minor}
|
||||
%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_version_suffix ${llvm_snapshot_version_suffix}
|
||||
%global llvm_snapshot_changelog_entry ${llvm_snapshot_changelog_entry}
|
||||
%endif
|
||||
EOF
|
||||
|
||||
# One for logs
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -11,3 +11,4 @@
|
|||
/BUILD
|
||||
/BUILDROOT
|
||||
/out
|
||||
/version.spec.inc
|
||||
|
|
202
Makefile
202
Makefile
|
@ -1,93 +1,155 @@
|
|||
|
||||
YYYYMMDD=$(shell date +%Y%m%d)
|
||||
OUTDIR=$(shell pwd)/out
|
||||
SPEC=llvm.spec
|
||||
BUILDDIR=$(shell pwd)/BUILD
|
||||
BUILDROOTDIR=$(shell pwd)/BUILD
|
||||
SOURCEDIR=$(shell pwd)
|
||||
SPEC=llvm.spec
|
||||
FEDORA_RELEASE=f40
|
||||
|
||||
.PHONY: setup
|
||||
setup:
|
||||
mkdir -pv $(OUTDIR)
|
||||
mkdir -pv $(BUILDDIR)
|
||||
mkdir -pv $(BUILDROOTDIR)
|
||||
mkdir -pv $(SOURCEDIR)
|
||||
# Map deprecated targets to new targets
|
||||
.PHONY: setup local-rpm local-srpm local-prep local-clean
|
||||
setup local-rpm local-srpm local-prep local-clean:
|
||||
$(eval mapped_target:=$(subst setup,snapshot-setup,$(MAKECMDGOALS)))
|
||||
$(eval mapped_target:=$(subst local-clean,snapshot-clean,$(mapped_target)))
|
||||
$(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
|
||||
spectool -g --define "_sourcedir $(SOURCEDIR)" llvm.spec
|
||||
spectool -g --define "_sourcedir $(SOURCEDIR)" --define "_with_snapshot_build 1" $(SPEC)
|
||||
|
||||
.PHONY: local-srpm
|
||||
local-srpm: setup
|
||||
.PHONY: release-setup
|
||||
release-setup: release-vars prep
|
||||
spectool -g --define "_sourcedir $(SOURCEDIR)" $(SPEC)
|
||||
|
||||
.PHONY: snapshot-srpm
|
||||
snapshot-srpm: snapshot-setup
|
||||
rpmbuild \
|
||||
--define "yyyymmdd $(YYYYMMDD)" \
|
||||
--define "_srcrpmdir $(OUTDIR)" \
|
||||
--with=snapshot_build \
|
||||
--define "_rpmdir $(RESULTDIR)" \
|
||||
--define "_sourcedir $(SOURCEDIR)" \
|
||||
--define "_specdir $(SOURCEDIR)" \
|
||||
--define "_srcrpmdir $(RESULTDIR)" \
|
||||
--define "_builddir $(RESULTDIR)" \
|
||||
-bs $(SPEC)
|
||||
|
||||
.PHONY: local-rpm
|
||||
local-rpm: setup
|
||||
fedpkg --release $(FEDORA_RELEASE) -v \
|
||||
local \
|
||||
--builddir $(BUILDDIR) \
|
||||
--buildrootdir $(BUILDROOTDIR) \
|
||||
--define "yyyymmdd $(YYYYMMDD)" \
|
||||
-- $(SPEC) --noclean
|
||||
.PHONY: release-srpm
|
||||
release-srpm: release-setup
|
||||
rpmbuild \
|
||||
--define "_rpmdir $(RESULTDIR)" \
|
||||
--define "_sourcedir $(SOURCEDIR)" \
|
||||
--define "_specdir $(SOURCEDIR)" \
|
||||
--define "_srcrpmdir $(RESULTDIR)" \
|
||||
--define "_builddir $(RESULTDIR)" \
|
||||
-bs $(SPEC)
|
||||
|
||||
.PHONY: local-clean
|
||||
local-clean:
|
||||
-rm -rf $(BUILDDIR)
|
||||
-rm -rf $(BUILDROOTDIR)
|
||||
-rm -rf $(OUTDIR)
|
||||
.PHONY: snapshot-rpm
|
||||
snapshot-rpm: snapshot-setup
|
||||
rpmbuild \
|
||||
--with=snapshot_build \
|
||||
--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 *.tar.xz
|
||||
-rm -f *.tar.xz.sig
|
||||
-rm -rf x86_64
|
||||
-rm -rf $(shell uname -m)
|
||||
-rm -rf noarch
|
||||
-rm -rf *.src.rpm
|
||||
-rm -rf /tmp/lto-llvm-*.o
|
||||
|
||||
.PHONY: local-list-check
|
||||
local-list-check: setup
|
||||
fedpkg --release $(FEDORA_RELEASE) -v \
|
||||
local \
|
||||
--builddir $(BUILDDIR) \
|
||||
--buildrootdir $(BUILDROOTDIR) \
|
||||
--define "yyyymmdd $(YYYYMMDD)" \
|
||||
-- $(SPEC) -bl
|
||||
.PHONY: snapshot-prep
|
||||
snapshot-prep: snapshot-setup
|
||||
rpmbuild \
|
||||
--with=snapshot_build \
|
||||
--define "_rpmdir $(RESULTDIR)" \
|
||||
--define "_sourcedir $(SOURCEDIR)" \
|
||||
--define "_specdir $(SOURCEDIR)" \
|
||||
--define "_srcrpmdir $(RESULTDIR)" \
|
||||
--define "_builddir $(RESULTDIR)" \
|
||||
--noclean \
|
||||
-bp $(SPEC)
|
||||
|
||||
.PHONY: local-prep
|
||||
local-prep: setup
|
||||
fedpkg --release $(FEDORA_RELEASE) -v \
|
||||
prep \
|
||||
--builddir $(BUILDDIR) \
|
||||
--buildrootdir $(BUILDROOTDIR) \
|
||||
--define "yyyymmdd $(YYYYMMDD)" \
|
||||
-- $(SPEC)
|
||||
.PHONY: release-prep
|
||||
release-prep: releae-setup
|
||||
rpmbuild \
|
||||
--define "_rpmdir $(RESULTDIR)" \
|
||||
--define "_sourcedir $(SOURCEDIR)" \
|
||||
--define "_specdir $(SOURCEDIR)" \
|
||||
--define "_srcrpmdir $(RESULTDIR)" \
|
||||
--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
|
||||
local-tmt-vm:
|
||||
# This is to ensure the required packages are installed
|
||||
rpm -q tmt tmt+provision-virtual
|
||||
# This is to check if you've started libvirt
|
||||
# If this fails, run: sudo systemctl start libvirtd
|
||||
# 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')
|
||||
# Add yourself to libvirt group: sudo usermod -a -G libvirt $USER
|
||||
cat /etc/group | grep libvirt | grep $(USER)
|
||||
tmt \
|
||||
-c distro=fedora-rawhide \
|
||||
-c arch=x86_64 \
|
||||
-c snapshot=20240124
|
||||
run \
|
||||
-avv \
|
||||
provision \
|
||||
-h virtual.testcloud \
|
||||
-c system \
|
||||
-i fedora-rawhide \
|
||||
prepare \
|
||||
-h install \
|
||||
-c fedora-llvm-team/llvm-snapshots-big-merge-20240124 \
|
||||
test \
|
||||
report
|
||||
# .PHONY: local-tmt-vm
|
||||
# local-tmt-vm:
|
||||
# # This is to ensure the required packages are installed
|
||||
# rpm -q tmt tmt+provision-virtual
|
||||
# # This is to check if you've started libvirt
|
||||
# # If this fails, run: sudo systemctl start libvirtd
|
||||
# # 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')
|
||||
# # Add yourself to libvirt group: sudo usermod -a -G libvirt $USER
|
||||
# cat /etc/group | grep libvirt | grep $(USER)
|
||||
# tmt \
|
||||
# -c distro=fedora-rawhide \
|
||||
# -c arch=x86_64 \
|
||||
# -c snapshot=20240124
|
||||
# run \
|
||||
# -avv \
|
||||
# provision \
|
||||
# -h virtual.testcloud \
|
||||
# -c system \
|
||||
# -i fedora-rawhide \
|
||||
# prepare \
|
||||
# -h install \
|
||||
# -c fedora-llvm-team/llvm-snapshots-big-merge-20240124 \
|
||||
# test \
|
||||
# report
|
||||
|
|
|
@ -73,7 +73,11 @@ cd llvm
|
|||
\
|
||||
\
|
||||
%if %{without compat_build}
|
||||
%if %{with snapshot_build}
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp;offload" \
|
||||
%else
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp" \
|
||||
%endif
|
||||
%endif
|
||||
\
|
||||
\
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
%{?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
|
||||
- Enable LLVM_UNREACHABLE_OPTIMIZE temporarily
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
%bcond_without snapshot_build
|
||||
# Components enabled if supported by target architecture:
|
||||
%define gold_arches %{ix86} x86_64 aarch64 %{power64} s390x
|
||||
%ifarch %{gold_arches}
|
||||
|
@ -29,9 +28,10 @@
|
|||
%undefine _include_frame_pointers
|
||||
|
||||
# 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}
|
||||
%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
|
||||
|
||||
#region LLVM globals
|
||||
|
|
|
@ -8,7 +8,9 @@ Patch2002: 0003-PATCH-clang-Don-t-install-static-libraries.patch
|
|||
Patch2005: 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
|
||||
|
||||
#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
|
||||
|
||||
# # Drop the following patch after debugedit adds support to DWARF-5:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%if %{without snapshot_build}
|
||||
# llvm
|
||||
%{gpgverify} --keyring='%{SOURCE1006}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||||
%{gpgverify} --keyring='%{SOURCE6}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||||
%endif
|
||||
|
||||
# -T : Do Not Perform Default Archive Unpacking (without this, the <n>th source would be unpacked twice)
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
Source0: https://github.com/llvm/llvm-project/archive/%{llvm_snapshot_git_revision}.tar.gz
|
||||
%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
|
||||
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
|
||||
Source1006: release-keys.asc
|
||||
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
|
||||
Source6: release-keys.asc
|
||||
%endif
|
||||
|
||||
%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
|
||||
# easily see what specfile sections are touched by a patch.
|
||||
%if %{with snapshot_build}
|
||||
Source1000: version.spec.inc
|
||||
%endif
|
||||
Source1001: build.spec.inc
|
||||
Source1002: changelog.spec.inc
|
||||
Source1003: check.spec.inc
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue