From ed81545df5083a95ddcfbff0c029774ecb0326bd Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Sat, 19 Mar 2022 12:05:49 +0100 Subject: squashfsTools: 4.5 -> 4.5.1 The patch that was previously fetched from GitHub is now part of the 4.5.1 release, and is no longer needed. Furthermore, 4.5.1 introduces some new scripts to build manpages, and some new build inputs are required to make that work. This also rebases the Darwin patch. I don't have a Mac so I can't test this personally. There was one conflict: diff --cc squashfs-tools/read_xattrs.c index 2067f80,b28c3a0..0000000 --- a/squashfs-tools/read_xattrs.c +++ b/squashfs-tools/read_xattrs.c @@@ -36,9 -38,7 +38,7 @@@ #include "xattr.h" #include "error.h" - #include - -extern int read_fs_bytes(int, long long, int, void *); +extern int read_fs_bytes(int, long long, long long, void *); extern int read_block(int, long long, long long *, int, void *); static struct hash_entry { Resolved by updating the signature from int to long long. --- pkgs/tools/filesystems/squashfs/darwin.patch | 36 ++++++++++++++-------------- pkgs/tools/filesystems/squashfs/default.nix | 25 ++++++++++--------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/pkgs/tools/filesystems/squashfs/darwin.patch b/pkgs/tools/filesystems/squashfs/darwin.patch index 5f2e0b07299..657971c5b0a 100644 --- a/pkgs/tools/filesystems/squashfs/darwin.patch +++ b/pkgs/tools/filesystems/squashfs/darwin.patch @@ -5,7 +5,7 @@ with BSD-specific changes omitted. See also https://github.com/plougher/squashfs-tools/pull/69. diff --git a/squashfs-tools/action.c b/squashfs-tools/action.c -index 4b06ccb..3cad2ab 100644 +index ea2f604..9c979f8 100644 --- a/squashfs-tools/action.c +++ b/squashfs-tools/action.c @@ -39,6 +39,10 @@ @@ -19,7 +19,7 @@ index 4b06ccb..3cad2ab 100644 #include "squashfs_fs.h" #include "mksquashfs.h" #include "action.h" -@@ -2414,9 +2418,12 @@ static char *get_start(char *s, int n) +@@ -2415,9 +2419,12 @@ static char *get_start(char *s, int n) static int subpathname_fn(struct atom *atom, struct action_data *action_data) { @@ -34,7 +34,7 @@ index 4b06ccb..3cad2ab 100644 /* diff --git a/squashfs-tools/info.c b/squashfs-tools/info.c -index fe23d78..5c2f835 100644 +index 216b979..eea2ec9 100644 --- a/squashfs-tools/info.c +++ b/squashfs-tools/info.c @@ -144,31 +144,22 @@ void dump_state() @@ -89,7 +89,7 @@ index fe23d78..5c2f835 100644 } diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c -index a45b77f..3607448 100644 +index 843f9f4..ed2c3a6 100644 --- a/squashfs-tools/mksquashfs.c +++ b/squashfs-tools/mksquashfs.c @@ -35,7 +35,12 @@ @@ -117,7 +117,7 @@ index a45b77f..3607448 100644 #ifndef linux #include -@@ -5022,6 +5030,7 @@ static void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, +@@ -5064,6 +5072,7 @@ static void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, sigemptyset(&sigmask); sigaddset(&sigmask, SIGQUIT); sigaddset(&sigmask, SIGHUP); @@ -125,7 +125,7 @@ index a45b77f..3607448 100644 if(pthread_sigmask(SIG_BLOCK, &sigmask, NULL) != 0) BAD_ERROR("Failed to set signal mask in intialise_threads\n"); -@@ -5760,6 +5769,35 @@ static int get_physical_memory() +@@ -5802,6 +5811,35 @@ static int get_physical_memory() long long page_size = sysconf(_SC_PAGESIZE); int phys_mem; @@ -161,7 +161,7 @@ index a45b77f..3607448 100644 if(num_pages == -1 || page_size == -1) { struct sysinfo sys; int res = sysinfo(&sys); -@@ -5772,6 +5810,7 @@ static int get_physical_memory() +@@ -5814,6 +5852,7 @@ static int get_physical_memory() } phys_mem = num_pages * page_size >> 20; @@ -170,7 +170,7 @@ index a45b77f..3607448 100644 if(phys_mem < SQUASHFS_LOWMEM) BAD_ERROR("Mksquashfs requires more physical memory than is " diff --git a/squashfs-tools/read_xattrs.c b/squashfs-tools/read_xattrs.c -index 4debedf..3257c30 100644 +index 2067f80..ca8b7f4 100644 --- a/squashfs-tools/read_xattrs.c +++ b/squashfs-tools/read_xattrs.c @@ -31,13 +31,13 @@ @@ -186,11 +186,11 @@ index 4debedf..3257c30 100644 -#include - - extern int read_fs_bytes(int, long long, int, void *); + extern int read_fs_bytes(int, long long, long long, void *); extern int read_block(int, long long, long long *, int, void *); diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c -index 727f1d5..c1a6183 100644 +index d434b42..1208e45 100644 --- a/squashfs-tools/unsquashfs.c +++ b/squashfs-tools/unsquashfs.c @@ -32,8 +32,12 @@ @@ -206,7 +206,7 @@ index 727f1d5..c1a6183 100644 #include #include #include -@@ -1175,7 +1179,7 @@ int create_inode(char *pathname, struct inode *i) +@@ -1182,7 +1186,7 @@ int create_inode(char *pathname, struct inode *i) break; case SQUASHFS_SYMLINK_TYPE: case SQUASHFS_LSYMLINK_TYPE: { @@ -215,7 +215,7 @@ index 727f1d5..c1a6183 100644 { i->time, 0 }, { i->time, 0 } }; -@@ -1194,8 +1198,7 @@ int create_inode(char *pathname, struct inode *i) +@@ -1201,8 +1205,7 @@ int create_inode(char *pathname, struct inode *i) goto failed; } @@ -225,7 +225,7 @@ index 727f1d5..c1a6183 100644 if(res == -1) { EXIT_UNSQUASH_STRICT("create_inode: failed to" " set time on %s, because %s\n", -@@ -2683,6 +2686,7 @@ void initialise_threads(int fragment_buffer_size, int data_buffer_size, int cat_ +@@ -2687,6 +2690,7 @@ void initialise_threads(int fragment_buffer_size, int data_buffer_size, int cat_ sigemptyset(&sigmask); sigaddset(&sigmask, SIGQUIT); sigaddset(&sigmask, SIGHUP); @@ -234,7 +234,7 @@ index 727f1d5..c1a6183 100644 EXIT_UNSQUASH("Failed to set signal mask in initialise_threads\n"); diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h -index 934618b..0e680ab 100644 +index 1099678..5b6a038 100644 --- a/squashfs-tools/unsquashfs.h +++ b/squashfs-tools/unsquashfs.h @@ -46,6 +46,10 @@ @@ -249,7 +249,7 @@ index 934618b..0e680ab 100644 #include "squashfs_fs.h" #include "unsquashfs_error.h" diff --git a/squashfs-tools/unsquashfs_info.c b/squashfs-tools/unsquashfs_info.c -index c8e2b9b..7d4f7af 100644 +index e906eaf..f1e68c2 100644 --- a/squashfs-tools/unsquashfs_info.c +++ b/squashfs-tools/unsquashfs_info.c @@ -96,31 +96,22 @@ void dump_state() @@ -304,7 +304,7 @@ index c8e2b9b..7d4f7af 100644 } diff --git a/squashfs-tools/unsquashfs_xattr.c b/squashfs-tools/unsquashfs_xattr.c -index 7742dfe..f8cd3b6 100644 +index 61910e1..73e0090 100644 --- a/squashfs-tools/unsquashfs_xattr.c +++ b/squashfs-tools/unsquashfs_xattr.c @@ -27,6 +27,11 @@ @@ -320,7 +320,7 @@ index 7742dfe..f8cd3b6 100644 extern int root_process; diff --git a/squashfs-tools/xattr.c b/squashfs-tools/xattr.c -index 64dfd82..d82d186 100644 +index b1c0089..6d7ed98 100644 --- a/squashfs-tools/xattr.c +++ b/squashfs-tools/xattr.c @@ -22,6 +22,14 @@ @@ -353,5 +353,5 @@ index 64dfd82..d82d186 100644 #include "squashfs_swap.h" #include "mksquashfs.h" -- -2.23.0 +2.35.1 diff --git a/pkgs/tools/filesystems/squashfs/default.nix b/pkgs/tools/filesystems/squashfs/default.nix index ee6a9d9a4c3..340c5add295 100644 --- a/pkgs/tools/filesystems/squashfs/default.nix +++ b/pkgs/tools/filesystems/squashfs/default.nix @@ -2,44 +2,43 @@ , stdenv , fetchFromGitHub , fetchpatch -, zlib -, xz +, help2man , lz4 , lzo -, zstd , nixosTests +, which +, xz +, zlib +, zstd }: stdenv.mkDerivation rec { pname = "squashfs"; - version = "4.5"; + version = "4.5.1"; src = fetchFromGitHub { owner = "plougher"; repo = "squashfs-tools"; rev = version; - sha256 = "1nanwz5qvsakxfm37md5i7xqagv69nfik9hpj8qlp6ymw266vgxr"; + sha256 = "sha256-Y3ZPjeE9HN1F+NtGe6EchYziWrTPVQ4SuKaCvNbXMKI="; }; patches = [ # This patch adds an option to pad filesystems (increasing size) in # exchange for better chunking / binary diff calculation. ./4k-align.patch - # Otherwise sizes of some files may break in our ISO; see - # https://github.com/NixOS/nixpkgs/issues/132286 - (fetchpatch { - url = "https://github.com/plougher/squashfs-tools/commit/19b161c1cd3e31f7a396ea92dea4390ad43f27b9.diff"; - sha256 = "15ng8m2my3a6a9hnfx474bip2vwdh08hzs2k0l5gwd36jv2z1h3f"; - }) ] ++ lib.optional stdenv.isDarwin ./darwin.patch; - buildInputs = [ zlib xz zstd lz4 lzo ]; + buildInputs = [ zlib xz zstd lz4 lzo which help2man ]; preBuild = '' cd squashfs-tools '' ; - installFlags = [ "INSTALL_DIR=${placeholder "out"}/bin" ]; + installFlags = [ + "INSTALL_DIR=${placeholder "out"}/bin" + "INSTALL_MANPAGES_DIR=${placeholder "out"}/share/man/man1" + ]; makeFlags = [ "XZ_SUPPORT=1" -- cgit 1.4.1