This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH] Setup.exe 2.218.2.9 does not like its own source




> -----Original Message-----
> From: Ton van Overbeek [mailto:tvoverbe@cistron.nl] 
> Sent: Monday, May 20, 2002 3:26 AM

> The attached patch makes setup download the source of setup 
> without complaining.
> 
> I am not totally at home with all the logic in 
> package_meta.cc and its interaction with the chooser to know 
> if this change causes other problems. So I will not be 
> surprised if this is not the 'right' solution.

It's not, it alters the default install logic, so you'll be getting the
wrong version by default when you select install at a category level or
click on a pacakage. ('If (installed)' means that packages won't install
on the first click, which is wrong.)

The correct test is:
(desired->bin.sites.number() || desired->bin.Cached())

i.e. if there are download sites that the desired package can come from
or it's known to be cached then we should turn bin on. This also catches
another bug, where reinstall was a valid choice for a installed package
on a local install, regardless of package availability. Thank you for
tracking down the specific location though - that saved me quite some
time.

The fix I'll be committing is below. It makes a source only package
install the source by default in addition to the bug fix above. I also
noticed another minor bug when iterating through lots of packges
locally.

Rob

Index: package_meta.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/package_meta.cc,v
retrieving revision 2.22
diff -u -p -r2.22 package_meta.cc
--- package_meta.cc	4 May 2002 04:26:01 -0000	2.22
+++ package_meta.cc	20 May 2002 01:04:40 -0000
@@ -318,8 +318,14 @@ packagemeta::set_action (packageversion 
 	}
       return;
     }
-  else if (desired == installed
-	   && (!installed || !(installed->binpicked ||
installed->srcpicked)))
+  else if (desired == installed &&
+	   (!installed || 
+	    // neither bin nor source are being installed
+	    (!(installed->binpicked || installed->srcpicked) &&
+	     // bin or source are available
+	     ((installed->bin.sites.number() || desired->bin.Cached())
||
+ 	      (installed->src.sites.number() ||
desired->src.Cached()))))
+	   )
     /* Install the default trust version - this is a 'reinstall' for
installed
        * packages */
     {
@@ -328,7 +334,10 @@ packagemeta::set_action (packageversion 
       desired = default_version;
       if (desired)
 	{
-	  desired->binpicked = 1;
+	  if (desired->bin.sites.number() || desired->bin.Cached())
+	    desired->binpicked = 1;
+	  else
+	    desired->srcpicked = 1;
 	  return;
 	}
     }
@@ -375,7 +384,10 @@ packagemeta::set_action (packageversion 
 	  if (n <= versions.number ())
 	    {
 	      desired = versions[n];
-	      desired->srcpicked = source;
+	      if (desired->src.sites.number() || desired->src.Cached())
+		desired->srcpicked = source;
+	      else
+		desired->srcpicked = 0;
 	      return;
 	    }
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]