diff options
author | Khem Raj <raj.khem@gmail.com> | 2024-10-16 22:57:16 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2024-10-27 18:08:38 -0700 |
commit | 7f9699e730de3b9a2bcb6c1ed7ec8bff809022c0 (patch) | |
tree | 10bec845c455bc490e18ea6d693589007f2901e4 | |
parent | 1431cf12892844cc0d54bb167c84151b18e231d3 (diff) | |
download | meta-openembedded-7f9699e730de3b9a2bcb6c1ed7ec8bff809022c0.tar.gz |
xmlrpc-c: Fix race condition triggered during symlink creation
This should fix race condition sometime seen in highly parallell builds
| rm -f libxmlrpc_util.so.4
| rm -f libxmlrpc_util.so.4
| ln -s libxmlrpc_util.so.4.60 libxmlrpc_util.so.4
| ln -s libxmlrpc_util.so.4.60 libxmlrpc_util.so.4
| rm -f libxmlrpc_util.so
| ln: failed to create symbolic link 'libxmlrpc_util.so.4': File exists
| make[2]: *** [/home/kraj01/yoe/build/tmp/work/core2-64-yoe-linux/xmlrpc-c/1.60.03/git/stable/unix-common.mk:72: libxmlrpc_util.so.4] Error 1
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r-- | meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-unix-common.mk-Ensuring-Sequential-Execution-of-rm-a.patch | 46 | ||||
-rw-r--r-- | meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.60.03.bb | 1 |
2 files changed, 47 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-unix-common.mk-Ensuring-Sequential-Execution-of-rm-a.patch b/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-unix-common.mk-Ensuring-Sequential-Execution-of-rm-a.patch new file mode 100644 index 000000000..02b5244f3 --- /dev/null +++ b/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-unix-common.mk-Ensuring-Sequential-Execution-of-rm-a.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From c9bd05e8f0ad805b81625cfa717d06071cfd9b48 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 16 Oct 2024 22:52:38 -0700 | ||
4 | Subject: [PATCH] unix-common.mk: Ensuring Sequential Execution of rm and ln commands | ||
5 | |||
6 | With high parallel execution, it results in race condition where | ||
7 | its trying to create symlink while the original symlink while rm is | ||
8 | not done deleting the existing file yet. | ||
9 | |||
10 | force sequential execution by adding dependencies between the steps | ||
11 | or combining them into a single shell command | ||
12 | |||
13 | Here, && ensures that the ln -s command only runs after rm -f target | ||
14 | successfully completes. | ||
15 | |||
16 | Similar error reported here [1] | ||
17 | |||
18 | [1] https://bugs.gentoo.org/932835 | ||
19 | |||
20 | Upstream-Status: Pending | ||
21 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
22 | --- | ||
23 | unix-common.mk | 6 ++---- | ||
24 | 1 file changed, 2 insertions(+), 4 deletions(-) | ||
25 | |||
26 | diff --git a/unix-common.mk b/unix-common.mk | ||
27 | index 6954faf5..983c48cd 100644 | ||
28 | --- a/unix-common.mk | ||
29 | +++ b/unix-common.mk | ||
30 | @@ -62,14 +62,12 @@ SHLIB_CMD = $(CCLD) $(LADD) $(LDFLAGS_SHLIB) -o $@ $^ | ||
31 | SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD)) | ||
32 | |||
33 | $(SHLIB_LE_TARGETS):%:%.$(MAJ) | ||
34 | - rm -f $@ | ||
35 | - $(LN_S) $< $@ | ||
36 | + rm -f $@ && $(LN_S) $< $@ | ||
37 | |||
38 | SONAME_TARGETS = $(SHLIB_LE_TARGETS:%=%.$(MAJ)) | ||
39 | |||
40 | $(SONAME_TARGETS):%:%.$(MIN) | ||
41 | - rm -f $@ | ||
42 | - $(LN_S) $< $@ | ||
43 | + rm -f $@ && $(LN_S) $< $@ | ||
44 | |||
45 | .PHONY: $(SHLIB_INSTALL_TARGETS) | ||
46 | .PHONY: install-shared-libraries | ||
diff --git a/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.60.03.bb b/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.60.03.bb index a34256c27..f5ee920ca 100644 --- a/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.60.03.bb +++ b/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.60.03.bb | |||
@@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=aefbf81ba0750f02176b6f86752ea951" | |||
7 | 7 | ||
8 | SRC_URI = "git://github.com/mirror/xmlrpc-c.git;branch=master;protocol=https \ | 8 | SRC_URI = "git://github.com/mirror/xmlrpc-c.git;branch=master;protocol=https \ |
9 | file://0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch \ | 9 | file://0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch \ |
10 | file://0001-unix-common.mk-Ensuring-Sequential-Execution-of-rm-a.patch \ | ||
10 | " | 11 | " |
11 | # one more commit after Release 1.60.03 in the Stable series | 12 | # one more commit after Release 1.60.03 in the Stable series |
12 | SRCREV = "a823b0bb5cf0a4dbd34f929cbfdfb0439c5d9b0e" | 13 | SRCREV = "a823b0bb5cf0a4dbd34f929cbfdfb0439c5d9b0e" |