public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Ulrich Müller" <ulm@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Cc: "Ulrich Müller" <ulm@gentoo.org>
Subject: [gentoo-dev] [PATCH 3/8] wrapper.eclass: New eclass, split off from eutils.
Date: Thu, 10 Sep 2020 21:08:29 +0200	[thread overview]
Message-ID: <20200910190834.17560-4-ulm@gentoo.org> (raw)
In-Reply-To: <20200910190834.17560-1-ulm@gentoo.org>

Signed-off-by: Ulrich Müller <ulm@gentoo.org>
---
 eclass/eutils.eclass  | 51 ++----------------------------------
 eclass/wrapper.eclass | 61 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 49 deletions(-)
 create mode 100644 eclass/wrapper.eclass

diff --git a/eclass/eutils.eclass b/eclass/eutils.eclass
index 3b3e328ba30d..0072f4ccf3e7 100644
--- a/eclass/eutils.eclass
+++ b/eclass/eutils.eclass
@@ -22,9 +22,9 @@ _EUTILS_ECLASS=1
 case ${EAPI:-0} in
 	0|1|2|3|4|5|6)
 		inherit desktop edos2unix epatch estack ltprune multilib \
-			preserve-libs toolchain-funcs vcs-clean
+			preserve-libs toolchain-funcs vcs-clean wrapper
 		;;
-	7) inherit edos2unix ;;
+	7) inherit edos2unix wrapper ;;
 	*) die "${ECLASS} is banned in EAPI ${EAPI}" ;;
 esac
 
@@ -112,53 +112,6 @@ strip-linguas() {
 	export LINGUAS=${newls:1}
 }
 
-# @FUNCTION: make_wrapper
-# @USAGE: <wrapper> <target> [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=$(emktemp)
-	has "${EAPI:-0}" 0 1 2 && local EPREFIX=""
-
-	(
-	echo '#!/bin/sh'
-	if [[ -n ${libdir} ]] ; then
-		local var
-		if [[ ${CHOST} == *-darwin* ]] ; then
-			var=DYLD_LIBRARY_PATH
-		else
-			var=LD_LIBRARY_PATH
-		fi
-		cat <<-EOF
-			if [ "\${${var}+set}" = "set" ] ; then
-				export ${var}="\${${var}}:${EPREFIX}${libdir}"
-			else
-				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}" || die
-	fi
-}
-
 path_exists() {
 	eerror "path_exists has been removed.  Please see the following post"
 	eerror "for a replacement snippet:"
diff --git a/eclass/wrapper.eclass b/eclass/wrapper.eclass
new file mode 100644
index 000000000000..8cde94979d1a
--- /dev/null
+++ b/eclass/wrapper.eclass
@@ -0,0 +1,61 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: wrapper.eclass
+# @MAINTAINER:
+# base-system@gentoo.org
+# @BLURB: create a shell wrapper script
+
+if [[ -z ${_WRAPPER_ECLASS} ]]; then
+_WRAPPER_ECLASS=1
+
+inherit eutils      # for emktemp
+
+# @FUNCTION: make_wrapper
+# @USAGE: <wrapper> <target> [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=$(emktemp)
+	has "${EAPI:-0}" 0 1 2 && local EPREFIX=""
+
+	(
+	echo '#!/bin/sh'
+	if [[ -n ${libdir} ]] ; then
+		local var
+		if [[ ${CHOST} == *-darwin* ]] ; then
+			var=DYLD_LIBRARY_PATH
+		else
+			var=LD_LIBRARY_PATH
+		fi
+		cat <<-EOF
+			if [ "\${${var}+set}" = "set" ] ; then
+				export ${var}="\${${var}}:${EPREFIX}${libdir}"
+			else
+				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}" || die
+	fi
+}
+
+fi
-- 
2.28.0



  parent reply	other threads:[~2020-09-10 19:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-10 19:08 [gentoo-dev] [PATCH 0/8] Split off remaining functions from eutils.eclass Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 1/8] eutils.eclass: Specify supported EAPIs Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 2/8] edos2unix.eclass: New eclass, split off from eutils Ulrich Müller
2020-09-10 19:08 ` Ulrich Müller [this message]
2020-09-10 19:08 ` [gentoo-dev] [PATCH 4/8] wrapper.eclass: Do not use emktemp Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 5/8] l10n.eclass: Add conditional to prevent multiple inclusion Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 6/8] l10n.eclass: strip-linguas() moved from eutils to here Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 7/8] eutils.eclass: Deprecate emktemp() Ulrich Müller
2020-09-10 19:08 ` [gentoo-dev] [PATCH 8/8] eutils.eclass: Deprecate use_if_iuse() Ulrich Müller
2020-09-12 16:22 ` [gentoo-dev] [PATCH 0/8] Split off remaining functions from eutils.eclass Ulrich Mueller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200910190834.17560-4-ulm@gentoo.org \
    --to=ulm@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox