gnu: Add squashfs-tools-ng.

* gnu/packages/compression.scm (squashfs-tools-ng): New public variable.
This commit is contained in:
Tobias Geerinckx-Rice 2021-07-01 04:15:27 +02:00
parent a7e0266c9b
commit 460392d1f0
No known key found for this signature in database
GPG key ID: 0DB0FF884F556D79

View file

@ -84,6 +84,7 @@ (define-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages selinux)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages version-control)
@ -904,6 +905,79 @@ (define-public squashfs-tools
This package allows you to create and extract such file systems.")
(license license:gpl2+)))
(define-public squashfs-tools-ng
(package
(name "squashfs-tools-ng")
(version "1.1.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/AgentD/squashfs-tools-ng")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "13gx6mc57wjjnrpnkb74zi2wiqazz2q715y1zz7rff02wh1vb5k9"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete bundled third-party libraries.
(for-each (lambda (directory)
(substitute* "Makefile.am"
(((format #f "^include ~a.*" directory)) ""))
(delete-file-recursively directory))
(list "lib/lz4"
"lib/zlib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--disable-static")))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(inputs
`(("libselinux" ,libselinux)
;; Compression algorithms.
("bzip2" ,bzip2)
("lz4" ,lz4)
("lzo" ,lzo)
("xz" ,xz)
("zlib" ,zlib)
("zstd:lib" ,zstd "lib")))
(home-page "https://github.com/AgentD/squashfs-tools-ng")
(synopsis "Tools to create and extract squashfs file systems")
(description
"Squashfs is a highly compressed read-only file system for Linux. It
compresses files, inodes, and directories with one of several compressors.
All blocks are packed to minimize the data overhead, and block sizes of
between 4K and 1M are supported. It is intended to be used for archival use,
for live media, and for embedded systems where low overhead is needed.
The squashfs-tools-ng package offers alternative tooling to create and extract
such file systems. It is not based on the older squashfs-tools package and
its tools have different names:
@enumerate
@item @command{gensquashfs} produces SquashFS images from a directory or
@command{gen_init_cpio}-like file listings and can generate SELinux labels.
@item @command{rdsquashfs} inspects and unpacks SquashFS images.
@item @command{sqfs2tar} and @command{tar2sqfs} convert between SquashFS and
tarballs.
@item @command{sqfsdiff} compares the contents of two SquashFS images.
@end enumerate
These commands are largely command-line wrappers around the included
@code{libsquashfs} library that intends to make SquashFS available to other
applications as an embeddable, extensible archive format.
Both the library and tools operate deterministically: same input will produce
byte-for-byte identical output.")
;; Upstream goes to some lengths to ensure that libsquashfs is LGPL3+.
(license license:gpl3+)))
(define-public pigz
(package
(name "pigz")