File revendor_source.sh of Package deno

#!/bin/sh
set -euo pipefail

# packaging helper to workaround:
# https://github.com/rust-lang/cargo/issues/9054
# https://github.com/rust-lang/cargo/issues/7058#issuecomment-751589229

# This script merges rusty_v8 into place from source,
# and nukes superfluous source objects.
#
# output is a single, merged vendor tarball

wd="$(mktemp -d /tmp/revendor.XXXXX)"

# take what we need into the build
cp rusty_v8*xz $wd
cp vendor*xz $wd

cd $wd

echo -n "Extracting vendor..."
tar xf vendor*xz
echo "done"

echo -n "Extracting rusty_v8..."
tar xf rusty*xz \
    --exclude="Cargo.toml" \
    --exclude="Cargo.lock"
echo " done"

# take vendored Cargo toml and lock which
# can still be used
cp vendor/rusty_v8/{Cargo.*,.cargo*} .

# get rid of everything else
rm -fr vendor/rusty_v8

# drop version prefix
target=$(find  . -name "rusty_v8-*" -type d)
mv $target rusty_v8

# insert proper files
mv Cargo.* .cargo* rusty_v8
echo "Check final rusty_v8 root:"
ls -la rusty_v8
mv rusty_v8 vendor

# disregard rusty_v8 checks as we inject it directly from source
echo '{"files":{},"package":""}' > vendor/rusty_v8/.cargo-checksum.json

# extra: workaround winapi bloat
# by ejecting it from the build
# 
# https://github.com/rust-lang/cargo/issues/7058
echo -n "Pruning winapi bloat... "
rm -fr vendor/winapi*gnu*/lib/*.a
echo "done"

# remake tarball
echo -n "Compressing archive... "
tar -cf - vendor/ |  xz -9 -c - > vendor-merged.tar.xz
echo "done"

ls -lh "$wd/vendor-merged.tar.xz"

cd -
cp "$wd/vendor-merged.tar.xz" ./vendor.tar.xz
openSUSE Build Service is sponsored by