#! /bin/bash
function setup_tcl () {
local vers envfile
for vers in "$@"; do
envfile="${PROJROOTDIR}/platform.magic.env-${vers}"
if [ ! -f "${envfile}" ]; then
continue
fi
source "${envfile}"
return 0
done
return 1
}
function setup_tcl85 () {
setup_tcl 8.5 8.4
}
function setup_tcl84 () {
setup_tcl 8.4 8.5
}
function not_platforms () {
local platform
for platform in "$@"; do
if [ "${PLATFORM}" = "${platform}" ]; then
rm -rf out
exit 0
fi
done
}
function only_platforms () {
local platform
for platform in "$@"; do
if [ "${PLATFORM}" = "${platform}" ]; then
return 0
fi
done
rm -rf out
exit 0
}
function only_platforms_regexp () {
local platform_re
for platform_re in "$@"; do
if echo "${PLATFORM}" | grep -- "${platform_re}" >/dev/null; then
return 0
fi
done
rm -rf out
exit 0
}
function download () {
local url file
file="$1"
url="$2"
if [ -s "${file}" ]; then
return 0
fi
rm -f "${file}.tmp" "${file}"
if echo "${url}" | grep '^https://' >/dev/null; then
wget --ca-certificate='../certs.pem' -O "${file}.tmp" "${url}" || return 1
else
wget -O "${file}.tmp" "${url}" || return 1
fi
mv "${file}.tmp" "${file}"
}
function download_src () {
if [ ! -f "${SRC}" -a -n "${SRC}" -a -n "${SRCURL}" ]; then
mkdir -p "$(dirname "${SRC}")" >/dev/null 2>/dev/null
download "${SRC}" "${SRCURL}" || exit 1
fi
}
function extract_src () {
rm -rf build
mkdir build
(
cd build/ || exit 1
gzip -dc "../${SRC}" | tar -xf -
cd "${BUILDDIR}" || exit 1
) || exit 1
}
function apply_patches () {
local patchroot patchdir patchfiles patchfile idx
patchroot="$(pwd)/patches"
for patchdir in "${patchroot}/all" "${patchroot}/${VERS}"; do
unset patchfiles
if [ -f "${patchdir}/series" ]; then
idx=0
for patchfile in $(cat "${patchdir}/series"); do
patchfiles[${idx}]="${patchdir}/${patchfile}"
idx=$[${idx} + 1]
done
else
patchfiles=("${patchdir}"/*.diff)
fi
for patchfile in "${patchfiles[@]}"; do
if [ ! -f "${patchfile}" ]; then
continue
fi
(
cd "build/${BUILDDIR}" || exit 1
echo "* Applying patch \"${patchfile}\""
"${PATCH:-patch}" -p1 < "${patchfile}"
)
done
done
}
WORKDIR="${TMPDIR:-/tmp}/tcl-buildpkgs-$$${RANDOM}${RANDOM}${RANDOM}"
PLATDIR="$(pwd)/out/${VERS}/${PLATFORM}"
BUILDSYSROOT="$(cd ../; pwd)"
export WORKDIR PLATDIR BUILDSYSROOT
setup_tcl84