Skip to content

Commit

Permalink
squashfs-tools-ng: init at 0.7
Browse files Browse the repository at this point in the history
  • Loading branch information
alyssais committed Nov 15, 2019
1 parent d793d53 commit 622cb30
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 0 deletions.
@@ -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

26 changes: 26 additions & 0 deletions pkgs/tools/filesystems/squashfs-tools-ng/default.nix
@@ -0,0 +1,26 @@
{ stdenv, lib, fetchurl, fetchpatch, autoreconfHook, doxygen, graphviz, perl
, pkgconfig, lz4, xz, zlib, zstd
}:

stdenv.mkDerivation rec {
pname = "squashfs-tools-ng";
version = "0.7";

src = fetchurl {
url = "https://infraroot.at/pub/squashfs/squashfs-tools-ng-${version}.tar.xz";
sha256 = "01yn621dnsfhrah3qj1xh6ynag7r3nvihc510sa5frapkyg9nw8n";
};

patches = lib.optional (!stdenv.isLinux) ./0001-Fix-build-on-BSD-systems.patch;

nativeBuildInputs = [ doxygen graphviz pkgconfig perl ]
++ lib.optional (!stdenv.isLinux) autoreconfHook;
buildInputs = [ zlib xz lz4 zstd ];

meta = with lib; {
homepage = https://github.com/AgentD/squashfs-tools-ng;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ qyliss ];
platforms = platforms.unix;
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -6415,6 +6415,8 @@ in

squashfsTools = callPackage ../tools/filesystems/squashfs { };

squashfs-tools-ng = callPackage ../tools/filesystems/squashfs-tools-ng { };

squashfuse = callPackage ../tools/filesystems/squashfuse { };

srcml = callPackage ../applications/version-management/srcml { };
Expand Down

0 comments on commit 622cb30

Please sign in to comment.