Gentoo Archives: gentoo-dev

From: Mike Gilbert <floppym@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] [PATCH 2/2] usr-ldscript.eclass: avoid duplicate slashes in file paths
Date: Mon, 15 Jul 2019 17:26:55
Message-Id: 20190715172550.10111-2-floppym@gentoo.org
In Reply to: [gentoo-dev] [PATCH 1/2] usr-ldscript.eclass: add EAPI check and drop legacy code by Mike Gilbert
1 Signed-off-by: Mike Gilbert <floppym@g.o>
2 ---
3 eclass/usr-ldscript.eclass | 32 ++++++++++++++++----------------
4 1 file changed, 16 insertions(+), 16 deletions(-)
5
6 diff --git a/eclass/usr-ldscript.eclass b/eclass/usr-ldscript.eclass
7 index 1e631b5a34b7..d6ad2173ebc4 100644
8 --- a/eclass/usr-ldscript.eclass
9 +++ b/eclass/usr-ldscript.eclass
10 @@ -85,27 +85,27 @@ gen_usr_ldscript() {
11 # Ensure /lib/${lib} exists to avoid dangling scripts/symlinks.
12 # This especially is for AIX where $(get_libname) can return ".a",
13 # so /lib/${lib} might be moved to /usr/lib/${lib} (by accident).
14 - [[ -r ${ED}/${libdir}/${lib} ]] || continue
15 + [[ -r ${ED%/}/${libdir}/${lib} ]] || continue
16 #TODO: better die here?
17 fi
18
19 case ${CTARGET:-${CHOST}} in
20 *-darwin*)
21 if ${auto} ; then
22 - tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib})
23 + tlib=$(scanmacho -qF'%S#F' "${ED%/}"/usr/${libdir}/${lib})
24 else
25 - tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib})
26 + tlib=$(scanmacho -qF'%S#F' "${ED%/}"/${libdir}/${lib})
27 fi
28 [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}"
29 tlib=${tlib##*/}
30
31 if ${auto} ; then
32 - mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die
33 + mv "${ED%/}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED%/}"/${libdir}/ || die
34 # some install_names are funky: they encode a version
35 if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]] ; then
36 - mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die
37 + mv "${ED%/}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED%/}"/${libdir}/ || die
38 fi
39 - rm -f "${ED}"/${libdir}/${lib}
40 + rm -f "${ED%/}"/${libdir}/${lib}
41 fi
42
43 # Mach-O files have an id, which is like a soname, it tells how
44 @@ -115,34 +115,34 @@ gen_usr_ldscript() {
45 # libdir=/lib because that messes up libtool files.
46 # Make sure we don't lose the specific version, so just modify the
47 # existing install_name
48 - if [[ ! -w "${ED}/${libdir}/${tlib}" ]] ; then
49 - chmod u+w "${ED}${libdir}/${tlib}" # needed to write to it
50 + if [[ ! -w "${ED%/}/${libdir}/${tlib}" ]] ; then
51 + chmod u+w "${ED%/}/${libdir}/${tlib}" # needed to write to it
52 local nowrite=yes
53 fi
54 install_name_tool \
55 -id "${EPREFIX}"/${libdir}/${tlib} \
56 - "${ED}"/${libdir}/${tlib} || die "install_name_tool failed"
57 - [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}"
58 + "${ED%/}"/${libdir}/${tlib} || die "install_name_tool failed"
59 + [[ -n ${nowrite} ]] && chmod u-w "${ED%/}/${libdir}/${tlib}"
60 # Now as we don't use GNU binutils and our linker doesn't
61 # understand linker scripts, just create a symlink.
62 - pushd "${ED}/usr/${libdir}" > /dev/null
63 + pushd "${ED%/}/usr/${libdir}" > /dev/null
64 ln -snf "../../${libdir}/${tlib}" "${lib}"
65 popd > /dev/null
66 ;;
67 *)
68 if ${auto} ; then
69 - tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib})
70 + tlib=$(scanelf -qF'%S#F' "${ED%/}"/usr/${libdir}/${lib})
71 [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"
72 - mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die
73 + mv "${ED%/}"/usr/${libdir}/${lib}* "${ED%/}"/${libdir}/ || die
74 # some SONAMEs are funky: they encode a version before the .so
75 if [[ ${tlib} != ${lib}* ]] ; then
76 - mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die
77 + mv "${ED%/}"/usr/${libdir}/${tlib}* "${ED%/}"/${libdir}/ || die
78 fi
79 - rm -f "${ED}"/${libdir}/${lib}
80 + rm -f "${ED%/}"/${libdir}/${lib}
81 else
82 tlib=${lib}
83 fi
84 - cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
85 + cat > "${ED%/}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
86 /* GNU ld script
87 Since Gentoo has critical dynamic libraries in /lib, and the static versions
88 in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
89 --
90 2.22.0