pthbs

Packaging Through Hashed Build Scripts
git clone https://ccx.te2000.cz/git/pthbs
Log | Files | Refs | Submodules | README

pthbs-namedenv (1358B)


      1 #!/bin/sh
      2 set -e
      3 if test -n "$pthbs_xtrace"; then
      4 	set -x
      5 	if test -n "$BB_ASH_VERSION"; then PS4="+${0##*/}"':${FUNCNAME}:${LINENO} '; fi
      6 fi
      7 if test -z "$pthbs_cache"; then
      8     printf '%s\n' >&2 "$0: fatal: pthbs_cache env var undefined or empty"
      9     exit 100
     10 fi
     11 if test $# != 2; then
     12 	printf '%s\n' >&2 'usage: pthbs-namedenv /path/to/env.hash name'
     13 	exit 2
     14 fi
     15 env_installdir=$1
     16 env_name=$2
     17 shift
     18 case $env_name in
     19 	(*/*)
     20 	(*:*)
     21 		printf '%s\n' >&2 "pthbs-namedenv: error: invalid name '$env_name'"
     22 		exit 2
     23 		;;
     24 esac
     25 case ${env_installdir##*/} in
     26 	(env.*) ;;
     27 	(*)
     28 		printf '%s\n' >&2 "pthbs-namedenv: error: invalid env installdir '$env_installdir'"
     29 		exit 2
     30 		;;
     31 esac
     32 
     33 bd_link="$pthbs_cache/namedenv/$env_name"
     34 v_link_base="${env_installdir%/*}/namedenv.$env_name"
     35 printf "%s => %s\n" "$v_link_base" "${env_installdir##*/}"
     36 if test -L "$bd_link"; then
     37 	unlink "$bd_link"
     38 fi
     39 busybox ln -sTf "$env_installdir" "$bd_link"
     40 if test -L "${v_link_base}" && test x"$(realpath "$bd_link")" = x"$(realpath "$v_link_base")"; then
     41 	# already present
     42 	exit 0
     43 fi
     44 if test -L "${v_link_base}.9"; then
     45 	unlink "${v_link_base}.9"
     46 fi
     47 mvl() {
     48 	if test -L "${v_link_base}$1"; then
     49 		mv "${v_link_base}$1" "${v_link_base}$2"
     50 	fi
     51 }
     52 mvl .8 .9
     53 mvl .7 .8
     54 mvl .6 .7
     55 mvl .5 .6
     56 mvl .4 .5
     57 mvl .3 .4
     58 mvl .2 .3
     59 mvl .1 .2
     60 mvl "" .1
     61 busybox ln -sTf "${env_installdir##*/}" "$v_link_base"