summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2021-07-01 04:15:27 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2021-07-01 04:27:17 +0200
commit460392d1f0d0ef5484df8834452cf94f211bf346 (patch)
tree84ec14e3e81a459b5017b2b462aefdcd536d21a2 /gnu
parenta7e0266c9bccbd3248021f158870dc94f7c8ffe0 (diff)
gnu: Add squashfs-tools-ng.
* gnu/packages/compression.scm (squashfs-tools-ng): New public variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/compression.scm74
1 files changed, 74 insertions, 0 deletions
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c5f24baeb4..5ff4d0646f 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -84,6 +84,7 @@
#: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 @@ for live media, and for embedded systems where low overhead is needed.
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")