summary refs log tree commit diff
path: root/pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch')
-rw-r--r--pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch103
1 files changed, 103 insertions, 0 deletions
diff --git a/pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch b/pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch
new file mode 100644
index 00000000000..2834b046cef
--- /dev/null
+++ b/pkgs/tools/filesystems/squashfs-tools-ng/0001-Fix-build-on-BSD-systems.patch
@@ -0,0 +1,103 @@
+From ea1bc0fcfd33191002c5d1f7072c1c02bb7ec4af Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Thu, 14 Nov 2019 15:45:46 +0000
+Subject: [PATCH] Fix build on BSD systems
+
+I tested FreeBSD, DragonflyBSD, NetBSD and OpenBSD and the endian
+macros weren't necessary (and in fact caused errors) on all of them.
+
+Because OpenBSD ships with an ancient GCC that doesn't support the
+checked addition/multiplication builtins, the build there would fail
+unless built with CC=cc or CC=clang.  I changed configure.ac to prefer
+cc over gcc, so that the distribution's compiler preference is
+respected.  (The default is [gcc cc]).  I had to move AC_PROG_CC above
+LT_INIT because otherwise LT_INIT would run AC_PROG_CC first, and we
+wouldn't have a chance to use non-default parameters.
+---
+ configure.ac          |  2 +-
+ include/util/compat.h | 13 +++++--------
+ lib/common/dirstack.c |  1 +
+ lib/common/mkdir_p.c  |  2 +-
+ 4 files changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 018b3f6..19ea0ed 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,8 +3,8 @@ AC_INIT([squashfs-tools-ng], [0.7], [goliath@infraroot.at], squashfs-tools-ng)
+ AC_CONFIG_MACRO_DIR([m4])
+ AM_INIT_AUTOMAKE([foreign dist-xz subdir-objects])
+ AM_SILENT_RULES([yes])
++AC_PROG_CC([cc gcc clang])
+ LT_INIT
+-AC_PROG_CC
+ AC_PROG_CC_C99
+ AC_PROG_INSTALL
+ AC_SYS_LARGEFILE
+diff --git a/include/util/compat.h b/include/util/compat.h
+index 74d0b6f..f53fd0e 100644
+--- a/include/util/compat.h
++++ b/include/util/compat.h
+@@ -7,6 +7,10 @@
+ #ifndef COMPAT_H
+ #define COMPAT_H
+ 
++#ifndef __linux__
++#define O_PATH 0
++#endif
++
+ #if defined(__APPLE__)
+ #include <libkern/OSByteOrder.h>
+ 
+@@ -17,14 +21,8 @@
+ #define le32toh(x) OSSwapLittleToHostInt32(x)
+ #define le16toh(x) OSSwapLittleToHostInt16(x)
+ #define le64toh(x) OSSwapLittleToHostInt64(x)
+-#elif defined(__OpenBSD__)
++#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ #include <sys/endian.h>
+-#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
+-#include <sys/endian.h>
+-
+-#define le16toh(x) letoh16(x)
+-#define le32toh(x) letoh32(x)
+-#define le64toh(x) letoh64(x)
+ #elif defined(_WIN32) || defined(__WINDOWS__)
+ #define htole16(x) (x)
+ #define htole32(x) (x)
+@@ -89,7 +87,6 @@
+ #else
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#include <sys/sysmacros.h>
+ #endif
+ 
+ #endif /* COMPAT_H */
+diff --git a/lib/common/dirstack.c b/lib/common/dirstack.c
+index 8f73898..f8d1278 100644
+--- a/lib/common/dirstack.c
++++ b/lib/common/dirstack.c
+@@ -5,6 +5,7 @@
+  * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
+  */
+ #include "common.h"
++#include "util/compat.h"
+ 
+ #include <string.h>
+ #include <stdlib.h>
+diff --git a/lib/common/mkdir_p.c b/lib/common/mkdir_p.c
+index cb433b3..95187ba 100644
+--- a/lib/common/mkdir_p.c
++++ b/lib/common/mkdir_p.c
+@@ -7,7 +7,7 @@
+ #include "common.h"
+ 
+ #include <string.h>
+-#include <alloca.h>
++#include <stdlib.h>
+ #include <stdio.h>
+ #include <errno.h>
+ 
+-- 
+2.23.0
+