[rebase - The rebase tool, core of the automatic rebase facility during postinstall] branch master, updated. b3d56e7ba1baf49b2ce71e858e7386037c4b4124

Corinna Vinschen via Cygwin-apps-cvs <[email protected]> Mon, 18 Jul 2022 20:02:53 +0000 (GMT)
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/rebase.git;h=b3d56e7ba1baf49b2ce71e858e7386037c4b4124

commit b3d56e7ba1baf49b2ce71e858e7386037c4b4124
Author: Christian Franke <[email protected]>
Date:   Mon Jul 18 17:06:05 2022 +0200

    Fix handling of newly added non-rebaseable DLLs
    
    Reset needs_rebasing flag to avoid that such a DLL is later removed
    from the list due to rebase failure.  Add related verbose messages.


Diff:
---
 rebase.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/rebase.c b/rebase.c
index 39759a9..1f9f74b 100644
--- a/rebase.c
+++ b/rebase.c
@@ -705,6 +705,17 @@ merge_image_info ()
 	      if (verbose)
 		fprintf (stderr, "rebasing %s because not in database yet\n", img_info_list[i].name);
 	    }
+	  else if (img_info_list[i].flag.needs_rebasing)
+	    {
+	      /* Not in database yet and not rebaseable.  Add without rebasing or
+	         skip if --oblivious is active. */
+	      img_info_list[i].flag.needs_rebasing = 0;
+	      if (verbose)
+		fprintf (stderr, "not rebasing %s because file is not writable\n",
+			 img_info_list[i].name);
+	      /* FIXME: Overlaps of DLLs in the database with this DLL will
+	         not be detected below. */
+	    }
 	}
     }
   if (!img_info_rebase_start || force_rebase_flag)
@@ -715,7 +726,12 @@ merge_image_info ()
 	{
 	  /* Test DLLs already in database for writability. */
 	  if (i < img_info_rebase_start)
-	    set_cannot_rebase (&img_info_list[i]);
+	    {
+	      set_cannot_rebase (&img_info_list[i]);
+	      if (img_info_list[i].flag.cannot_rebase == 1 && verbose)
+		fprintf (stderr, "not rebasing %s because file is not writable\n",
+			 img_info_list[i].name);
+	    }
 	  if (!img_info_list[i].flag.cannot_rebase)
 	    {
 	      img_info_list[i].base = 0;