summaryrefslogtreecommitdiff
path: root/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
diff options
context:
space:
mode:
Diffstat (limited to 'config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch')
-rw-r--r--config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch b/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
new file mode 100644
index 00000000..56ba0cb6
--- /dev/null
+++ b/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
@@ -0,0 +1,54 @@
+From 35f5bbf5aa7dc32f0140147737af73fd3866f455 Mon Sep 17 00:00:00 2001
+From: Leah Rowe <info@minifree.org>
+Date: Sun, 28 Jul 2024 16:04:30 +0100
+Subject: [PATCH 1/1] common/filesystem: define ACCESSPERMS if undefined
+
+normally defined in sys/stat.h on various libc implementations,
+but musl libc doesn't seem to have it, leading to this build
+issue:
+
+common/filesystem.cpp:86:38: error: 'ACCESSPERMS' was not declared in this scope
+ 86 | return (mkdir(dir.toLocal8Bit(), ACCESSPERMS) == 0);
+
+ACCESSPERMS is typically defined as the result of bitwise OR:
+S_IRWXU | S_IRWXG | S_IRWXO
+
+This creates the chmod permission 0777, used on the mkdir() call.
+
+ACCESSPERMS is supported on GNU C Library, for compatibility with
+BSD libc implementations; the latter also implements ALLPERMS
+and DEFFILEMODE, which don't seem to be used by uefitool regardless.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ common/filesystem.cpp | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/common/filesystem.cpp b/common/filesystem.cpp
+index b2b8d65..9672e07 100644
+--- a/common/filesystem.cpp
++++ b/common/filesystem.cpp
+@@ -15,6 +15,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ #include <sys/stat.h>
+ #include <fstream>
+
++/* musl libc does not define ACCESSPERMS, seen on glibc and many bsd libc.
++ * let's do alpine linux users a massive favour, so that the code compiles.
++ */
++#ifndef ACCESSPERMS
++#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* chmod permission: 0777 */
++#endif
++
+ bool readFileIntoBuffer(const UString& inPath, UByteArray& buf)
+ {
+ if (!isExistOnFs(inPath))
+@@ -103,4 +110,4 @@ UString getAbsPath(const UString & path) {
+ return UString(abs);
+ return path;
+ }
+-#endif
+\ No newline at end of file
++#endif
+--
+2.39.2
+