mirror of
https://github.com/BtbN/FFmpeg-Builds.git
synced 2025-04-29 22:24:28 +02:00
64 lines
1.5 KiB
Bash
Executable File
64 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -xe
|
|
cd "$(dirname "$0")"
|
|
source util/vars.sh dl only
|
|
|
|
if docker info -f "{{println .SecurityOptions}}" | grep rootless >/dev/null 2>&1; then
|
|
UIDARGS=()
|
|
else
|
|
UIDARGS=( -u "$(id -u):$(id -g)" )
|
|
fi
|
|
|
|
[[ -t 1 ]] && TTY_ARG="-t" || TTY_ARG=""
|
|
|
|
DL_SCRIPT_DIR="$(mktemp -d)"
|
|
trap "rm -rf -- '$DL_SCRIPT_DIR'" EXIT
|
|
|
|
mkdir -p "${PWD}"/.cache/downloads
|
|
|
|
for STAGE in scripts.d/*.sh scripts.d/*/*.sh; do
|
|
STAGENAME="$(basename "$STAGE" | sed 's/.sh$//')"
|
|
|
|
cat <<-EOF >"${DL_SCRIPT_DIR}/${STAGENAME}.sh"
|
|
set -xe -o pipefail
|
|
shopt -s dotglob
|
|
|
|
source /dl_functions.sh
|
|
source "/$STAGE"
|
|
STG="\$(ffbuild_dockerdl)"
|
|
|
|
if [[ -z "\$STG" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
DLHASH="\$(sha256sum <<<"\$STG" | cut -d" " -f1)"
|
|
DLNAME="$STAGENAME"
|
|
|
|
if [[ "$1" == "hashonly" ]]; then
|
|
echo "\$DLHASH"
|
|
exit 0
|
|
fi
|
|
|
|
TGT="/dldir/\${DLNAME}_\${DLHASH}.tar.xz"
|
|
if [[ -f "\$TGT" ]]; then
|
|
rm -f "/dldir/\${DLNAME}.tar.xz"
|
|
ln -s "\${DLNAME}_\${DLHASH}.tar.xz" "/dldir/\${DLNAME}.tar.xz"
|
|
exit 0
|
|
fi
|
|
|
|
WORKDIR="\$(mktemp -d)"
|
|
trap "rm -rf -- '\$WORKDIR'" EXIT
|
|
cd "\$WORKDIR"
|
|
|
|
eval "\$STG"
|
|
|
|
tar cpJf "\$TGT.tmp" .
|
|
mv "\$TGT.tmp" "\$TGT"
|
|
rm -f "/dldir/\${DLNAME}.tar.xz"
|
|
ln -s "\${DLNAME}_\${DLHASH}.tar.xz" "/dldir/\${DLNAME}.tar.xz"
|
|
EOF
|
|
done
|
|
|
|
docker run -i $TTY_ARG --rm "${UIDARGS[@]}" -v "${DL_SCRIPT_DIR}":/stages -v "${PWD}/.cache/downloads":/dldir -v "${PWD}/scripts.d":/scripts.d -v "${PWD}/util/dl_functions.sh":/dl_functions.sh "${REGISTRY}/${REPO}/base:latest" \
|
|
bash -c 'set -xe && for STAGE in /stages/*.sh; do bash $STAGE; done'
|