25661054 Update pigz to version 2.3.4
authorRich Burridge <rich.burridge@oracle.com>
Tue, 14 Mar 2017 14:25:23 -0700
changeset 7750 dd29141c63d5
parent 7749 a43ac3f5a0f5
child 7751 bca17dc2b15e
25661054 Update pigz to version 2.3.4
components/pigz/Makefile
components/pigz/patches/201_no-lpthread.patch
components/pigz/patches/202_index.patch
components/pigz/patches/203_dir_traversal.patch
components/pigz/patches/300_system-test.patch
components/pigz/test/results-64.master
--- a/components/pigz/Makefile	Tue Mar 14 13:30:05 2017 -0700
+++ b/components/pigz/Makefile	Tue Mar 14 14:25:23 2017 -0700
@@ -26,14 +26,14 @@
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		pigz
-COMPONENT_VERSION=	2.3.3
+COMPONENT_VERSION=	2.3.4
 COMPONENT_PROJECT_URL=	http://zlib.net/pigz/
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:4e8b67b432ce7907575a549f3e1cac4709781ba0f6b48afea9f59369846b509c
+    sha256:6f031fa40bc15b1d80d502ff91f83ba14f4b079e886bfb83221374f7bf5c8f9a
 COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)$(COMPONENT_ARCHIVE)
 COMPONENT_ANITYA_ID=	3642
 
-TPNO=			31875
+TPNO=			34040
 
 BUILD_STYLE= justmake
 INSTALL_TARGET= build
--- a/components/pigz/patches/201_no-lpthread.patch	Tue Mar 14 13:30:05 2017 -0700
+++ b/components/pigz/patches/201_no-lpthread.patch	Tue Mar 14 14:25:23 2017 -0700
@@ -1,20 +1,14 @@
-# HG changeset patch
-# User Michael Gerdts <[email protected]>
-# Date 1412623238 25200
-#      Mon Oct 06 12:20:38 2014 -0700
-# Node ID 08d5c81201b3215699b91cdc9b17f60c4bd86e7e
-# Parent  1debb63439545fd0b30153eb68e884623d06c531
-do not link with libpthread - developed by Oracle
+Do not link with libpthread - developed by Oracle
 Not submitted upstream: specific to Solaris but no Solaris Makefile upstream
 
---- pigz-2.3.3/Makefile.orig	2016-09-26 10:42:09.822806707 +0000
-+++ pigz-2.3.3/Makefile	2016-09-26 10:51:57.724668109 +0000
[email protected]@ -5,7 +5,7 @@
+--- pigz-2.3.4/Makefile.orig	2017-03-02 13:22:22.763647319 +0000
++++ pigz-2.3.4/Makefile	2017-03-02 13:23:21.953773653 +0000
[email protected]@ -1,7 +1,7 @@
+ CC=cc
+ CFLAGS=-O3 -Wall -Wextra
+ LDFLAGS=
+-LIBS=-lm -lpthread -lz
++LIBS=-lm -lz
+ ZOPFLI=zopfli/src/zopfli/
  # use gcc and gmake on Solaris
  
- pigz: pigz.o yarn.o try.o ${ZOPFLI}deflate.o ${ZOPFLI}blocksplitter.o ${ZOPFLI}tree.o ${ZOPFLI}lz77.o ${ZOPFLI}cache.o ${ZOPFLI}hash.o ${ZOPFLI}util.o ${ZOPFLI}squeeze.o ${ZOPFLI}katajainen.o
--	$(CC) $(LDFLAGS) -o pigz $^ -lpthread -lm
-+	$(CC) $(LDFLAGS) -o pigz $^ -lm
- 	ln -f pigz unpigz
- 
- pigz.o: pigz.c yarn.h try.h ${ZOPFLI}deflate.h ${ZOPFLI}util.h
--- a/components/pigz/patches/202_index.patch	Tue Mar 14 13:30:05 2017 -0700
+++ b/components/pigz/patches/202_index.patch	Tue Mar 14 14:25:23 2017 -0700
@@ -1,11 +1,11 @@
 Support for parallel decompression.
 Written by Mihael Gerdts <[email protected]>
 
-These changes should be sent upstream.
+These changes have been sent upstream.
 
---- pigz-2.3.3/Makefile.orig	2016-09-26 11:06:54.000000000 +0000
-+++ pigz-2.3.3/Makefile	2016-09-26 13:16:05.000000000 +0000
[email protected]@ -70,6 +70,15 @@
+--- pigz-2.3.4/Makefile.orig	2017-03-02 13:32:39.612576924 +0000
++++ pigz-2.3.4/Makefile	2017-03-02 13:32:51.018629392 +0000
[email protected]@ -71,6 +71,15 @@
  	  compress -f < pigz.c | ./unpigz | cmp - pigz.c ;\
  	fi
  	@rm -f pigz.c.gz pigz.c.zz pigz.c.zip
@@ -21,11 +21,11 @@
  
  tests: dev test
  	./pigzn -kf pigz.c ; ./pigz -t pigz.c.gz
---- pigz-2.3.3/pigz.1.orig	2016-09-26 11:07:52.000000000 +0000
-+++ pigz-2.3.3/pigz.1	2016-09-26 11:12:03.000000000 +0000
[email protected]@ -185,6 +185,14 @@
+--- pigz-2.3.4/pigz.1.orig	2017-03-02 13:33:31.420259920 +0000
++++ pigz-2.3.4/pigz.1	2017-03-02 13:33:41.537522623 +0000
[email protected]@ -188,6 +188,14 @@
  .B -V --version
- Show the version of pigz.
+ Show the version of pigz. -vV also shows the zlib version.
  .TP
 +.B -X --index file
 +During compression, create an index that can be used for parallel
@@ -38,9 +38,9 @@
  .B -z --zlib
  Compress to zlib (.zz) instead of gzip format.
  .TP
---- pigz-2.3.3/pigz.c.orig	2016-09-26 11:07:43.000000000 +0000
-+++ pigz-2.3.3/pigz.c	2016-09-27 08:09:45.122201079 +0000
[email protected]@ -218,14 +218,27 @@
+--- pigz-2.3.4/pigz.c.orig	2017-03-02 13:26:45.154085766 +0000
++++ pigz-2.3.4/pigz.c	2017-03-02 13:29:35.979415416 +0000
[email protected]@ -224,14 +224,27 @@
     the --independent or -i option, so that the blocks can be decompressed
     independently for partial error recovery or for random access.
  
@@ -73,7 +73,7 @@
     pigz requires zlib 1.2.1 or later to allow setting the dictionary when doing
     raw deflate.  Since zlib 1.2.3 corrects security vulnerabilities in zlib
     version 1.2.1 and 1.2.2, conditionals check for zlib 1.2.3 or later during
[email protected]@ -260,7 +273,7 @@
[email protected]@ -266,7 +279,7 @@
     jobs until instructed to return.  When a job is pulled, the dictionary, if
     provided, will be loaded into the deflate engine and then that input buffer
     is dropped for reuse.  Then the input data is compressed into an output
@@ -82,7 +82,7 @@
     is then put into the write job list, sorted by the sequence number. The
     compress thread however continues to calculate the check value on the input
     data, either a CRC-32 or Adler-32, possibly in parallel with the write
[email protected]@ -286,13 +299,14 @@
[email protected]@ -292,13 +305,14 @@
     can't get way ahead of the write thread and build up a large backlog of
     unwritten compressed data.  The write thread will write the compressed data,
     drop the output buffer, and then wait for the check value to be unlocked
@@ -104,7 +104,7 @@
  
     The input and output buffers are reused through their collection in pools.
     Each buffer has a use count, which when decremented to zero returns the
[email protected]@ -341,6 +355,9 @@
[email protected]@ -347,6 +361,9 @@
  #if __STDC_VERSION__-0 >= 199901L || __GNUC__-0 >= 3
  #  include <inttypes.h> /* intmax_t */
  #endif
@@ -112,9 +112,9 @@
 +#include <sys/mman.h>   /* mmap() */
 +#include <netinet/in.h> /* htonl() */
  
- #ifdef DEBUG
+ #ifdef PIGZ_DEBUG
  #  if defined(__APPLE__)
[email protected]@ -473,9 +490,11 @@
[email protected]@ -490,9 +507,11 @@
      char *prog;             /* name by which pigz was invoked */
      int ind;                /* input file descriptor */
      int outd;               /* output file descriptor */
@@ -126,16 +126,7 @@
      int verbosity;          /* 0 = quiet, 1 = normal, 2 = verbose, 3 = trace */
      int headis;             /* 1 to store name, 2 to store date, 3 both */
      int pipeout;            /* write output to stdout even if file */
[email protected]@ -620,7 +639,7 @@
- 
- local void yarn_free(void *ptr)
- {
--    return free_track(&mem_track, ptr);
-+    free_track(&mem_track, ptr);
- }
- #endif
- 
[email protected]@ -820,12 +839,15 @@
[email protected]@ -837,12 +856,15 @@
  
  #endif
  
@@ -151,7 +142,7 @@
      if (g.outd != -1 && g.outd != 1) {
          unlink(g.outf);
          RELEASE(g.outf);
[email protected]@ -951,11 +973,23 @@
[email protected]@ -968,11 +990,23 @@
      return dos;
  }
  
@@ -176,7 +167,7 @@
  /* write a gzip, zlib, or zip header using the information in the globals */
  local unsigned long put_header(void)
  {
[email protected]@ -1253,7 +1287,7 @@
[email protected]@ -1272,7 +1306,7 @@
  
  /* get a space from a pool -- the use count is initially set to one, so there
     is no need to call use_space() for the first use */
@@ -185,7 +176,7 @@
  {
      struct space *space;
  
[email protected]@ -1266,6 +1300,15 @@
[email protected]@ -1285,6 +1319,15 @@
      if (pool->head != NULL) {
          space = pool->head;
          possess(space->use);
@@ -201,7 +192,7 @@
          pool->head = space->next;
          twist(pool->have, BY, -1);      /* one less in pool */
          twist(space->use, TO, 1);       /* initially one user */
[email protected]@ -1281,13 +1324,18 @@
[email protected]@ -1300,13 +1343,18 @@
      release(pool->have);
      space = alloc(NULL, sizeof(struct space));
      space->use = new_lock(1);           /* initially one user */
@@ -222,7 +213,7 @@
  /* increase the size of the buffer in space */
  local void grow_space(struct space *space)
  {
[email protected]@ -1354,17 +1402,35 @@
[email protected]@ -1373,17 +1421,35 @@
      return count;
  }
  
@@ -259,7 +250,7 @@
  struct job {
      long seq;                   /* sequence number */
      int more;                   /* true if this is not the last chunk */
[email protected]@ -1411,6 +1477,7 @@
[email protected]@ -1430,6 +1496,7 @@
      new_pool(&out_pool, OUTPOOL(g.block), -1);
      new_pool(&dict_pool, DICT, -1);
      new_pool(&lens_pool, g.block >> (RSYNCBITS - 1), -1);
@@ -267,7 +258,7 @@
  }
  
  /* command the compress threads to all return, then join them all (call from
[email protected]@ -1447,6 +1514,8 @@
[email protected]@ -1466,6 +1533,8 @@
      Trace(("-- freed %d output buffers", caught));
      caught = free_pool(&in_pool);
      Trace(("-- freed %d input buffers", caught));
@@ -276,7 +267,7 @@
      free_lock(write_first);
      free_lock(compress_have);
      compress_have = NULL;
[email protected]@ -1710,18 +1779,483 @@
[email protected]@ -1738,18 +1807,483 @@
      }
  }
  
@@ -762,7 +753,7 @@
      unsigned long check;            /* check value of uncompressed data */
      ball_t err;                     /* error information from throw() */
  
[email protected]@ -1747,23 +2281,27 @@
[email protected]@ -1775,23 +2309,27 @@
              /* update lengths, save uncompressed length for COMB */
              more = job->more;
              len = job->in->len;
@@ -794,7 +785,7 @@
              /* free the job */
              free_lock(job->calc);
              FREE(job);
[email protected]@ -1845,7 +2383,7 @@
[email protected]@ -1873,7 +2411,7 @@
      setup_jobs();
  
      /* start write thread */
@@ -803,7 +794,7 @@
  
      /* read from input and start compress threads (write thread will pick up
         the output of the compress threads) */
[email protected]@ -2303,7 +2841,7 @@
[email protected]@ -2336,7 +2874,7 @@
  #ifndef NOTHREAD
      /* if first time in or procs == 1, read a buffer to have something to
         return, otherwise wait for the previous read job to complete */
@@ -812,7 +803,7 @@
          /* if first time, fire up the read thread, ask for a read */
          if (g.in_which == -1) {
              g.in_which = 1;
[email protected]@ -2404,12 +2942,6 @@
[email protected]@ -2437,12 +2975,6 @@
          g.in_next += togo; \
      } while (0)
  
@@ -825,7 +816,7 @@
  /* convert MS-DOS date and time to a Unix time, assuming current timezone
     (you got a better idea?) */
  local time_t dos2time(unsigned long dos)
[email protected]@ -3033,6 +3565,73 @@
[email protected]@ -3066,6 +3598,73 @@
      return 0;
  }
  
@@ -899,7 +890,7 @@
  /* inflate for decompression or testing -- decompress from ind to outd unless
     decode != 1, in which case just test ind, and then also list if list != 0;
     look for and decode multiple, concatenated gzip and/or zlib streams;
[email protected]@ -3040,10 +3639,8 @@
[email protected]@ -3073,10 +3672,8 @@
  local void infchk(void)
  {
      int ret, cont, was;
@@ -911,7 +902,7 @@
      off_t clen;
  
      cont = 0;
[email protected]@ -3080,72 +3677,7 @@
[email protected]@ -3113,72 +3710,7 @@
          /* compute compressed data length */
          clen = g.in_tot - g.in_left;
  
@@ -985,7 +976,7 @@
  
          /* show file information if requested */
          if (g.list) {
[email protected]@ -3169,6 +3701,231 @@
[email protected]@ -3202,6 +3734,231 @@
          complain("warning: %s: trailing junk was ignored", g.inf);
  }
  
@@ -1217,7 +1208,7 @@
  /* --- decompress Unix compress (LZW) input --- */
  
  /* Type for accumulating bits.  23 bits will be used to accumulate up to 16-bit
[email protected]@ -3576,7 +4333,7 @@
[email protected]@ -3614,7 +4371,7 @@
          if (g.decode == 2) {
              try {
                  if (method == 8)
@@ -1226,7 +1217,7 @@
                  else {
                      unlzw();
                      if (g.list) {
[email protected]@ -3649,19 +4406,8 @@
[email protected]@ -3687,19 +4444,8 @@
  
          /* if exists and not -f, give user a chance to overwrite */
          if (g.outd < 0 && errno == EEXIST && isatty(0) && g.verbosity) {
@@ -1248,7 +1239,7 @@
          }
  
          /* if exists and no overwrite, report and go on to next */
[email protected]@ -3684,10 +4430,11 @@
[email protected]@ -3722,10 +4468,11 @@
      /* process ind to outd */
      if (g.verbosity > 1)
          fprintf(stderr, "%s to %s ", g.inf, g.outf);
@@ -1261,7 +1252,7 @@
              else if (method == 257)
                  unlzw();
              else
[email protected]@ -3708,8 +4455,14 @@
[email protected]@ -3746,8 +4493,14 @@
          }
      }
  #ifndef NOTHREAD
@@ -1277,7 +1268,7 @@
  #endif
      else
          single_compress(0);
[email protected]@ -3718,6 +4471,10 @@
[email protected]@ -3756,6 +4509,10 @@
          fflush(stderr);
      }
  
@@ -1288,7 +1279,7 @@
      /* finish up, copy attributes, set times, delete original */
      if (g.ind != 0)
          close(g.ind);
[email protected]@ -3781,6 +4538,9 @@
[email protected]@ -3819,6 +4576,9 @@
  "  -v, --verbose        Provide more verbose output",
  #endif
  "  -V  --version        Show the version of pigz",
@@ -1298,7 +1289,7 @@
  "  -z, --zlib           Compress to zlib (.zz) instead of gzip format",
  "  --                   All arguments after \"--\" are treated as files"
  };
[email protected]@ -3859,11 +4619,11 @@
[email protected]@ -3897,11 +4657,11 @@
      {"LZW", "Z"}, {"ascii", "a"}, {"best", "9"}, {"bits", "Z"},
      {"blocksize", "b"}, {"decompress", "d"}, {"fast", "1"}, {"first", "F"},
      {"force", "f"}, {"help", "h"}, {"independent", "i"}, {"iterations", "I"},
@@ -1315,7 +1306,7 @@
      {"version", "V"}, {"zip", "K"}, {"zlib", "z"}};
  #define NLOPTS (sizeof(longopts) / (sizeof(char *) << 1))
  
[email protected]@ -3903,7 +4663,7 @@
[email protected]@ -3941,7 +4701,7 @@
  
      /* if no argument or dash option, check status of get */
      if (get && (arg == NULL || *arg == '-')) {
@@ -1324,15 +1315,15 @@
          throw(EINVAL, "missing parameter after %s", bad);
      }
      if (arg == NULL)
[email protected]@ -3972,6 +4732,7 @@
-             case 'S':  get = 3;  break;
-             case 'T':  g.headis &= ~0xa;  break;
-             case 'V':  fputs(VERSION, stderr);  exit(0);
[email protected]@ -4014,6 +4774,7 @@
+                 if (g.verbosity > 1)
+                     fprintf(stderr, "zlib %s\n", zlibVersion());
+                 exit(0);
 +            case 'X':  g.setdict = 0; get = 6;  break;
              case 'Z':
                  throw(EINVAL, "invalid option: LZW output not supported: %s",
                        bad);
[email protected]@ -4001,7 +4762,7 @@
[email protected]@ -4043,7 +4804,7 @@
              return 0;
      }
  
@@ -1341,7 +1332,7 @@
      if (get) {
          size_t n;
  
[email protected]@ -4036,6 +4797,8 @@
[email protected]@ -4078,6 +4839,8 @@
              g.zopts.numiterations = num(arg);   /* optimization iterations */
          else if (get == 5)
              g.zopts.blocksplittingmax = num(arg);   /* max block splits */
--- a/components/pigz/patches/203_dir_traversal.patch	Tue Mar 14 13:30:05 2017 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-Fix bug in directory traversal.
-
-This off-by-one error resulted in useless reexamination of the
-same files by descending twice into each directory.
-
-See:
-
-https://github.com/madler/pigz/commit/06b5347948ff2d675ebbeb943941e2b7610082f3
-
-This fix has already been integrated upstream.
-
---- pigz-2.3.3/pigz.c.orig	2016-10-03 08:06:26.655873581 +0000
-+++ pigz-2.3.3/pigz.c	2016-10-03 08:07:23.222592284 +0000
[email protected]@ -4268,7 +4268,7 @@
- 
-             /* run process() for each entry in the directory */
-             base = len && g.inf[len - 1] != (unsigned char)'/' ?
--                   vstrcpy(&g.inf, &g.inz, len, "/") : len;
-+                   vstrcpy(&g.inf, &g.inz, len, "/") - 1 : len;
-             for (off = 0; roll[off]; off += strlen(roll + off) + 1) {
-                 vstrcpy(&g.inf, &g.inz, base, roll + off);
-                 process(g.inf);
--- a/components/pigz/patches/300_system-test.patch	Tue Mar 14 13:30:05 2017 -0700
+++ b/components/pigz/patches/300_system-test.patch	Tue Mar 14 14:25:23 2017 -0700
@@ -1,15 +1,15 @@
 Developed internally, for system-test; not suitable for upstream.
 
---- pigz-2.3.3/Makefile.orig	2016-09-26 13:21:02.245052682 +0000
-+++ pigz-2.3.3/Makefile	2016-09-26 13:16:33.808207549 +0000
+--- pigz-2.3.4/Makefile.orig	2017-03-02 13:38:09.343094775 +0000
++++ pigz-2.3.4/Makefile	2017-03-02 13:48:28.190657548 +0000
 @@ -1,5 +1,6 @@
  CC=cc
  CFLAGS=-O3 -Wall -Wextra
 +TARGETDIR ?= $(shell pwd)
- LDFLAGS=-lz
+ LDFLAGS=
+ LIBS=-lm -lz
  ZOPFLI=zopfli/src/zopfli/
- # use gcc and gmake on Solaris
[email protected]@ -52,36 +53,36 @@
[email protected]@ -53,36 +54,36 @@
  tryn.o: try.c try.h
  	$(CC) $(CFLAGS) -DDEBUG -DNOTHREAD -g -c -o tryn.o try.c
  
@@ -48,15 +48,17 @@
  	fi
  	@rm -f pigz.c.gz pigz.c.zz pigz.c.zip
  	@rm -rf d/1 d/2
- 	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
+-	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
 -	  cd ..; cp -pr 1 2; ../pigz -rp 4 --index %z 1; \
 -	  ../pigz -drp 4 --index %z 1; diff -r 1 2)
++	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.4.tar.gz; \
 +	  cd ..; cp -pr 1 2; $(TARGETDIR)/pigz -rp 4 --index %z 1; \
 +	  $(TARGETDIR)/pigz -drp 4 --index %z 1; diff -r 1 2)
  	@rm -rf d/1 d/2
- 	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
+-	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
 -	  cd ..; cp -pr 1 2; ../pigz -zrp 4 -X %f.idx 1; \
 -	  ../pigz -dzrp 4 -X %f.idx 1; diff -r 1 2)
++	(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.4.tar.gz; \
 +	  cd ..; cp -pr 1 2; $(TARGETDIR)/pigz -zrp 4 -X %f.idx 1; \
 +	  $(TARGETDIR)/pigz -dzrp 4 -X %f.idx 1; diff -r 1 2)
  	@rm -rf d/1 d/2
--- a/components/pigz/test/results-64.master	Tue Mar 14 13:30:05 2017 -0700
+++ b/components/pigz/test/results-64.master	Tue Mar 14 14:25:23 2017 -0700
@@ -11,17 +11,17 @@
 (printf "w" | gzip ; printf "xy") | $(@D)/pigz -cdf | wc -c | test `cat` -eq 3
 (printf "w" | gzip ; printf "xyz") | $(@D)/pigz -cdf | wc -c | test `cat` -eq 4
 compress -f < pigz.c | $(@D)/unpigz | cmp - pigz.c
-(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
+(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.4.tar.gz; \
   cd ..; cp -pr 1 2; $(@D)/pigz -rp 4 --index %z 1; \
   $(@D)/pigz -drp 4 --index %z 1; diff -r 1 2)
-Common subdirectories: 1/pigz-2.3.3 and 2/pigz-2.3.3
-Common subdirectories: 1/pigz-2.3.3/zopfli and 2/pigz-2.3.3/zopfli
-Common subdirectories: 1/pigz-2.3.3/zopfli/src and 2/pigz-2.3.3/zopfli/src
-Common subdirectories: 1/pigz-2.3.3/zopfli/src/zopfli and 2/pigz-2.3.3/zopfli/src/zopfli
-(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.3.tar.gz; \
+Common subdirectories: 1/pigz-2.3.4 and 2/pigz-2.3.4
+Common subdirectories: 1/pigz-2.3.4/zopfli and 2/pigz-2.3.4/zopfli
+Common subdirectories: 1/pigz-2.3.4/zopfli/src and 2/pigz-2.3.4/zopfli/src
+Common subdirectories: 1/pigz-2.3.4/zopfli/src/zopfli and 2/pigz-2.3.4/zopfli/src/zopfli
+(mkdir -p d/1; cd d/1; tar xzf ../../../../pigz-2.3.4.tar.gz; \
   cd ..; cp -pr 1 2; $(@D)/pigz -zrp 4 -X %f.idx 1; \
   $(@D)/pigz -dzrp 4 -X %f.idx 1; diff -r 1 2)
-Common subdirectories: 1/pigz-2.3.3 and 2/pigz-2.3.3
-Common subdirectories: 1/pigz-2.3.3/zopfli and 2/pigz-2.3.3/zopfli
-Common subdirectories: 1/pigz-2.3.3/zopfli/src and 2/pigz-2.3.3/zopfli/src
-Common subdirectories: 1/pigz-2.3.3/zopfli/src/zopfli and 2/pigz-2.3.3/zopfli/src/zopfli
+Common subdirectories: 1/pigz-2.3.4 and 2/pigz-2.3.4
+Common subdirectories: 1/pigz-2.3.4/zopfli and 2/pigz-2.3.4/zopfli
+Common subdirectories: 1/pigz-2.3.4/zopfli/src and 2/pigz-2.3.4/zopfli/src
+Common subdirectories: 1/pigz-2.3.4/zopfli/src/zopfli and 2/pigz-2.3.4/zopfli/src/zopfli