common.sh at [830629525a]

File server/buildpkgs/common.sh artifact 0d787c6d5e part of check-in 830629525a


#! /bin/bash

function setup_tcl () {
	local vers envfile

	for vers in "$@"; do
		envfile="${PROJROOTDIR}/platform.magic.env-8.5"

		if [ ! -f "${envfile}" ]; then
			continue
		fi

		source "${envfile}"

		break
	done
}

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