dsynth - Add #define for compression algo, default to .tgz
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 22 Aug 2019 06:26:10 +0000 (23:26 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 22 Aug 2019 06:26:10 +0000 (23:26 -0700)
* Add a #define in dsynth.h to support .tar, .tgz, .txz, or .tbz.
  It is currently hardwired to .tgz.

* Switch to using .tgz.  While .txz is highly compressed, .tgz
  will decompress 10x more quickly and this seriously improves
  bulk build times.

usr.bin/dsynth/build.c
usr.bin/dsynth/dsynth.c
usr.bin/dsynth/dsynth.h
usr.bin/dsynth/pkglist.c

index 4cfcc8f..dd32834 100644 (file)
@@ -1435,6 +1435,8 @@ WorkerProcess(int ac, char **av)
        setenv("PORT_DBDIR", "/options", 1);
        setenv("PKG_DBDIR", "/var/db/pkg", 1);
        setenv("PKG_CACHEDIR", "/var/cache/pkg", 1);
+       setenv("PKG_SUFX", USE_PKG_SUFX, 1);
+
 
 #if 0
        setenv("_PERL5_FROM_BIN", "5.28.2", 1);
index c6c390b..4af0c03 100644 (file)
@@ -133,6 +133,7 @@ main(int ac, char **av)
         */
        setenv("PORTSDIR", DPortsPath, 1);
        setenv("BATCH", "yes", 1);
+       setenv("PKG_SUFX", USE_PKG_SUFX, 1);
 
        /*
         * Special directive for when dsynth execs itself to manage
index 22d252a..a6473f6 100644 (file)
@@ -75,6 +75,17 @@ struct pkglink;
 #define MOUNT_PROCFS_BINARY    "/sbin/mount_procfs"
 #define UMOUNT_BINARY          "/sbin/umount"
 
+/*
+ * This can be ".tar", ".tgz", ".txz", or ".tbz".
+ *
+ * .tar        - very fast but you'll need 1TB+ of storage just for the package files.
+ * .txz - very compact but decompression speed is horrible.
+ * .tgz - reasonable compression, extremely fast decompression.  Roughly
+ *       1.1x to 2.0x the size of a .txz, but decompresses 10x faster.
+ * .tbz - worse than .tgz generally
+ */
+#define USE_PKG_SUFX           ".tgz"
+
 /*
  * Topology linkages
  */
index 1e637c6..abd6ff9 100644 (file)
@@ -804,7 +804,7 @@ childGetBinaryDistInfo(bulk_t *bulk)
                if (len == 0 || ptr[len-1] != '\n')
                        continue;
                ptr[len-1] = 0;
-               snprintf(buf, sizeof(buf), "%s.txz", ptr);
+               snprintf(buf, sizeof(buf), "%s.%s", ptr, USE_PKG_SUFX);
 
                pkg = pkg_find(buf);
                if (pkg)
@@ -872,7 +872,8 @@ scan_binary_repo(const char *path)
 
        while ((den = readdir(dir)) != NULL) {
                len = strlen(den->d_name);
-               if (len > 4 && strcmp(den->d_name + len - 4, ".txz") == 0) {
+               if (len > 4 &&
+                   strcmp(den->d_name + len - 4, USE_PKG_SUFX) == 0) {
                        queuebulk(den->d_name, NULL, NULL, NULL);
                        ++count;
                }