Gentoo Archives: gentoo-portage-dev

From: basile@××××××××××××××.edu
To: gentoo-portage-dev@l.g.o
Cc: "Anthony G. Basile" <blueness@g.o>
Subject: [gentoo-portage-dev] [PATCH] ebuild-helpers/xattr/install: use install-xattr
Date: Sat, 31 May 2014 23:33:49
Message-Id: 1401579376-10484-1-git-send-email-basile@opensource.dyc.edu
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

Replies