#!/bin/sh
#
# Set up the build variables which are used by a given build
#
# Code fragment used by other scripts for commonality

validate_env() {
    arch=$1
    branch=$2

    case ${arch} in
	amd64|i386|ia64|sparc64)
	    continue
	    ;;
	*)
	    echo "Invalid arch: ${arch}"
	    return 1
	    ;;
    esac

    case ${branch} in
	6|6-exp|7|7-exp|8|8-exp|9|9-exp)
	    continue
	    ;;
	*)
	    echo "Invalid branch: ${branch}"
	    return 1
	    ;;
    esac

    return 0
}

resolve() {
    pb=$1
    arch=$2
    branch=$3
    buildid=$4

    # Resolve a possibly symlinked buildid (e.g. "latest") to the
    # underlying directory

    pbab=${pb}/${arch}/${branch}
    builddir=${pbab}/builds/${buildid}/

    if [ ! -d ${builddir} ]; then
	return 1
    else
	builddir=$(realpath ${builddir})
    fi

    buildid=${builddir%/}
    buildid=${buildid##*/}
    echo ${buildid}
}

buildenv () {
    pb=$1
    arch=$2
    branch=$3
    builddir=$4

    # Have to use realpath because 'make index' doesn't deal with
    # symlinks in PORTSDIR - kk 020311
    if [ -d ${builddir}/ports/ ]; then
	export PORTSDIR=$(realpath ${builddir}/ports)
    else
	export PORTSDIR=/nonexistent
    fi
    if [ -d ${builddir}/src/ ]; then
	export SRCBASE=$(realpath ${builddir}/src)
    else
	export SRCBASE=/nonexistent
    fi

    if [ -f ${SRCBASE}/sys/sys/param.h ]; then
	export OSVERSION=$(awk '/^#define __FreeBSD_version/ {print $3}' < ${SRCBASE}/sys/sys/param.h)
    fi
    if [ -f ${SRCBASE}/sys/conf/newvers.sh ]; then
	export OSREL=$(awk 'BEGIN {FS="\""}; /^REVISION/ {print $2}' < ${SRCBASE}/sys/conf/newvers.sh)
	export BRANCH=$(awk 'BEGIN {FS="\""}; /^BRANCH/ {print $2}' < ${SRCBASE}/sys/conf/newvers.sh)
    fi

    case "x$branch" in
	x6)
	export INDEXFILE=INDEX-6
	    ;;
	x6-exp)
	export INDEXFILE=INDEX-6
	    ;;
	x7)
	export INDEXFILE=INDEX-7
	    ;;
	x7-exp)
	export INDEXFILE=INDEX-7
	    ;;
	x8)
	export INDEXFILE=INDEX-8
	    ;;
	x8-exp)
	export INDEXFILE=INDEX-8
	    ;;
	x9)
	export INDEXFILE=INDEX-9
	    ;;
	x9-exp)
	export INDEXFILE=INDEX-9
	    ;;
	*)
	    echo "buildenv: invalid branch"
	    exit 1
	    ;;
    esac

    export ARCH=${arch}
    export MACHINE_ARCH=${arch}

    export X11BASE=/usr/local
    export LOCALBASE=/usr/local
    export PKGSUFFIX=.tbz
    export PKGZIPCMD=bzip2
    export X_WINDOW_SYSTEM=xorg
    #export USA_RESIDENT=yes

    export SRCPREFIX=${SRCBASE} #XXX Which one is canonical?

    export __MAKE_CONF=${pb}/${arch}/make.conf

    export DISTDIR=${builddir}/distfiles
    export PACKAGES=${builddir}/packages

    # Don't pick up host OPTIONS
    export PORT_DBDIR=/nonexistent

    export UNAME_m=${ARCH}
    export UNAME_n=freebsd.org
    export UNAME_p=${ARCH}
    export UNAME_r=${OSREL}-${BRANCH}
    export UNAME_s=FreeBSD
    export UNAME_v="FreeBSD ${OSREL}-${BRANCH} #0: $(date)     kris@freebsd.org:/usr/src/sys/magic/kernel/path"

    export BATCH=1
    export PACKAGE_BUILDING=1

    export FTP_PASSIVE_MODE=yes
    #export FETCH_BEFORE_ARGS=-vvv
}
