1 |
From: "Anthony G. Basile" <blueness@g.o> |
2 |
|
3 |
Currently bin/ebuild-helpers/xattr/install uses ${PORTAGE_BIN_PATH}/install.py |
4 |
as a wrapper to coreutils' install to preserve a file's extended attributes when |
5 |
installing, usually during src_install(). This is needed, for instance, when |
6 |
preserving xattr based PaX flags, bug #465000. However the python wrapper is |
7 |
very slow, comment #42 of bug #465000. A C wrapper was developed and tested, |
8 |
bugs #501534 and #511984. This patch checks for the existence of the C wrapper, |
9 |
and uses it, falling back on the python wrapper only if not found, or if over- |
10 |
ridden by ${PORTAGE_INSTALL_XATTR_IMPLEMENTATION}. |
11 |
--- |
12 |
bin/ebuild-helpers/xattr/install | 27 +++++++++++++++++++++++++-- |
13 |
1 file changed, 25 insertions(+), 2 deletions(-) |
14 |
|
15 |
diff --git a/bin/ebuild-helpers/xattr/install b/bin/ebuild-helpers/xattr/install |
16 |
index f51f621..9b5d346 100755 |
17 |
--- a/bin/ebuild-helpers/xattr/install |
18 |
+++ b/bin/ebuild-helpers/xattr/install |
19 |
@@ -4,9 +4,32 @@ |
20 |
|
21 |
PORTAGE_BIN_PATH=${PORTAGE_BIN_PATH:-/usr/lib/portage/bin} |
22 |
PORTAGE_PYM_PATH=${PORTAGE_PYM_PATH:-/usr/lib/portage/pym} |
23 |
+INSTALL_XATTR=${EPREFIX}/usr/bin/install-xattr |
24 |
# Use safe cwd, avoiding unsafe import for bug #469338. |
25 |
export __PORTAGE_HELPER_CWD=${PWD} |
26 |
cd "${PORTAGE_PYM_PATH}" |
27 |
export __PORTAGE_HELPER_PATH=${BASH_SOURCE[0]} |
28 |
-PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \ |
29 |
- exec "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/install.py" "$@" |
30 |
+ |
31 |
+ |
32 |
+if [[ ${PORTAGE_INSTALL_XATTR_IMPLEMENTATION} == "c" ]]; then |
33 |
+ implementation="c" |
34 |
+elif [[ ${PORTAGE_INSTALL_XATTR_IMPLEMENTATION} == "python" ]]; then |
35 |
+ implementation="python" |
36 |
+else |
37 |
+ # If PORTAGE_INSTALL_XATTR_IMPLEMENTATION is not set then we'll autodetect |
38 |
+ if [[ -x "${INSTALL_XATTR}" ]]; then |
39 |
+ implementation="c" |
40 |
+ else |
41 |
+ implementation="python" |
42 |
+ fi |
43 |
+fi |
44 |
+ |
45 |
+if [[ "${implementation}" == "c" ]]; then |
46 |
+ exec "${INSTALL_XATTR}" "$@" |
47 |
+elif [[ "${implementation}" == "python" ]]; then |
48 |
+ PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \ |
49 |
+ exec "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/install.py" "$@" |
50 |
+else |
51 |
+ echo "Unknown implementation for PORTAGE_INSTALL_XATTR_IMPLEMENTATION" |
52 |
+ exit -1 |
53 |
+fi |
54 |
-- |
55 |
1.8.5.5 |