bzip3 (https://github.com/kspalaiologos/bzip3) is a free and open-source 
LGPLv3-licensed data
compression utility that excels at compressing text and source code.

Compression ratio tests for the automake distribution tarball:
% wc -c *tar*
1885428 automake-1.17.0.91.tar.bz2
1500817 automake-1.17.0.91.tar.bz3
2456935 automake-1.17.0.91.tar.gz
1641112 automake-1.17.0.91.tar.xz

---
 bin/automake.in         | 3 ++-
 lib/Automake/Options.pm | 1 +
 lib/am/distdir.am       | 9 +++++++++
 t/dist-formats.tap      | 1 +
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/bin/automake.in b/bin/automake.in
index a17f45236..30d82bb96 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -3856,7 +3856,7 @@ sub handle_dist ()
     {
       my $archive_defined = option 'no-dist-gzip' ? 0 : 1;
       $archive_defined ||=
-       grep { option "dist-$_" } qw(shar zip tarZ bzip2 lzip xz zstd);
+       grep { option "dist-$_" } qw(shar zip tarZ bzip2 bzip3 lzip xz zstd);
       error (option 'no-dist-gzip',
             "no-dist-gzip specified but no dist-* specified,\n"
             . "at least one archive format must be enabled")
@@ -6898,6 +6898,7 @@ sub preprocess_file
                 'XZ'          => !! option 'dist-xz',
                 'LZIP'        => !! option 'dist-lzip',
                 'BZIP2'       => !! option 'dist-bzip2',
+                'BZIP3'       => !! option 'dist-bzip3',
                 'COMPRESS'    => !! option 'dist-tarZ',
                 'GZIP'        =>  ! option 'no-dist-gzip',
                 'SHAR'        => !! option 'dist-shar',
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
index 2dc7899f8..d08af3ef1 100644
--- a/lib/Automake/Options.pm
+++ b/lib/Automake/Options.pm
@@ -275,6 +275,7 @@ sub _is_valid_easy_option ($)
     color-tests
     dejagnu
     dist-bzip2
+    dist-bzip3
     dist-lzip
     dist-xz
     dist-zip
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index c85f6a325..4a7534f98 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -343,6 +343,12 @@ dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
        $(am__post_remove_distdir)

+?BZIP3?DIST_ARCHIVES += $(distdir).tar.bz3
+.PHONY: dist-bzip3
+dist-bzip3: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip3 -c 
>$(distdir).tar.bz3
+       $(am__post_remove_distdir)
+
 ?LZIP?DIST_ARCHIVES += $(distdir).tar.lz
 .PHONY: dist-lzip
 dist-lzip: distdir
@@ -390,6 +396,7 @@ dist-zip: distdir
 ?XZ?DIST_TARGETS += dist-xz
 ?SHAR?DIST_TARGETS += dist-shar
 ?BZIP2?DIST_TARGETS += dist-bzip2
+?BZIP3?DIST_TARGETS += dist-bzip3
 ?GZIP?DIST_TARGETS += dist-gzip
 ?ZIP?DIST_TARGETS += dist-zip
 ?ZSTD?DIST_TARGETS += dist-zstd
@@ -443,6 +450,8 @@ distcheck: dist
          eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.bz3*) \
+         bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\
        *.tar.lz*) \
          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
diff --git a/t/dist-formats.tap b/t/dist-formats.tap
index 34d88b67c..13250327c 100644
--- a/t/dist-formats.tap
+++ b/t/dist-formats.tap
@@ -59,6 +59,7 @@ setup_vars_for_compression_format ()
     lzip) suffix=tar.lz  compressor=lzip     ;;
       xz) suffix=tar.xz  compressor=xz       ;;
    bzip2) suffix=tar.bz2 compressor=bzip2    ;;
+   bzip3) suffix=tar.bz3 compressor=bzip3    ;;
      zip) suffix=zip     compressor=zip      ;;
     zstd) suffix=tar.zst compressor=zstd     ;;
        *) fatal_ "invalid compression format '$1'";;
-- 
2.45.2



Reply via email to