diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-10-10 16:26:35 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-10-11 12:32:17 +0200 |
commit | 474dcfc0ab093043fee9952282bcab5f1dedc43a (patch) | |
tree | cb28b1e90cb976ad0a86ac4b4a0253904f8a4e56 /scripts/archive-source.sh | |
parent | 5a5110d290c0f2dca3d98c608b0ec9a01d2181b9 (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-x | scripts/archive-source.sh | 23 |
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 |