Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package squashfs for openSUSE:Factory checked in at 2026-10-28 17:45:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/squashfs (Old) and /work/SRC/openSUSE:Factory/.squashfs.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "squashfs" Wed Oct 28 17:45:00 2026 rev:48 rq:1393033 version:4.7.5 Changes: -------- --- /work/SRC/openSUSE:Factory/squashfs/squashfs.changes 2023-07-04 15:22:06.918110207 +0200 +++ /work/SRC/openSUSE:Factory/.squashfs.new.2252680/squashfs.changes 2026-10-28 17:45:01.729255967 +0100 @@ -1,0 +2,29 @@ +Sun Oct 18 05:36:24 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 4.7.5: + * Mksquashfs now reads files in parallel (-small-readers, + -block-readers, -single-reader options), much faster on SSDs + and network filesystems; "fragment block stall" eliminated, + improving performance by 20% or more + * Rewritten help system using the full terminal width with pager + support and -help-all/-help-section/-help-option selectors + * New reproducible-image options: -repro, -repro-time, plus + -mkfs-time/-inode-time/-root-time inode variants + * Mksquashfs/Sqfstar can stream the filesystem to stdout + (-stream) and fix it up afterwards (-fix); sparse file + reading greatly sped up via SEEK_DATA + * New Align action, -force-file-mode/-force-dir-mode, + -numeric-owner, -mem/-mem-percent for unsquashfs and more + * Bug fixes: possible filesystem corruption with sparse files, + broken -max-depth, pseudo-file definition issues, -offset + regression, tar-file cache leak in sqfstar + * Many more fixes and improvements; see upstream's release notes + for the full list +- Rebase squashfs-64k.patch (pad to 64K for ppc64 alignment) to + 4.7.5, covering the new streamed-filesystem superblock padding + and the rewritten help texts; squashfs-thread-limit refreshed + for the reworked initialise_threads(). +- Adjust packaged docs to the new upstream layout (README.md, + CHANGES.md). + +------------------------------------------------------------------- Old: ---- 4.6.1.tar.gz New: ---- 4.7.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ squashfs.spec ++++++ --- /var/tmp/diff_new_pack.x5hfJp/_old 2026-10-28 17:45:02.478287073 +0100 +++ /var/tmp/diff_new_pack.x5hfJp/_new 2026-10-28 17:45:02.480287156 +0100 @@ -1,7 +1,7 @@ # # spec file for package squashfs # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,29 +16,29 @@ # +%if %{?suse_version} > 1315 +%define _lz4_def LZ4_SUPPORT=1 +BuildRequires: pkgconfig(liblz4) +%endif +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100 +%define _zstd_def ZSTD_SUPPORT=1 +BuildRequires: pkgconfig(libzstd) +%endif Name: squashfs -Version: 4.6.1 +Version: 4.7.5 Release: 0 Summary: A Read-Only File System with Efficient Compression License: GPL-2.0-or-later -Group: System/Filesystems URL: https://github.com/plougher/squashfs-tools Source0: https://github.com/plougher/squashfs-tools/archive/refs/tags/%{version}.tar.gz Patch0: squashfs-64k.patch Patch1: squashfs-thread-limit BuildRequires: help2man BuildRequires: lzma-devel -BuildRequires: lzo-devel -BuildRequires: zlib-devel +BuildRequires: pkgconfig +BuildRequires: pkgconfig(lzo2) +BuildRequires: pkgconfig(zlib) Supplements: filesystem(squashfs) -%if %{?suse_version} > 1315 -BuildRequires: liblz4-devel -%define _lz4_def LZ4_SUPPORT=1 -%endif -%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100 -BuildRequires: libzstd-devel -%define _zstd_def ZSTD_SUPPORT=1 -%endif %description This package contains the userland utilities to create and read @@ -50,7 +50,7 @@ %build %define _lto_cflags %{nil} sed -i -e "s|-O2|%{optflags}|" squashfs-tools/Makefile -make %{?_smp_mflags} -C squashfs-tools \ +%make_build -C squashfs-tools \ LZMA_XZ_SUPPORT=1 XZ_SUPPORT=1 LZO_SUPPORT=1 %{?_lz4_def} %{?_zstd_def} %install @@ -60,7 +60,7 @@ %files %license COPYING -%doc README-%{version} ACKNOWLEDGEMENTS CHANGES USAGE-4.6 +%doc README.md ACKNOWLEDGEMENTS CHANGES.md %{_bindir}/sqfs* %{_bindir}/mksquashfs %{_bindir}/unsquashfs ++++++ 4.6.1.tar.gz -> 4.7.5.tar.gz ++++++ ++++ 47485 lines of diff (skipped) ++++++ squashfs-64k.patch ++++++ --- /var/tmp/diff_new_pack.x5hfJp/_old 2026-10-28 17:45:02.698296210 +0100 +++ /var/tmp/diff_new_pack.x5hfJp/_new 2026-10-28 17:45:02.704296459 +0100 @@ -1,51 +1,75 @@ -Index: squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c -=================================================================== ---- squashfs-tools-4.6.1.orig/squashfs-tools/mksquashfs.c -+++ squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c -@@ -6378,7 +6378,7 @@ static void print_options(FILE *stream, - fprintf(stream, "file on\n\t\t\tencountering them. This option makes "); - fprintf(stream, "Mksquashfs ignore\n\t\t\tthe zero filled blocks\n"); - fprintf(stream, "\nExpert options (these may make the filesystem unmountable):\n"); -- fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n"); -+ fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n"); - fprintf(stream, "-offset <offset>\tskip <offset> bytes at the beginning of "); - fprintf(stream, "FILESYSTEM.\n\t\t\tOptionally a suffix of K, M or G can be given "); - fprintf(stream, "to specify\n\t\t\tKbytes, Mbytes or Gbytes respectively.\n"); -@@ -6606,7 +6606,7 @@ static void print_sqfstar_options(FILE * - fprintf(stream, "memory for caches. Default 25%%\n"); - fprintf(stream, "-mem-default\t\tprint default memory usage in Mbytes\n"); - fprintf(stream, "\nExpert options (these may make the filesystem unmountable):\n"); -- fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n"); -+ fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n"); - fprintf(stream, "-offset <offset>\tskip <offset> bytes at the beginning of "); - fprintf(stream, "FILESYSTEM.\n\t\t\tOptionally a suffix of K, M or G can be given "); - fprintf(stream, "to specify\n\t\t\tKbytes, Mbytes or Gbytes respectively.\n"); -@@ -7605,9 +7605,9 @@ print_sqfstar_compressor_options: - set_progressbar_state(FALSE); - write_filesystem_tables(&sBlk); +diff -urN squashfs-tools-4.7.5/squashfs-tools/mksquashfs.c new/squashfs-tools/mksquashfs.c +Index: squashfs-tools-4.7.5/squashfs-tools/mksquashfs.c +--- squashfs-tools-4.7.5.orig/squashfs-tools/mksquashfs.c 2026-03-01 23:42:49.000000000 +0100 ++++ squashfs-tools-4.7.5/squashfs-tools/mksquashfs.c 2026-10-18 07:35:40.847607130 +0200 +@@ -593,9 +593,9 @@ + strerror(errno)); + } + +- if(!nopad && (i = get_dpos() & (4096 - 1))) { +- char temp[4096] = {0}; +- write_destination(fd, get_dpos(), 4096 - i, temp); ++ if(!nopad && (i = get_dpos() & (65536 - 1))) { ++ char temp[65536] = {0}; ++ write_destination(fd, get_dpos(), 65536 - i, temp); + } -- if(!nopad && (i = bytes & (4096 - 1))) { + write_superblock(&sBlk); +@@ -5961,7 +5961,7 @@ + long long block; + + if(streaming) +- block = nopad ? get_dpos() : (get_dpos() + 4095) & ~4095; ++ block = nopad ? get_dpos() : (get_dpos() + 65535) & ~65535; + else + block = SQUASHFS_START; + +@@ -7488,9 +7488,9 @@ + strerror(errno)); + } + +- if(!nopad && (i = get_dpos() & (4096 - 1))) { - char temp[4096] = {0}; -- write_destination(fd, bytes, 4096 - i, temp); -+ if(!nopad && (i = bytes & (65536 - 1))) { +- write_destination(fd, get_dpos(), 4096 - i, temp); ++ if(!nopad && (i = get_dpos() & (65536 - 1))) { + char temp[65536] = {0}; -+ write_destination(fd, bytes, 65536 - i, temp); ++ write_destination(fd, get_dpos(), 65536 - i, temp); } - res = close(fd); -@@ -8877,10 +8877,10 @@ print_compressor_options: + write_superblock(&sBlk); +@@ -8943,9 +8943,9 @@ + strerror(errno)); + } - set_progressbar_state(FALSE); - write_filesystem_tables(&sBlk); -- -- if(!nopad && (i = bytes & (4096 - 1))) { +- if(!nopad && (i = get_dpos() & (4096 - 1))) { - char temp[4096] = {0}; -- write_destination(fd, bytes, 4096 - i, temp); -+ -+ if(!nopad && (i = bytes & (65536 - 1))) { +- write_destination(fd, get_dpos(), 4096 - i, temp); ++ if(!nopad && (i = get_dpos() & (65536 - 1))) { + char temp[65536] = {0}; -+ write_destination(fd, bytes, 65536 - i, temp); ++ write_destination(fd, get_dpos(), 65536 - i, temp); } - res = close(fd); + write_superblock(&sBlk); +diff -urN squashfs-tools-4.7.5/squashfs-tools/mksquashfs_help.c new/squashfs-tools/mksquashfs_help.c +Index: squashfs-tools-4.7.5/squashfs-tools/mksquashfs_help.c +--- squashfs-tools-4.7.5.orig/squashfs-tools/mksquashfs_help.c 2026-03-01 23:42:49.000000000 +0100 ++++ squashfs-tools-4.7.5/squashfs-tools/mksquashfs_help.c 2026-10-18 07:35:40.847607130 +0200 +@@ -464,7 +464,7 @@ + "-stream " "option\n", + "-fix <filesystem>\tfix <filesystem> generated using the -stream " + "option\n", +- "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n", ++ "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n", + "-offset <offset>\tskip <offset> bytes at the beginning of FILESYSTEM." + " Optionally a suffix of K, M or G can be given to specify " + "Kbytes, Mbytes or Gbytes respectively. Default 0 bytes\n", +@@ -784,7 +784,7 @@ + "the -stream option\n", + "-fix <filesystem>\tfix <filesystem> generated using the -stream " + "option\n", +- "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n", ++ "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n", + "-offset <offset>\tskip <offset> bytes at the beginning of " + "FILESYSTEM. Optionally a suffix of K, M or G can be given to " + "specify Kbytes, Mbytes or Gbytes respectively. Default 0 " ++++++ squashfs-thread-limit ++++++ --- /var/tmp/diff_new_pack.x5hfJp/_old 2026-10-28 17:45:02.740297954 +0100 +++ /var/tmp/diff_new_pack.x5hfJp/_new 2026-10-28 17:45:02.753298494 +0100 @@ -1,11 +1,11 @@ -Index: squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c +Index: squashfs-tools-4.7.5/squashfs-tools/mksquashfs.c =================================================================== ---- squashfs-tools-4.6.1.orig/squashfs-tools/mksquashfs.c -+++ squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c -@@ -5276,6 +5276,15 @@ static void initialise_threads(int readq - } - #endif - } +--- squashfs-tools-4.7.5.orig/squashfs-tools/mksquashfs.c ++++ squashfs-tools-4.7.5/squashfs-tools/mksquashfs.c +@@ -5440,6 +5440,16 @@ static void initialise_threads(int readq + if(pthread_sigmask(SIG_BLOCK, &sigmask, &old_mask) != 0) + BAD_ERROR("Failed to set signal mask in initialise_threads\n"); + + /* Every frag_thrd will: + * * occupy a slot in the process table (_SC_CHILD_MAX), and will + * * allocate SQUASHFS_FILE_MAX_SIZE (currently 1MiB), which is @@ -15,7 +15,8 @@ + * ourselves to an impressive but sane arbitrary maximum. + */ + if (processors > 64) processors = 64; - ++ if(multiply_overflow(processors, 3) || multiply_overflow(processors * 3, sizeof(pthread_t))) + BAD_ERROR("Processors too large\n");
