summaryrefslogtreecommitdiff
path: root/config/uefitool
diff options
context:
space:
mode:
Diffstat (limited to 'config/uefitool')
-rw-r--r--config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch56
-rw-r--r--config/uefitool/target.cfg1
2 files changed, 57 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..8241cebe
--- /dev/null
+++ b/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
@@ -0,0 +1,56 @@
+From 75437e2253fc70f4e3368c9d030415ce4ae52fa6 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.
+
+Do not define it on the Windows builds; only do it for the others,
+such as Linux.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ common/filesystem.cpp | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/common/filesystem.cpp b/common/filesystem.cpp
+index b2b8d65..af5e537 100644
+--- a/common/filesystem.cpp
++++ b/common/filesystem.cpp
+@@ -75,6 +75,12 @@ UString getAbsPath(const UString & path)
+ #else
+ #include <unistd.h>
+ #include <stdlib.h>
++
++/* musl libc does not define ACCESSPERMS */
++#ifndef ACCESSPERMS
++#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* chmod permission: 0777 */
++#endif
++
+ bool isExistOnFs(const UString & path)
+ {
+ struct stat buf;
+@@ -103,4 +109,4 @@ UString getAbsPath(const UString & path) {
+ return UString(abs);
+ return path;
+ }
+-#endif
+\ No newline at end of file
++#endif
+--
+2.39.2
+
diff --git a/config/uefitool/target.cfg b/config/uefitool/target.cfg
index 98d5e03d..909568a7 100644
--- a/config/uefitool/target.cfg
+++ b/config/uefitool/target.cfg
@@ -1 +1,2 @@
cmakedir="UEFIExtract"
+btype="cmake"