[ANN] Squashfs-tools 4.6 released

From: Phillip Lougher
Date: Wed Mar 22 2023 - 01:29:15 EST


Hi,

I'm pleased to announce the release of Squashfs tools 4.6.

The release can be downloaded either from Sourceforge, or GitHub.

https://sourceforge.net/projects/squashfs/files/latest/download

https://github.com/plougher/squashfs-tools/archive/refs/tags/4.6.tar.gz

A summary of the changes is below. Please see the README-4.6 file in
the release tarball for more information and the USAGE files.

Phillip

1. Summary of changes
---------------------

1. Extended attribute handling improved in Mksquashfs and Sqfstar

1.1.New -xattrs-exclude option to exclude extended attributes from files
using a regular expression.
1.2 New -xattrs-include option to include extended attributes from files
using a regular expression.
1.3 New -xattrs-add option to add extended attributes to files.
1.4 New Pseudo file xattr definition to add extended attributes to
files.
1.5 New xattrs-add Action to add extended attributes to files
(Mksquashfs only).

2. Extended attribute handling improved in Unsquashfs

2.1 New -xattrs-exclude option to exclude extended attributes from files
using a regular expression.
2.2 New -xattrs-include option to include extended attributes from files
using a regular expression.
2.3 Extended attributes are now supported in Pseudo file output.

3. Other major improvements

3.1 Unsquashfs can now output Pseudo files to standard out.
3.2 Mksquashfs can now input Pseudo files from standard in.
3.3 Squashfs filesystems can now be converted (different block size
compression etc) without unpacking to an intermediate filesystem or
mounting, by piping the output of Unsquashfs to Mksquashfs.
3.4 Pseudo files are now supported by Sqfstar.
3.5 "Non-anchored" excludes are now supported by Unsquashfs.

4. Mksquashfs minor improvements

4.1 A new -max-depth option has been added, which limits the depth
Mksquashfs descends when creating the filesystem.
4.2 A new -mem-percent option which allows memory for caches to be
specified as a percentage of physical RAM, rather than requiring an
absolute value.
4.3 A new -percentage option added which rather than generating the full
progress-bar instead outputs a percentage. This can be used with
dialog --gauge etc.
4.4 -mkfs-time, -all-time and -root-time options now take a human date
string, in addition to the seconds since the epoch of 1970 00:00
UTC. For example "now", "last week", "Wed Mar 8 05:55:01 GMT 2023"
are supported.
4.5 -root-uid, -root-gid, -force-uid and -force-gid options now take a
user/group name in addition to the integer uid/gid.
4.6 A new -mem-default option which displays default memory usage for
caches in Mbytes.
4.7 A new -no-compression option which produces no compression, and it
is a short-cut for -noI, -noD, -noF and -noX.
4.8 A new -pseudo-override option which makes pseudo file uids and gids
override -all-root, -force-uid and -force-gid options. Normally
these options take precedence.

5. Unsquashfs minor improvements

5.1 New -all-time option which sets all file timestamps to <time>,
rather than the time stored in the filesystem inode. <time> can be
an integer indicating seconds since the epoch (1970-01-01) or a
human string value such as "now", "last week", or
"Wed Feb 15 21:02:39 GMT 2023".
5.2 New -full-precision option which uses full precision when displaying
times including seconds. Use with -linfo, -lls, -lln and -llc
options.
5.3 New -match option where Unsquashfs will abort if any extract file
does not match on anything, and can not be resolved.
5.4 New -percentage option added which rather than generating the full
progress-bar instead outputs a percentage. This can be used with
dialog --gauge etc.

6. Sqfstar minor improvements

6.1 New -ignore-zeros option added which allows tar files to be
concatenated together and fed to Sqfstar. Normally a tarfile has
two consecutive 512 byte blocks filled with zeros which means EOF
and Sqfstar will stop reading after the first tar file on
encountering them. This option makes Sqfstar ignore the zero filled
blocks.
6.2 A new -mem-percent option which allows memory for caches to be
specified as a percentage of physical RAM, rather than requiring an
absolute value.
6.3 A new -percentage option added which rather than generating the full
progress-bar instead outputs a percentage. This can be used with
dialog --gauge etc.
6.4 -mkfs-time, -all-time and -root-time options now take a human date
string, in addition to the seconds since the epoch of 1970 00:00
UTC. For example "now", "last week", "Wed Mar 8 05:55:01 GMT 2023"
are supported.
6.5 -root-uid, -root-gid, -force-uid and -force-gid options now take a
user/group name in addition to the integer uid/gid.
6.6 A new -mem-default option which displays default memory usage for
caches in Mbytes.
6.7 A new -no-compression option which produces no compression, and it
is a short-cut for -noI, -noD, -noF and -noX.
6.8 A new -pseudo-override option which makes pseudo file uids and gids
override -all-root, -force-uid and -force-gid options. Normally
these options take precedence.
6.9 Do not abort if ZERO filled blocks indicating end of the TAR archive
are missing.

7. Other minor improvements

7.1 If Mksquashfs/Unsquashfs fails to execute generating the manpages
because they have been cross-compiled, fall back to using the
pre-built manpages.
7.2 Add new Makefile configure option USE_PREBUILT_MANPAGES to always
use pre-built manpages rather than generating them when "make
install" is run.

8. Major bug fixes

8.1 Following a symlink in Sqfscat or where -follow-symlinks option is
given with Unsquashfs, incorrectly triggered the corrupted
filesystem loop detection code.
8.2 In Unsquashfs if a file was not writable it could not add extended
attributes to it.
8.3 Sqfstar would incorrectly reject compressor specific options that
have an argument.
8.4 Sqfstar would incorrectly strip pathname components in PAX header
linkpath if symbolic.
8.5 Sqfstar -root-uid, -root-gid and -root-time options were documented
but not implemented.
8.6 Mksquashfs -one-file-system option would not create empty mount
point directory when filesystem boundary crossed.
8.7 Mksquashfs did not check the close() return result.