57c4f8acff
The `curl-sys` crate includes with it a bundled copy of libcurl which is used if `pkgconfig` doesn't find libcurl configuration files. In our case, we always want to use the system libcurl. So filter it out. This also drops our *compressed* tarball by 2.5M. One tricky bit is that cargo crates include a checksum JSON that's read by `cargo build` later on to validate the crate. So we need to do some JSON surgery. What made me look into this was that Koji builds were failing due to the `%configure` macro including hardening bits that sub out e.g. all `config.sub` and `ltmain.sh` files which then caused the checksum to fail validation. This completely sidesteps that issue. Closes: #1554 Approved by: cgwalters
55 lines
1.5 KiB
Bash
Executable File
55 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
set -xeuo pipefail
|
|
|
|
srcdir=$1
|
|
shift
|
|
PKG_VER=$1
|
|
shift
|
|
GITREV=$1
|
|
shift
|
|
|
|
TARFILE=${PKG_VER}.tar
|
|
TARFILE_TMP=$(pwd)/${TARFILE}.tmp
|
|
|
|
test -n "${srcdir}"
|
|
test -n "${PKG_VER}"
|
|
test -n "${GITREV}"
|
|
|
|
TOP=$(git rev-parse --show-toplevel)
|
|
|
|
echo "Archiving ${PKG_VER} at ${GITREV} to ${TARFILE_TMP}"
|
|
(cd ${TOP}; git archive --format=tar --prefix=${PKG_VER}/ ${GITREV}) > ${TARFILE_TMP}
|
|
ls -al ${TARFILE_TMP}
|
|
(cd ${TOP}; git submodule status) | while read line; do
|
|
rev=$(echo ${line} | cut -f 1 -d ' '); path=$(echo ${line} | cut -f 2 -d ' ')
|
|
echo "Archiving ${path} at ${rev}"
|
|
(cd ${srcdir}/${path}; git archive --format=tar --prefix=${PKG_VER}/${path}/ ${rev}) > submodule.tar
|
|
tar -A -f ${TARFILE_TMP} submodule.tar
|
|
rm submodule.tar
|
|
done
|
|
tmpd=${TOP}/.dist-tmp
|
|
trap cleanup EXIT
|
|
function cleanup () {
|
|
if test -f ${tmpd}/.tmp; then
|
|
rm "${tmpd}" -rf
|
|
fi
|
|
}
|
|
# Run it now
|
|
cleanup
|
|
mkdir ${tmpd} && touch ${tmpd}/.tmp
|
|
|
|
(cd ${tmpd}
|
|
mkdir -p .cargo vendor
|
|
cargo vendor -q --sync ${TOP}/rust/Cargo.toml vendor
|
|
cp ${TOP}/rust/Cargo.lock .
|
|
cp ${TOP}/rust/cargo-vendor-config .cargo/config
|
|
# Filter out bundled libcurl from curl-sys; we always want the system libcurl
|
|
rm -rf vendor/curl-sys/curl/
|
|
python -c '
|
|
import json, sys; j = json.load(open(sys.argv[1]))
|
|
j["files"] = {f:c for f, c in j["files"].items() if not f.startswith("curl/")}
|
|
open(sys.argv[1], "w").write(json.dumps(j))' vendor/curl-sys/.cargo-checksum.json
|
|
tar --transform="s,^,${PKG_VER}/rust/," -rf ${TARFILE_TMP} * .cargo/
|
|
)
|
|
mv ${TARFILE_TMP} ${TARFILE}
|