1 |
commit: bcf4ab871ededc3d535165757ba5597669e33dcb |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Aug 31 01:49:10 2012 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Aug 31 01:49:10 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=bcf4ab87 |
7 |
|
8 |
EAPI 5: --host-root option for best/has_version |
9 |
|
10 |
See bug #401239 and the PMS patch: |
11 |
http://git.overlays.gentoo.org/gitweb/?p=proj/pms.git;a=commit;h=25fb5fca6674215ea8aaa3d0ec3dd3df451eec07 |
12 |
|
13 |
--- |
14 |
bin/phase-helpers.sh | 68 +++++++++++++++++++++++++++++++++++++++++--------- |
15 |
1 files changed, 56 insertions(+), 12 deletions(-) |
16 |
|
17 |
diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh |
18 |
index db1548e..6899488 100644 |
19 |
--- a/bin/phase-helpers.sh |
20 |
+++ b/bin/phase-helpers.sh |
21 |
@@ -632,28 +632,50 @@ _eapi5_apply_user_patches() { |
22 |
} |
23 |
|
24 |
# @FUNCTION: has_version |
25 |
-# @USAGE: <DEPEND ATOM> |
26 |
+# @USAGE: [--host-root] <DEPEND ATOM> |
27 |
# @DESCRIPTION: |
28 |
# Return true if given package is installed. Otherwise return false. |
29 |
# Callers may override the ROOT variable in order to match packages from an |
30 |
# alternative ROOT. |
31 |
has_version() { |
32 |
|
33 |
- local eroot |
34 |
+ local atom eroot host_root=false root=${ROOT} |
35 |
+ while [ $# -gt 0 ] ; do |
36 |
+ case "$1" in |
37 |
+ --host-root) |
38 |
+ host_root=true |
39 |
+ ;; |
40 |
+ *) |
41 |
+ [[ -n ${atom} ]] && die "${FUNCNAME[0]}: unused argument: $1" |
42 |
+ atom=$1 |
43 |
+ ;; |
44 |
+ esac |
45 |
+ shift |
46 |
+ done |
47 |
+ |
48 |
+ if ${host_root} ; then |
49 |
+ case "${EAPI}" in |
50 |
+ 0|1|2|3|4|4-python|4-slot-abi) |
51 |
+ die "${FUNCNAME[0]}: option --host-root is not supported with EAPI ${EAPI}" |
52 |
+ ;; |
53 |
+ esac |
54 |
+ root=/ |
55 |
+ fi |
56 |
+ |
57 |
case "$EAPI" in |
58 |
0|1|2) |
59 |
[[ " ${FEATURES} " == *" force-prefix "* ]] && \ |
60 |
- eroot=${ROOT%/}${EPREFIX}/ || eroot=${ROOT} |
61 |
+ eroot=${root%/}${EPREFIX}/ || eroot=${root} |
62 |
;; |
63 |
*) |
64 |
- eroot=${ROOT%/}${EPREFIX}/ |
65 |
+ eroot=${root%/}${EPREFIX}/ |
66 |
;; |
67 |
esac |
68 |
if [[ -n $PORTAGE_IPC_DAEMON ]] ; then |
69 |
- "$PORTAGE_BIN_PATH"/ebuild-ipc has_version "${eroot}" "$1" |
70 |
+ "$PORTAGE_BIN_PATH"/ebuild-ipc has_version "${eroot}" "${atom}" |
71 |
else |
72 |
PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} \ |
73 |
- "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" has_version "${eroot}" "$1" |
74 |
+ "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" has_version "${eroot}" "${atom}" |
75 |
fi |
76 |
local retval=$? |
77 |
case "${retval}" in |
78 |
@@ -667,28 +689,50 @@ has_version() { |
79 |
} |
80 |
|
81 |
# @FUNCTION: best_version |
82 |
-# @USAGE: <DEPEND ATOM> |
83 |
+# @USAGE: [--host-root] <DEPEND ATOM> |
84 |
# @DESCRIPTION: |
85 |
# Returns the best/most-current match. |
86 |
# Callers may override the ROOT variable in order to match packages from an |
87 |
# alternative ROOT. |
88 |
best_version() { |
89 |
|
90 |
- local eroot |
91 |
+ local atom eroot host_root=false root=${ROOT} |
92 |
+ while [ $# -gt 0 ] ; do |
93 |
+ case "$1" in |
94 |
+ --host-root) |
95 |
+ host_root=true |
96 |
+ ;; |
97 |
+ *) |
98 |
+ [[ -n ${atom} ]] && die "${FUNCNAME[0]}: unused argument: $1" |
99 |
+ atom=$1 |
100 |
+ ;; |
101 |
+ esac |
102 |
+ shift |
103 |
+ done |
104 |
+ |
105 |
+ if ${host_root} ; then |
106 |
+ case "${EAPI}" in |
107 |
+ 0|1|2|3|4|4-python|4-slot-abi) |
108 |
+ die "${FUNCNAME[0]}: option --host-root is not supported with EAPI ${EAPI}" |
109 |
+ ;; |
110 |
+ esac |
111 |
+ root=/ |
112 |
+ fi |
113 |
+ |
114 |
case "$EAPI" in |
115 |
0|1|2) |
116 |
[[ " ${FEATURES} " == *" force-prefix "* ]] && \ |
117 |
- eroot=${ROOT%/}${EPREFIX}/ || eroot=${ROOT} |
118 |
+ eroot=${root%/}${EPREFIX}/ || eroot=${root} |
119 |
;; |
120 |
*) |
121 |
- eroot=${ROOT%/}${EPREFIX}/ |
122 |
+ eroot=${root%/}${EPREFIX}/ |
123 |
;; |
124 |
esac |
125 |
if [[ -n $PORTAGE_IPC_DAEMON ]] ; then |
126 |
- "$PORTAGE_BIN_PATH"/ebuild-ipc best_version "${eroot}" "$1" |
127 |
+ "$PORTAGE_BIN_PATH"/ebuild-ipc best_version "${eroot}" "${atom}" |
128 |
else |
129 |
PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} \ |
130 |
- "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" best_version "${eroot}" "$1" |
131 |
+ "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" best_version "${eroot}" "${atom}" |
132 |
fi |
133 |
local retval=$? |
134 |
case "${retval}" in |