From: Richard Purdie Date: Fri, 11 Feb 2022 13:42:54 +0000 (+0000) Subject: patchelf: Fix corrupted file mode patch X-Git-Tag: uninative-3.5^0 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=bcdba091d99f9a3ae67c0ba17fcf27329698a0c0;p=openembedded-core.git patchelf: Fix corrupted file mode patch The recent patchelf upgrades corrupted the file permissions patch we carry as upstream inserted an early exit to the funciton. This showed up as corrupted file modes when testing a new uninative tarball containing this patchelf. Rework and tweak the patch to fix this. Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch index 8d9a50a697..b755a263a4 100644 --- a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch +++ b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch @@ -14,11 +14,11 @@ Signed-off-by: Fabio Berton src/patchelf.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) -diff --git a/src/patchelf.cc b/src/patchelf.cc -index 1aeae88..6b77afe 100644 ---- a/src/patchelf.cc -+++ b/src/patchelf.cc -@@ -534,9 +534,19 @@ void ElfFile::sortShdrs() +Index: git/src/patchelf.cc +=================================================================== +--- git.orig/src/patchelf.cc ++++ git/src/patchelf.cc +@@ -534,9 +534,19 @@ void ElfFile::sortShd static void writeFile(const std::string & fileName, const FileContents & contents) { @@ -39,17 +39,27 @@ index 1aeae88..6b77afe 100644 if (fd == -1) error("open"); -@@ -564,6 +574,10 @@ static void writeFile(const std::string & fileName, const FileContents & content - if (errno == EINTR) - return; - error("close"); +@@ -551,8 +561,6 @@ static void writeFile(const std::string + bytesWritten += portion; + } + +- if (close(fd) >= 0) +- return; + /* + * Just ignore EINTR; a retry loop is the wrong thing to do. + * +@@ -561,9 +569,11 @@ static void writeFile(const std::string + * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR + * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain + */ +- if (errno == EINTR) +- return; +- error("close"); ++ if ((close(fd) < 0) && errno != EINTR) ++ error("close"); + + if (chmod(fileName.c_str(), st.st_mode) != 0) + error("chmod"); -+ } --- -2.25.1 -