about summary refs log tree commit diff
path: root/pkgs/tools/filesystems/squashfs
diff options
context:
space:
mode:
authorCharles Duffy <charles@dyfis.net>2019-07-06 15:57:19 +0000
committerMatthieu Coudron <coudron@iij.ad.jp>2019-07-08 14:01:57 +0200
commitf15d9d5123f9dfd97ac292ebc0643d0d7c4e7282 (patch)
treed1ab23de20a5c054fe96334eb2b1296e29f3320d /pkgs/tools/filesystems/squashfs
parent0513ae77ff410dd7f59deae8ebbd03cc256ed8d6 (diff)
downloadnixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar.gz
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar.bz2
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar.lz
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar.xz
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.tar.zst
nixlib-f15d9d5123f9dfd97ac292ebc0643d0d7c4e7282.zip
squashfsTools: Fix 4k-align patch (regression in 4.4dev)
The 4k-align squashfs patch was broken in the update to squashfs 4.4dev,
such that the patch was no longer actually applied in full (command line
option not even parsed).
Diffstat (limited to 'pkgs/tools/filesystems/squashfs')
-rw-r--r--pkgs/tools/filesystems/squashfs/default.nix2
-rw-r--r--pkgs/tools/filesystems/squashfs/squashfs-tools-4.4-4k-align.patch (renamed from pkgs/tools/filesystems/squashfs/squashfs-tools-4.3-4k-align.patch)38
2 files changed, 17 insertions, 23 deletions
diff --git a/pkgs/tools/filesystems/squashfs/default.nix b/pkgs/tools/filesystems/squashfs/default.nix
index 2fd3d52bdf67..59a786116df6 100644
--- a/pkgs/tools/filesystems/squashfs/default.nix
+++ b/pkgs/tools/filesystems/squashfs/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
     # This patch adds an option to pad filesystems (increasing size) in
     # exchange for better chunking / binary diff calculation.
-    ./squashfs-tools-4.3-4k-align.patch
+    ./squashfs-tools-4.4-4k-align.patch
   ] ++ stdenv.lib.optional stdenv.isDarwin ./darwin.patch;
 
   buildInputs = [ zlib xz zstd ]
diff --git a/pkgs/tools/filesystems/squashfs/squashfs-tools-4.3-4k-align.patch b/pkgs/tools/filesystems/squashfs/squashfs-tools-4.4-4k-align.patch
index cd4308b489fe..c9c3dd3d7604 100644
--- a/pkgs/tools/filesystems/squashfs/squashfs-tools-4.3-4k-align.patch
+++ b/pkgs/tools/filesystems/squashfs/squashfs-tools-4.4-4k-align.patch
@@ -16,24 +16,20 @@ increased_size = (number_of_unfragmented_files_in_image + number of fragments) *
 
 The 4k alignment can be enabled by flag '-4k-align'
 ---
- squashfs-tools/mksquashfs.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 8b1376f..683973d 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -99,6 +99,8 @@ int old_exclude = TRUE;
+diff -u a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
+--- a/squashfs-tools/mksquashfs.c	2019-07-06 15:50:22.214873176 +0000
++++ b/squashfs-tools/mksquashfs.c	2019-07-06 15:51:22.244802582 +0000
+@@ -100,7 +100,9 @@
  int use_regex = FALSE;
  int nopad = FALSE;
  int exit_on_error = FALSE;
- static off_t squashfs_start_offset = 0;
 +int do_4k_align = FALSE;
+ static off_t squashfs_start_offset = 0;
 +#define ALIGN_UP(bytes, size) (bytes = (bytes + size - 1) & ~(size - 1))
-
+ 
  long long global_uid = -1, global_gid = -1;
-
-@@ -1513,6 +1515,9 @@ void unlock_fragments()
+ 
+@@ -1495,6 +1497,9 @@
  	 * queue at this time.
  	 */
  	while(!queue_empty(locked_fragment)) {
@@ -41,9 +37,9 @@ index 8b1376f..683973d 100644
 +		if(do_4k_align)
 +			ALIGN_UP(bytes, 4096);
  		write_buffer = queue_get(locked_fragment);
- 		frg = write_buffer->block;
+ 		frg = write_buffer->block;	
  		size = SQUASHFS_COMPRESSED_SIZE_BLOCK(fragment_table[frg].size);
-@@ -2420,6 +2420,9 @@
+@@ -2414,6 +2419,9 @@
  	compressed_size = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
  	write_buffer->size = compressed_size;
  	if(fragments_locked == FALSE) {
@@ -53,18 +49,18 @@ index 8b1376f..683973d 100644
  		fragment_table[file_buffer->block].size = c_byte;
  		fragment_table[file_buffer->block].start_block = bytes;
  		write_buffer->block = bytes;
-@@ -2761,6 +2769,10 @@ int write_file_blocks(squashfs_inode *inode, struct dir_ent *dir_ent,
+@@ -2728,6 +2736,10 @@
  	long long sparse = 0;
  	struct file_buffer *fragment_buffer = NULL;
-
+ 
 +	// 4k align the start of each file.
 +	if(do_4k_align)
 +		ALIGN_UP(bytes, 4096);
 +
  	if(pre_duplicate(read_size))
  		return write_file_blocks_dup(inode, dir_ent, read_buffer, dup);
-
-@@ -4692,6 +4704,7 @@ void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad)
+ 
+@@ -4808,6 +4820,7 @@
  		"compressed", no_fragments ? "no" : noF ? "uncompressed" :
  		"compressed", no_xattrs ? "no" : noX ? "uncompressed" :
  		"compressed", noI || noId ? "uncompressed" : "compressed");
@@ -72,7 +68,7 @@ index 8b1376f..683973d 100644
  	printf("\tduplicates are %sremoved\n", duplicate_checking ? "" :
  		"not ");
  	printf("Filesystem size %.2f Kbytes (%.2f Mbytes)\n", bytes / 1024.0,
-@@ -5346,6 +5359,8 @@ print_compressor_options:
+@@ -5570,6 +5583,8 @@
  			root_name = argv[i];
  		} else if(strcmp(argv[i], "-version") == 0) {
  			VERSION();
@@ -81,7 +77,7 @@ index 8b1376f..683973d 100644
  		} else {
  			ERROR("%s: invalid option\n\n", argv[0]);
  printOptions:
-@@ -5387,6 +5402,7 @@ printOptions:
+@@ -5613,6 +5628,7 @@
  			ERROR("\t\t\tdirectory containing that directory, "
  				"rather than the\n");
  			ERROR("\t\t\tcontents of the directory\n");
@@ -89,5 +85,3 @@ index 8b1376f..683973d 100644
  			ERROR("\nFilesystem filter options:\n");
  			ERROR("-p <pseudo-definition>\tAdd pseudo file "
  				"definition\n");
---
-2.14.1.480.gb18f417b89-goog (previously; hand-patched by charles-dyfis-net)