aboutsummaryrefslogtreecommitdiff
path: root/scripts/archive-source.sh
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-10-10 16:26:35 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2024-10-11 12:32:17 +0200
commit474dcfc0ab093043fee9952282bcab5f1dedc43a (patch)
treecb28b1e90cb976ad0a86ac4b4a0253904f8a4e56 /scripts/archive-source.sh
parent5a5110d290c0f2dca3d98c608b0ec9a01d2181b9 (diff)
scripts/archive-source: find directory name for subprojects
Rust subprojects have the semantic version (followed by -rs) in the subproject name, but the full version (without -rs) is used by crates.io for the root directory of the tarball. Teach scripts/archive-source.sh to look for the root directory name in wrap files. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'scripts/archive-source.sh')
-rwxr-xr-xscripts/archive-source.sh23
1 files changed, 22 insertions, 1 deletions
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
index 65af8063e4..9d9b2e2d5e 100755
--- a/scripts/archive-source.sh
+++ b/scripts/archive-source.sh
@@ -48,13 +48,34 @@ function tree_ish() {
echo "$retval"
}
+function subproject_dir() {
+ if test ! -f "subprojects/$1.wrap"; then
+ error "scripts/archive-source.sh should only process wrap subprojects"
+ fi
+
+ # Print the directory key of the wrap file, defaulting to the
+ # subproject name. The wrap file is in ini format and should
+ # have a single section only. There should be only one section
+ # named "[wrap-*]", which helps keeping the script simple.
+ local dir
+ dir=$(sed -n \
+ -e '/^\[wrap-[a-z][a-z]*\]$/,/^\[/{' \
+ -e '/^directory *= */!b' \
+ -e 's///p' \
+ -e 'q' \
+ -e '}' \
+ "subprojects/$1.wrap")
+
+ echo "${dir:-$1}"
+}
+
git archive --format tar "$(tree_ish)" > "$tar_file"
test $? -ne 0 && error "failed to archive qemu"
for sp in $subprojects; do
meson subprojects download $sp
test $? -ne 0 && error "failed to download subproject $sp"
- tar --append --file "$tar_file" --exclude=.git subprojects/$sp
+ tar --append --file "$tar_file" --exclude=.git subprojects/"$(subproject_dir $sp)"
test $? -ne 0 && error "failed to append subproject $sp to $tar_file"
done
exit 0