Gentoo Archives: gentoo-portage-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-portage-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-portage-dev] [PATCH 3/6] Add sandbox directory removal functions for EAPI 7
Date: Tue, 06 Mar 2018 16:55:29
Message-Id: 20180306165505.19087-4-mgorny@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 0/6] EAPI 7, part II by "Michał Górny"
1 Bug: https://bugs.gentoo.org/630422
2 ---
3 bin/eapi.sh | 4 ++++
4 bin/ebuild.sh | 17 +++++++++++++++++
5 bin/save-ebuild-env.sh | 1 +
6 3 files changed, 22 insertions(+)
7
8 diff --git a/bin/eapi.sh b/bin/eapi.sh
9 index 67563bed8..5d77c8daf 100644
10 --- a/bin/eapi.sh
11 +++ b/bin/eapi.sh
12 @@ -104,6 +104,10 @@ ___eapi_has_in_iuse() {
13 [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
14 }
15
16 +___eapi_has_sandbox_rm_functions() {
17 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-progress|6)$ ]]
18 +}
19 +
20 ___eapi_has_master_repositories() {
21 [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
22 }
23 diff --git a/bin/ebuild.sh b/bin/ebuild.sh
24 index d63b0a0ba..47894b0e6 100755
25 --- a/bin/ebuild.sh
26 +++ b/bin/ebuild.sh
27 @@ -147,6 +147,17 @@ __sb_append_var() {
28 [[ -z $1 || -n $2 ]] && die "Usage: add$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${_v}") <colon-delimited list of paths>"
29 export ${var}="${!var:+${!var}:}$1"
30 }
31 +__sb_remove_var() {
32 + local _v=$1 ; shift
33 + local var="SANDBOX_${_v}"
34 + [[ -z $1 || -n $2 ]] && die "Usage: add$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${_v}") <directory>"
35 + local vv=:${!var}:
36 + vv=${vv//:$1:/}
37 + # strip leading and trailing colon now
38 + vv=${vv##:}
39 + vv=${vv%%:}
40 + export ${var}="${vv}"
41 +}
42 # bash-4 version:
43 # local var="SANDBOX_${1^^}"
44 # addread() { __sb_append_var ${0#add} "$@" ; }
45 @@ -154,6 +165,12 @@ addread() { __sb_append_var READ "$@" ; }
46 addwrite() { __sb_append_var WRITE "$@" ; }
47 adddeny() { __sb_append_var DENY "$@" ; }
48 addpredict() { __sb_append_var PREDICT "$@" ; }
49 +if ___eapi_has_sandbox_rm_functions; then
50 + rmread() { __sb_remove_var READ "$@" ; }
51 + rmwrite() { __sb_remove_var WRITE "$@" ; }
52 + rmdeny() { __sb_remove_var DENY "$@" ; }
53 + rmpredict() { __sb_remove_var PREDICT "$@" ; }
54 +fi
55
56 addwrite "${PORTAGE_TMPDIR}"
57 addread "/:${PORTAGE_TMPDIR}"
58 diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh
59 index e5ae8af88..9bd0445e2 100644
60 --- a/bin/save-ebuild-env.sh
61 +++ b/bin/save-ebuild-env.sh
62 @@ -55,6 +55,7 @@ __save_ebuild_env() {
63 __has_phase_defined_up_to \
64 hasv hasq __qa_source __qa_call \
65 addread addwrite adddeny addpredict __sb_append_var \
66 + rmread rmwrite rmdeny rmpredict __sb_remove_var \
67 use usev useq has_version portageq \
68 best_version use_with use_enable register_die_hook \
69 unpack __strip_duplicate_slashes econf einstall \
70 --
71 2.16.2