Allow config files from different packages if both files have zero size.
authorRichard Jones <rjones@redhat.com>
Fri, 18 Mar 2011 14:54:23 +0000 (14:54 +0000)
committerRichard Jones <rjones@redhat.com>
Fri, 18 Mar 2011 14:54:23 +0000 (14:54 +0000)
Fairly recurrent bug in Fedora.  It need not cause us to fail,
provided that both config files are empty.

febootstrap.ml

index 3c634c4..dc44d3d 100644 (file)
@@ -79,16 +79,24 @@ let () =
     let combine (name1, ft1, pkg1) (name2, ft2, pkg2) =
       (* Rules for combining files. *)
       if ft1.ft_config || ft2.ft_config then (
-        eprintf "febootstrap: error: %s is a config file which is listed in two packages (%s, %s)\n"
-          name1 pkg1 pkg2;
-        exit 1
-      );
-      if (ft1.ft_dir || ft2.ft_dir) && (not (ft1.ft_dir && ft2.ft_dir)) then (
+       (* It's a fairly frequent bug in Fedora for two packages to
+        * incorrectly list the same config file.  Allow this, provided
+        * the size of both files is 0.
+        *)
+       if ft1.ft_size = 0 && ft2.ft_size = 0 then
+         (name1, ft1, pkg1)
+       else (
+          eprintf "febootstrap: error: %s is a config file which is listed in two packages (%s, %s)\n"
+            name1 pkg1 pkg2;
+          exit 1
+       )
+      )
+      else if (ft1.ft_dir || ft2.ft_dir) && (not (ft1.ft_dir && ft2.ft_dir)) then (
         eprintf "febootstrap: error: %s appears as both directory and ordinary file (%s, %s)\n"
           name1 pkg1 pkg2;
         exit 1
-      );
-      if ft1.ft_ghost then
+      )
+      else if ft1.ft_ghost then
         (name2, ft2, pkg2)
       else
         (name1, ft1, pkg1)