#!/bin/sh
# $NetBSD: pre-build,v 1.16 2021/01/02 21:54:46 riastradh Exp $
#
# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
# All rights reserved.
#
# This code was developed as part of Google's Summer of Code 2007 program.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.

. /usr/pkg/etc/pbulk.conf

set -e

if [ "${config_version}" != "0.68" ]; then
	echo "Your configuration has version ${config_version}."
	echo "This version of pbulk expects version 0.68."
	exit 1
fi

if [ "$cross_compile" != "no" ]; then
	if [ -z "${target_destdir}" ]; then
		echo "target_destdir must be set for cross-compiling."
		exit 1
	fi
	if [ ! -d "${target_destdir}" ]; then
		echo "target_destdir must exist for cross-compiling."
		exit 1
	fi
	if [ `cd "${target_destdir}" && pwd` = "/" ]; then
		echo "target_destdir must not be / for cross-compiling."
		exit 1
	fi	
	if [ -z "${target_arch}" ]; then
		echo "target_arch must be specified for cross-compiling."
		exit 1
	fi
fi

if [ -d "${bulklog}/meta" ]; then
	echo "Warning: All log files of the previous pbulk run will be"
	echo "removed in 5 seconds. If you want to abort, press Ctrl-C."
	sleep 5
	if [ "${reuse_scan_results}" = yes -a -f "${bulklog}/meta/pscan" ]; then
		echo "Reusing old scan results"
		rm -rf "${bulklog}.old" 2> /dev/null || true
		if [ -d "${bulklog}.old" ]; then
			rm -rf "${bulklog}.old"/* || true
			find "${bulklog}" -maxdepth 1 -mindepth 1 ! -name meta -exec rm -rf {} \; || true
			cp -pr "${bulklog}/." "${bulklog}.old/"
			rm -rf "${bulklog}"/* || true
		else
			mv "${bulklog}" "${bulklog}.old"
		fi
	else
		echo "Removing old scan results"
		rm -rf "${bulklog}"/* || true
	fi
else
	rm -rf "${bulklog}"/* || true
fi

mkdir -p "${bulklog}" "${loc}"

case "${master_mode}" in
[nN][oO])
	# Make sure the prefix is clean before we scan so any
	# preinstalled packages don't affect the scanning process.
	/usr/pkg/libexec/pbulk/client-clean
	;;
[yY][eE][sS])
	# Scanning happens in a worker so we don't need to clean the
	# prefix here; this way you can run pbulk on a system that has
	# packages installed without disrupting those packages.
	;;
*)
	echo "master_mode must be either yes or no."
	exit 1
	;;
esac

# Log common settings...
opsys=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=OPSYS`
opver=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=OS_VERSION`
# Check if it is an OS with variants where we would rather use the
# variant name and version rather than common name and version
case "$opsys" in
	SunOS | Cygwin | SCO_SV)
		opvar=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=OS_VARIANT`
	case "$opsys" in
		Cygwin | SCO_SV)
			opsys=$opvar
		;;
		SunOS)
			if [ -n "$opvar" ]; then
			opsys=$opvar
			opver=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=LOWER_VARIANT_VERSION`
			fi
		;;
	esac
	;;
esac

platform=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=MACHINE_ARCH`
compiler=`cd ${pkgsrc}/pkgtools/pkg_install && ${make} show-var VARNAME=PKGSRC_COMPILER`

echo "PLATFORM=${opsys} ${opver}/${platform}" > ${loc}/status
echo "COMPILER=${compiler}" >> ${loc}/status

date '+BUILD_START_ISO=%Y-%m-%d %H:%M
BUILD_START_DIR=%Y%m%d.%H%M
BUILD_START_EPOCHE=%s' >> ${loc}/status
echo "BASE_URL=${base_url}" >> ${loc}/status
