1 |
Bug: https://bugs.gentoo.org/831927 |
2 |
Closes: https://github.com/gentoo/portage/pull/786 |
3 |
Signed-off-by: Mike Gilbert <floppym@g.o> |
4 |
--- |
5 |
bin/estrip | 19 ++++++++++++++++--- |
6 |
1 file changed, 16 insertions(+), 3 deletions(-) |
7 |
|
8 |
diff --git a/bin/estrip b/bin/estrip |
9 |
index 599ca2ceb..cdad58c31 100755 |
10 |
--- a/bin/estrip |
11 |
+++ b/bin/estrip |
12 |
@@ -189,6 +189,19 @@ save_elf_sources() { |
13 |
"${x}") |
14 |
} |
15 |
|
16 |
+# Try to create a symlink. |
17 |
+# Return success if it already exists. |
18 |
+__try_symlink() { |
19 |
+ local target=$1 |
20 |
+ local name=$2 |
21 |
+ # Check for an existing link before and after in case we are racing against |
22 |
+ # another process. |
23 |
+ [[ -L ${name} ]] || |
24 |
+ ln -s "${target}" "${name}" || |
25 |
+ [[ -L ${name} ]] || |
26 |
+ die "failed to create symlink '${name}'" |
27 |
+} |
28 |
+ |
29 |
# Usage: save_elf_debug <src> <inode_debug> [splitdebug] |
30 |
save_elf_debug() { |
31 |
${FEATURES_splitdebug} || return 0 |
32 |
@@ -245,7 +258,7 @@ save_elf_debug() { |
33 |
[[ -g ${src} || -u ${src} ]] && args+=",go-r" |
34 |
chmod ${args} "${dst}" |
35 |
# symlink so we can read the name back. |
36 |
- ln -s "${dst}" "${inode_debug}" || die "failed to create symlink '${inode_debug}'" |
37 |
+ __try_symlink "${dst}" "${inode_debug}" |
38 |
|
39 |
# if we don't already have build-id from debugedit, look it up |
40 |
if [[ -z ${buildid} ]] ; then |
41 |
@@ -258,8 +271,8 @@ save_elf_debug() { |
42 |
local src_buildid_rel="../../../../../${src#${ED%/}/}" |
43 |
local dst_buildid_rel="../../${dst#${ED%/}/usr/lib/debug/}" |
44 |
mkdir -p "${buildid_dir}" || die |
45 |
- [[ -L "${buildid_file}".debug ]] || ln -s "${dst_buildid_rel}" "${buildid_file}.debug" || die "failed to create symlink '${buildid_file}.debug'" |
46 |
- [[ -L "${buildid_file}" ]] || ln -s "${src_buildid_rel}" "${buildid_file}" || die "failed to create symlink '${buildid_file}'" |
47 |
+ __try_symlink "${dst_buildid_rel}" "${buildid_file}.debug" |
48 |
+ __try_symlink "${src_buildid_rel}" "${buildid_file}" |
49 |
fi |
50 |
fi |
51 |
fi |
52 |
-- |
53 |
2.35.1 |