Add cmake/ to release tarballs via concatenation

The solution using append was reported not to work, but additionally it
would use the contents of the checked-out source tree instead of the git
tag or commit. This uses `git archive`, so it will use the right commit,
and at least for me (with GNU tar) it seems to work as intended.

Should fix #53281.

Reviewed By: kwk

Differential Revision: https://reviews.llvm.org/D121972
This commit is contained in:
Aaron Puchert 2022-03-21 15:28:27 +01:00
parent c6ac937091
commit 3a33664e88
1 changed files with 12 additions and 8 deletions

View File

@ -128,17 +128,21 @@ export_sources() {
-cJf test-suite-$release$rc.src.tar.xz test-suite-$release$rc.src
fi
# Package up top-level cmake directory so that we can append it to all projects.
tmp_dir=$(mktemp -d)
cmake_archive_file=$tmp_dir/cmake.tar
trap "rm -rv $tmp_dir" EXIT
pushd $llvm_src_dir
git archive -o $cmake_archive_file $tree_id cmake/
popd
for proj in $projects; do
echo "Creating tarball for $proj ..."
pushd $llvm_src_dir/$proj
target_archive_file=$target_dir/$(template_file $proj)
trap "rm -fv $target_archive_file.tmp" EXIT
git archive --prefix=$proj-$release$rc.src/ -o $target_archive_file.tmp $tree_id .
# Get relative path to top-level cmake directory to be packaged
# alongside the project. Append that path to the tarball.
cmake_rel_path=$(realpath --relative-to=. $llvm_src_dir/cmake)
tar --append -f $target_archive_file.tmp $cmake_rel_path
cat $target_archive_file.tmp | xz > $target_archive_file
tmp_archive_file=$tmp_dir/$proj.tar
git archive --prefix=$proj-$release$rc.src/ -o $tmp_archive_file $tree_id .
tar -Af $tmp_archive_file $cmake_archive_file
xz < $tmp_archive_file > $target_dir/$(template_file $proj)
popd
done
}