#!/bin/bash -e

OLD_PWD=${PWD}
source /lib/gentoo/functions.sh || true

if [ -z "$1" ]; then
    echo "usage: $0 /var/cache/binpkgs/dev-java/openjdk/openjdk-X.X.X.X-N.gpkg.tar [-rX]"
    exit 1
fi

GPKG=$(realpath -e "$1")

ebegin "Creating temporary directory"
TMP=$(mktemp --tmpdir -d openjdk.XXXXXXXXXX)
trap 'rm -rf "${TMP}"' EXIT
cd "${TMP}"
eend $?

# gpkg layout: <basename>/{gpkg-1,metadata.tar.<comp>,image.tar.<comp>,Manifest}
# with optional .sig files; the inner basename may contain a build-id suffix
ebegin "Unpacking gpkg container"
tar -xf "${GPKG}" --wildcards --exclude='*.sig' '*/metadata.tar.*' '*/image.tar.*'
METADATA_TAR=( */metadata.tar.* )
IMAGE_TAR=( */image.tar.* )
[[ -f ${METADATA_TAR[0]} && -f ${IMAGE_TAR[0]} ]]
eend $?

ebegin "Reading package environment"
eval "$(tar -xOf "${METADATA_TAR[0]}" metadata/environment.bz2 | bunzip2)"
eend $?

if ! declare -F get_libdir >/dev/null; then
    get_libdir() {
        local libdir_var=LIBDIR_${ABI}
        echo "${!libdir_var:-lib}"
    }
fi

ebegin "Extracting package files"
tar -xf "${IMAGE_TAR[0]}" --strip-components=1
rm -f "${METADATA_TAR[0]}" "${IMAGE_TAR[0]}"
eend $?

LIB=usr/$(get_libdir)/${PN}-${SLOT}

case "${CHOST%%-*}" in
    powerpc*le) abi=${ABI}le ;;
    *) abi=${ABI} ;;
esac

use() {
    local re="\b${1}\b"
    [[ ${USE} =~ ${re} ]]
}

do_tar() {
    local DIR=${PN}-bootstrap-${PV}
    [[ $1 = *-${abi} ]] && DIR+=-${ABI}

    TARBALL=${PN}-bootstrap-$1-${abi}.tar.xz
    shift

    ebegin "Creating ${TARBALL}"

    tar Jcf "${OLD_PWD}/${TARBALL}" \
        --owner=root --group=root \
        --transform="s:^${LIB}:${DIR}:x" \
        --remove-files \
        "${@}"

    eend $?
}

do_tar "${PV}${2}" "${LIB}"
