# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: wrapper.eclass # @MAINTAINER: # base-system@gentoo.org # @SUPPORTED_EAPIS: 5 6 7 8 # @BLURB: create a shell wrapper script case ${EAPI} in 5|6|7|8) ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac if [[ -z ${_WRAPPER_ECLASS} ]]; then _WRAPPER_ECLASS=1 # @FUNCTION: make_wrapper # @USAGE: [chdir] [libpaths] [installpath] # @DESCRIPTION: # Create a shell wrapper script named wrapper in installpath # (defaults to the bindir) to execute target (default of wrapper) # by first optionally setting LD_LIBRARY_PATH to the colon-delimited # libpaths followed by optionally changing directory to chdir. make_wrapper() { local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5 local tmpwrapper="${T}/tmp.wrapper.${wrapper##*/}" ( echo '#!/bin/sh' if [[ -n ${libdir} ]] ; then local var if [[ ${CHOST} == *-darwin* ]] ; then var=DYLD_LIBRARY_PATH else var=LD_LIBRARY_PATH fi sed 's/^X//' <<-EOF || die if [ "\${${var}+set}" = "set" ] ; then X export ${var}="\${${var}}:${EPREFIX}${libdir}" else X export ${var}="${EPREFIX}${libdir}" fi EOF fi [[ -n ${chdir} ]] && printf 'cd "%s" &&\n' "${EPREFIX}${chdir}" # We don't want to quote ${bin} so that people can pass complex # things as ${bin} ... "./someprog --args" printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}" chmod go+rx "${tmpwrapper}" if [[ -n ${path} ]] ; then ( exeopts -m 0755 exeinto "${path}" newexe "${tmpwrapper}" "${wrapper}" ) || die else newbin "${tmpwrapper}" "${wrapper}" fi } fi