#!/bin/bash # Copyright © 2017 Hartmut Goebel # License: GNU Public License v3.0 or (at your choice) later ARGS=$(getopt -o "C" -l "pure,container" -- "$@") if [ $? -ne 0 ] ; then exit 1 ; fi # Bad arguments eval set -- "$ARGS" USE_CONTAINER= PURE_ENV= CONTAINER_PACKAGES="strace" # gdb while true ; do case "$1" in -C|--container) shift; USE_CONTAINER="yes" ;; --pure) shift; PURE_ENV="--pure" ;; --) shift ; break ;; esac done function package_from_path () { local pkg name version pkg=$(basename "$1") pkg=${pkg#guix-build-} pkg=${pkg%.drv-*} version=${pkg##*-} name=${pkg%-*} echo $name"@"$version } function oldest_dir () { find "$1/" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | \ xargs ls -tdr | head -1 } function get_build_dir () { BUILD_DIR="${1}" if [ -d "${BUILD_DIR}" ] ; then echo $BUILD_DIR elif [ -z "${BUILD_DIR}" ] ; then ls -td {,/var}/tmp/guix-build-*.drv-* 2>/dev/null | head -1 echo >&2 "No package name given, using $BUILD_DIR" elif [ "${BUILD_DIR#{,/var}/tmp/}" = "$BUILD_DIR" ] ; then ls -td {,/var}/tmp/guix-build-"$BUILD_DIR"-* 2>/dev/null | head -1 else ls -td {,/var}/tmp/"$BUILD_DIR" 2>/dev/null | head -1 fi } BUILD_DIR=$(get_build_dir "$1") if [ ! -d "$BUILD_DIR" ] ; then echo >&2 "Not found: $1" exit 10 fi # hG special: create a symlink from /var/tmp to /tmp if [ "${BUILD_DIR#/var/tmp/}" != "$BUILD_DIR" ] ; then ln -s "$BUILD_DIR" /tmp 2>/dev/null CONTAINER_OPTIONS="CONTAINER_OPTIONS --share=$BUILD_DIR=${BUILD_DIR#/var}" BUILD_DIR=${BUILD_DIR#/var} #BUILD_DIR=/tmp/$(basename $BUILD_DIR) fi echo "Using $BUILD_DIR" pkg=$(package_from_path "$BUILD_DIR") inifile=$BUILD_DIR/.guix-env-inifile cat > $inifile <> $inifile <