Skip to content

Commit 646faf8

Browse files
committed
Enable builds from local llvm-project tree
In order to use a local git tree we need to provide a customized `version.spec.inc` and we need to avoid downloading any tarball from github but build our own. This can be achieved with this command: ``` make mockbuild-snapshot GIT_TREE=~/llvm-project ``` A sample output could look like this: ``` $ make mockbuild-snapshot GIT_TREE=~/src/llvm-project/main Creating tarball from git tree: /home/kkleine/src/llvm-project/main YYYYMMDD=20250115 GIT_TREE=/home/kkleine/src/llvm-project/main ./.copr/snapshot-info.sh > /home/kkleine/src/llvm-rpms/llvm-big-merge/version.spec.inc [INFO] Gathering snapshot info from here: /home/kkleine/src/llvm-project/main [INFO] Determine date in YYYYMMDD form %global maj_ver 20 %global min_ver 0 %global patch_ver 0 %undefine rc_ver %global llvm_snapshot_version 20.0.0 %global llvm_snapshot_version_major 20 %global llvm_snapshot_version_minor 0 %global llvm_snapshot_version_patch 0 %global llvm_snapshot_yyyymmdd 20250115 %global llvm_snapshot_git_revision f579320b5eb348a68298d5a78ae849dcbbf37aa2 %global llvm_snapshot_git_revision_short f579320b5eb348 %global llvm_snapshot_version_suffix pre20250115.gf579320b5eb348 git -C /home/kkleine/src/llvm-project/main archive --format=tar.gz -o /home/kkleine/src/llvm-rpms/llvm-big-merge/f579320b5eb348a68298d5a78ae849dcbbf37aa2.tar.gz --prefix=llvm-project-f579320b5eb348a68298d5a78ae849dcbbf37aa2/ HEAD rpmbuild \ --with=snapshot_build \ --define "_rpmdir /home/kkleine/src/llvm-rpms/llvm-big-merge" \ --define "_sourcedir /home/kkleine/src/llvm-rpms/llvm-big-merge" \ --define "_specdir /home/kkleine/src/llvm-rpms/llvm-big-merge" \ --define "_srcrpmdir /home/kkleine/src/llvm-rpms/llvm-big-merge" \ --define "_builddir /home/kkleine/src/llvm-rpms/llvm-big-merge" \ -bs llvm.spec [...CUT OF BUILD LOG ...] ```
1 parent 94c97b7 commit 646faf8

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

.copr/snapshot-info.sh

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,40 @@ function loginfo() {
1313
>&2 echo "[INFO]" $msg
1414
}
1515

16+
function logerr() {
17+
local msg=$1
18+
>&2 echo "[ERROR]" $msg
19+
}
20+
21+
# Check if we shall gather versioning information from a supplied git tree
22+
if [ "$GIT_TREE" != "" ]; then
23+
loginfo "Gathering snapshot info from here: $GIT_TREE"
24+
if [ "$(git -C $GIT_TREE rev-parse --is-inside-work-tree 2>/dev/null)" != "true" ]; then
25+
logerr "Not a git directory: $GIT_TREE"
26+
exit 1
27+
fi
28+
llvm_snapshot_git_revision=$(git -C $GIT_TREE rev-parse HEAD)
29+
versionfile=$GIT_TREE/cmake/Modules/LLVMVersion.cmake
30+
llvm_snapshot_version=`grep -ioP 'set\(\s*LLVM_VERSION_(MAJOR|MINOR|PATCH)\s\K[0-9]+' ${versionfile} | paste -sd '.'`
31+
fi
32+
1633
loginfo "Determine date in YYYYMMDD form"
1734
llvm_snapshot_yyyymmdd=$(date +%Y%m%d)
1835
[[ ! -z "${YYYYMMDD}" ]] && llvm_snapshot_yyyymmdd=$YYYYMMDD
1936

20-
git_revision_url=https://github.com/fedora-llvm-team/llvm-snapshots/releases/download/snapshot-version-sync/llvm-git-revision-${llvm_snapshot_yyyymmdd}.txt
21-
loginfo "Get the revision for today from $git_revision_url"
22-
llvm_snapshot_git_revision=$(curl -sL $git_revision_url)
37+
if [ -z $GIT_TREE ]; then
38+
git_revision_url=https://github.com/fedora-llvm-team/llvm-snapshots/releases/download/snapshot-version-sync/llvm-git-revision-${llvm_snapshot_yyyymmdd}.txt
39+
loginfo "Get the revision for today from $git_revision_url"
40+
llvm_snapshot_git_revision=$(curl -sL $git_revision_url)
41+
fi
2342
llvm_snapshot_git_revision_short=$(echo "${llvm_snapshot_git_revision:0:14}")
2443

25-
release_url=https://github.com/fedora-llvm-team/llvm-snapshots/releases/download/snapshot-version-sync/llvm-release-${llvm_snapshot_yyyymmdd}.txt
26-
loginfo "Get the release for today from $release_url"
27-
llvm_snapshot_version=$(curl -sL $release_url)
44+
45+
if [ -z $GIT_TREE ]; then
46+
release_url=https://github.com/fedora-llvm-team/llvm-snapshots/releases/download/snapshot-version-sync/llvm-release-${llvm_snapshot_yyyymmdd}.txt
47+
loginfo "Get the release for today from $release_url"
48+
llvm_snapshot_version=$(curl -sL $release_url)
49+
fi
2850
llvm_snapshot_version_major=$(echo $llvm_snapshot_version | cut -f1 -d.)
2951
llvm_snapshot_version_minor=$(echo $llvm_snapshot_version | cut -f2 -d.)
3052
llvm_snapshot_version_patch=$(echo $llvm_snapshot_version | cut -f3 -d.)

Makefile

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,27 @@ MOCK_OPTS_SNAPSHOT?=$(MOCK_OPTS_RELEASE) --with snapshot_build $(MOCK_OPTS)
99
YYYYMMDD?=$(shell date +%Y%m%d)
1010
SOURCEDIR=$(shell pwd)
1111
SPEC=llvm.spec
12-
# When nothing is given, this will be determined based on
13-
# release or snapshot builds.
12+
# When nothing is given, this will be determined based on release or snapshot
13+
# builds.
1414
SRPM_PATH?=
15+
# Provide a path to your local llvm-project clone to build a snapshot of that
16+
# tree.
17+
GIT_TREE?=
1518

1619
######### Get sources
1720

1821
.PHONY: get-sources-snapshot
1922
## Downloads all sources we need for a snapshot build.
2023
get-sources-snapshot:
21-
YYYYMMDD=$(YYYYMMDD) ./.copr/snapshot-info.sh > $(SOURCEDIR)/version.spec.inc
24+
YYYYMMDD=$(YYYYMMDD) GIT_TREE=$(GIT_TREE) ./.copr/snapshot-info.sh > $(SOURCEDIR)/version.spec.inc
25+
ifeq ($(GIT_TREE),)
2226
spectool -g --define "_sourcedir $(SOURCEDIR)" --define "_with_snapshot_build 1" $(SPEC)
27+
else
28+
$(info Creating tarball from git tree: $(GIT_TREE))
29+
$(eval llvm_snapshot_git_revision:=$(shell git -C $(GIT_TREE) rev-parse HEAD))
30+
git -C $(GIT_TREE) archive --format=tar.gz -o $(PWD)/$(llvm_snapshot_git_revision).tar.gz --prefix=llvm-project-$(llvm_snapshot_git_revision)/ HEAD
31+
endif
32+
2333

2434
.PHONY: get-sources-release
2535
## Downloads all sources we need for a release build.

0 commit comments

Comments
 (0)