gnu: Add lrzip.

Message ID 20160720225413.2903-1-me@tobias.gr
State New
Headers

Commit Message

Tobias Geerinckx-Rice July 20, 2016, 10:54 p.m. UTC
  * gnu/packages/compression.scm (lrzip): New variable.
---
 gnu/packages/compression.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
  

Comments

Eric Bavier July 21, 2016, 5:24 a.m. UTC | #1
Hello Tobias,

Thanks for the patch.  A few comments:

On Thu, 21 Jul 2016 00:54:13 +0200
Tobias Geerinckx-Rice <me@tobias.gr> wrote:

> * gnu/packages/compression.scm (lrzip): New variable.
> ---
>  gnu/packages/compression.scm | 32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
> index 6a17003..26467a4 100644
> --- a/gnu/packages/compression.scm
> +++ b/gnu/packages/compression.scm
> @@ -36,6 +36,7 @@
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system perl)
>    #:use-module (gnu packages)
> +  #:use-module (gnu packages assembly)
>    #:use-module (gnu packages autotools)
>    #:use-module (gnu packages backup)
>    #:use-module (gnu packages base)
> @@ -833,3 +834,34 @@ also be used to apply such patches.  xdelta is similar to @command{diff} and
>  @command{patch}, but is not limited to plain text and does not generate
>  human-readable output.")
>      (license license:asl2.0)))
> +
> +(define-public lrzip
> +  (package
> +    (name "lrzip")
> +    (version "0.630")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.bz2"))
> +       (sha256
> +        (base32
> +         "01ykxliqw4cavx9f2gawxfa9wf52cjy1qx28cnkrh6i3lfzzcq94"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("nasm" ,nasm)

ASM support seems to be supported only on x86/32-bit systems.  Could
you make this input conditional on the system type?  An example would
be the "lame" package in gnu/packages/mp3.scm.

> +       ("perl" ,perl)))
> +    (inputs
> +     `(("bzip2" ,bzip2)

Configure checks for libbz2 and the build instruction mention it as a
requirement, but there are no references retained in the output and I
don't see any references to libbz2 in the Makefile's.  Any ideas?

> +       ("lzo" ,lzo)
> +       ("zlib" ,zlib)))
> +    (home-page "http://ck.kolivas.org/apps/lrzip/")
> +    (synopsis "Large file compressor with a very high compression ratio")
> +    (description "lrzip is a compression utility that uses long-range
> +redundancy reduction to improve the subsequent compression ratio of
> +larger files.  It can then further compress the result with the ZPAQ or
> +LZMA algorithms for maximum compression, or LZO for maximum speed.  This
> +choice between size or speed allows for either better compression than
> +even LZMA can provide, or a higher speed than gzip while compressing as
> +well as bzip2.")
> +    (license license:gpl2+)))

The license should probably be "(list license:gpl3+
license:public-domain)" since there is at least one file, md5.c,
that is borrowed from glibc and is under a gpl3+ license; and several
of the files in the "lzma" directory have been released into the public
domain.

Could you send an updated patch?

`~Eric
  
Tobias Geerinckx-Rice July 21, 2016, 5:46 p.m. UTC | #2
Eric,

On 2016-07-21 07:24, Eric Bavier wrote:
> The license should probably be "(list license:gpl3+
> license:public-domain)" since there is at least one file, md5.c,

Thanks. That comma in ‘either version 3,’ threw off my simplistic
grepping for ‘version n of the Licence’.

Which prompts me to wonder, not for the first time: is there a
less tedious and more reliable way to do this, besides ‘just ask
Debian’?

Kind regards,

T G-R
  
Tobias Geerinckx-Rice July 21, 2016, 8:21 p.m. UTC | #3
Eric,

Thanks for the review!

On 2016-07-21 07:24, Eric Bavier wrote:
> ASM support seems to be supported only on x86/32-bit systems.  Could
> you make this input conditional on the system type?  An example would
> be the "lame" package in gnu/packages/mp3.scm.

And thank you for the specific pointers as well, they probably saved
me a lot of time.

Now, I decided to go for a slightly different approach that seemed
more straightforward. The ‘lame’ example seems to be aimed more at
the build architecture than the target's. My understanding of such
intricacies is still quite limited so someone please double-check.

Unless someone's using their Raspberry Pi to cross-compile for their
i7, I suspect the difference is theoretical.

>> +    (inputs
>> +     `(("bzip2" ,bzip2)
> 
> Configure checks for libbz2 and the build instruction mention it as a
> requirement, but there are no references retained in the output and I
> don't see any references to libbz2 in the Makefile's.  Any ideas?

I'm afraid you lost me here.

   $ grep lbz2 Makefile
   LIBS = -llzo2 -lbz2 -lz -lm -lpthread

In fact, the ./configure check is (probably incorrectly) non-fatal so
the build doesn't fail until you call ‘make’.

Building with ‘bzip2’ results in a correctly statically-linked
BZ2_bzBuffToBuffCompress(), so I don't see what other type of (input)
this could be. Surely not native?

That would totally break the i7 gal's build.

> Could you send an updated patch?

Will do!

Kind regards,

T G-R
  

Patch

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 6a17003..26467a4 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -36,6 +36,7 @@ 
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
@@ -833,3 +834,34 @@  also be used to apply such patches.  xdelta is similar to @command{diff} and
 @command{patch}, but is not limited to plain text and does not generate
 human-readable output.")
     (license license:asl2.0)))
+
+(define-public lrzip
+  (package
+    (name "lrzip")
+    (version "0.630")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "01ykxliqw4cavx9f2gawxfa9wf52cjy1qx28cnkrh6i3lfzzcq94"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("nasm" ,nasm)
+       ("perl" ,perl)))
+    (inputs
+     `(("bzip2" ,bzip2)
+       ("lzo" ,lzo)
+       ("zlib" ,zlib)))
+    (home-page "http://ck.kolivas.org/apps/lrzip/")
+    (synopsis "Large file compressor with a very high compression ratio")
+    (description "lrzip is a compression utility that uses long-range
+redundancy reduction to improve the subsequent compression ratio of
+larger files.  It can then further compress the result with the ZPAQ or
+LZMA algorithms for maximum compression, or LZO for maximum speed.  This
+choice between size or speed allows for either better compression than
+even LZMA can provide, or a higher speed than gzip while compressing as
+well as bzip2.")
+    (license license:gpl2+)))