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
next prev 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