Resurrect --nodirtokens build option
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 16 Sep 2008 09:03:26 +0000 (12:03 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 16 Sep 2008 09:03:26 +0000 (12:03 +0300)
- this gets somewhat hysterical: we create the filelist as uncompressed,
  then compress it for rpmfi which only understands compressed filelist,
  and if nodirtokens is used, expand the list again after initializing
  rpmfi for cpio/fsm...

build/files.c

index 1a70e77..8c66032 100644 (file)
@@ -1165,14 +1165,8 @@ static void genCpioListAndHeader(FileList fl,
     if (_addDotSlash)
        (void) rpmlibNeedsFeature(h, "PayloadFilesHavePrefix", "4.0-1");
 
-    /* Choose how filenames are represented. */
-    if (_noDirTokens)
-       expandFilelist(h);
-    else {
-       compressFilelist(h);
-       /* Binary packages with dirNames cannot be installed by legacy rpm. */
-       (void) rpmlibNeedsFeature(h, "CompressedFileNames", "3.0.4-1");
-    }
+    /* rpmfi only groks compressed filelists */
+    compressFilelist(h);
 
   { int scareMem = 0;
     rpmts ts = NULL;   /* XXX FIXME drill rpmts ts all the way down here */
@@ -1267,6 +1261,14 @@ static void genCpioListAndHeader(FileList fl,
     else
        fi = rpmfiFree(fi);
   }
+
+    /* Convert back to expanded filelist if legacy format requested */
+    if (_noDirTokens)
+       expandFilelist(h);
+    else {
+       /* Binary packages with dirNames cannot be installed by legacy rpm. */
+       (void) rpmlibNeedsFeature(h, "CompressedFileNames", "3.0.4-1");
+    }
 }
 
 /**