mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
643761a9d5
Currently the tarballs contain superfluous metadata, like the user name of the packager and via Pax headers even the PID of the tar process that packaged the files. We build the monorepo projects directly from the git repo using "git archive" and for the test-suite we add some flags as recommended by https://reproducible-builds.org/docs/archives/. We don't use numeric owners though to be compatible with "git archive". The advantage of "git archive" is that the releaser doesn't have to download the tar ball and extract it, rather the archive is built directly from the repository. This is probably what GitHub uses internally to produce the tarballs, so I wouldn't expect a difference. Reviewed By: tstellar Differential Revision: https://reviews.llvm.org/D91494
107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#===-- tag.sh - Tag the LLVM release candidates ----------------------------===#
|
|
#
|
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#
|
|
#===------------------------------------------------------------------------===#
|
|
#
|
|
# Create branches and release candidates for the LLVM release.
|
|
#
|
|
#===------------------------------------------------------------------------===#
|
|
|
|
set -e
|
|
|
|
projects="llvm clang compiler-rt libcxx libcxxabi libclc clang-tools-extra polly lldb lld openmp libunwind flang"
|
|
|
|
release=""
|
|
rc=""
|
|
|
|
usage() {
|
|
echo "Export the Git sources and build tarballs from them"
|
|
echo "usage: `basename $0`"
|
|
echo " "
|
|
echo " -release <num> The version number of the release"
|
|
echo " -rc <num> The release candidate number"
|
|
echo " -final The final tag"
|
|
}
|
|
|
|
export_sources() {
|
|
release_no_dot=`echo $release | sed -e 's,\.,,g'`
|
|
tag="llvmorg-$release"
|
|
|
|
if [ "$rc" = "final" ]; then
|
|
rc=""
|
|
else
|
|
tag="$tag-$rc"
|
|
fi
|
|
|
|
llvm_src_dir=$(readlink -f $(dirname "$(readlink -f "$0")")/../../..)
|
|
[ -d $llvm_src_dir/.git ] || ( echo "No git repository at $llvm_src_dir" ; exit 1 )
|
|
|
|
echo $tag
|
|
target_dir=$(pwd)
|
|
|
|
echo "Creating tarball for llvm-project ..."
|
|
pushd $llvm_src_dir/
|
|
git archive --prefix=llvm-project-$release$rc.src/ $tag . | xz >$target_dir/llvm-project-$release$rc.src.tar.xz
|
|
popd
|
|
|
|
if [ ! -d test-suite-$release$rc.src ]
|
|
then
|
|
echo "Fetching LLVM test-suite source ..."
|
|
mkdir -p test-suite-$release$rc.src
|
|
curl -L https://github.com/llvm/test-suite/archive/$tag.tar.gz | \
|
|
tar -C test-suite-$release$rc.src --strip-components=1 -xzf -
|
|
fi
|
|
echo "Creating tarball for test-suite ..."
|
|
tar --sort=name --owner=0 --group=0 \
|
|
--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
|
|
-cJf test-suite-$release$rc.src.tar.xz test-suite-$release$rc.src
|
|
|
|
for proj in $projects; do
|
|
echo "Creating tarball for $proj ..."
|
|
pushd $llvm_src_dir/$proj
|
|
git archive --prefix=$proj-$release$rc.src/ $tag . | xz >$target_dir/$proj-$release$rc.src.tar.xz
|
|
popd
|
|
done
|
|
}
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case $1 in
|
|
-release | --release )
|
|
shift
|
|
release=$1
|
|
;;
|
|
-rc | --rc )
|
|
shift
|
|
rc="rc$1"
|
|
;;
|
|
-final | --final )
|
|
rc="final"
|
|
;;
|
|
-h | -help | --help )
|
|
usage
|
|
exit 0
|
|
;;
|
|
* )
|
|
echo "unknown option: $1"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ "x$release" = "x" ]; then
|
|
echo "error: need to specify a release version"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure umask is not overly restrictive.
|
|
umask 0022
|
|
|
|
export_sources
|
|
exit 0
|