This is the mail archive of the cygwin-apps-cvs mailing list for the cygwin-apps 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]

[setup - the official Cygwin setup program used to install Cygwin and keep it up to date] branch master, updated. release_2.874-18-g63766d3




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=63766d30dc3d306661ca6b8a0d70cf8a742aa0eb

commit 63766d30dc3d306661ca6b8a0d70cf8a742aa0eb
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue Aug 2 12:40:01 2016 +0100

    Reserve paths starting "." for package metadata
    
    Reserve pathnames starting "." (i.e. dotfiles in the root directory) for
    package metadata, so don't extract them.
    
    There are no current uses of these pathnames

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

commit b8752287e2511fe238dfb9aa3620e73338fba821
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Aug 1 18:05:14 2016 +0100

    Add an additional filter view, showing packages which were user picked
    
    Add an additional filter view, showing installed packages which were
    selected for installation by the user, not installed as dependencies.
    
    Future work:
    
    Why is PickView::views is not an enum?
    
    The view button would make more sense as a pop-up menu, allowing a specific
    filter view to be directly selected, rather than cycling around the possible
    filter views (and this situation is made worse by adding another filter
    view)

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

commit f6d6c600edffdb83a57ed13384e38a504fdc366b
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue Aug 2 12:19:09 2016 +0100

    Track if a package was installed by user, or as a dependency
    
    Update the installed.db file format to version 3, containing the user_picked
    flag.
    
    This extends the semantics of user_pick somewhat: currently it is only used
    for UI purposes, to record if a package was picked in the current session.
    
    Now we also use it to record if an installed package has ever been picked
    via the UI (otherwise it is only installed because it is a dependency).
    
    So, we are careful not to set it when a currently installed package has it's
    installed version adjusted via the GUI.
    
    We also arrange for user_pick to be set when a package was selected for
    installation via CLI.
    
    Add a heuristic to initially populate user_pick when upgrading from older
    installed.db formats: All non-base installed packages which aren't
    dependencies are assumed to be user_pick-ed.
    
    Note: other tools (e.g. cygcheck) which read the installed.db file will need
    updating appropriately
    
    v2:
    Don't gratuitously break compatiblity with other existing readers of
    installed.db, keep recording version as a notional filename.
    
    Don't treat unknown future installed.db format versions as format version 1,
    instead treat setup downgrading as a fatal error.

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

commit e4814417d7f0e13f0a3091e8a4255b7b919a2807
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Aug 1 13:45:40 2016 +0100

    Remove unused fn member from cygpackage
    
    This is set, but never used.

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

commit f480a7df426ab3d3e2f83b7322ef37ba2ab201de
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Aug 1 13:43:34 2016 +0100

    Remove obsolete installed_from member from packagemeta
    
    This just stores a made-up tarfile name read from installed.db, and is never
    used.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=657d8c71a45caa648cce7bc09ab944b57969a58c

commit 657d8c71a45caa648cce7bc09ab944b57969a58c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Jul 7 14:34:22 2016 +0100

    Properly report progress in PrereqChecker::isMet
    
    Properly report progress in PrereqChecker::isMet after additional dependency
    work is found.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=14f0a1347d870a340f09b5a789d80cb9ee14e864

commit 14f0a1347d870a340f09b5a789d80cb9ee14e864
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue Jun 21 16:25:22 2016 +0100

    Downgrade "Running preremove script" logging to debug
    
    This is emitted for every package, regardless of it has any scripts or not.
    Actual script execution is logged separately.
    
    Also a cosmetic fix to remove a doubled space.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=379d3682722fcebdae231edc401592bb8ca1def3

commit 379d3682722fcebdae231edc401592bb8ca1def3
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Aug 1 12:16:14 2016 +0100

    Add lex and yacc generated files to .gitignore

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=7852d6981af422bc641f92cf56f50a3121754f51

commit 7852d6981af422bc641f92cf56f50a3121754f51
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jul 8 12:06:10 2016 +0100

    Prevent libtool warning that a getopt++ shared library cannot be built
    
    libtool: warning: undefined symbols not allowed in i686-w64-mingw32 shared libraries; building static only

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=6557bf589e58e3aa0699706397a22a62f483e0d1

commit 6557bf589e58e3aa0699706397a22a62f483e0d1
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Aug 1 18:35:43 2016 +0100

    Remove stray execute permissions


Diff:
---
 .gitignore              |    3 +
 PickView.cc             |   16 ++++-
 PickView.h              |    4 +-
 cygpackage.cc           |    3 -
 cygpackage.h            |    8 +--
 cygwin.pub              |  Bin 964 -> 964 bytes
 ini.cc                  |    4 +
 install.cc              |   11 +++-
 libgetopt++/Makefile.am |    3 +-
 package_db.cc           |  141 +++++++++++++++++++++++++++++++++++++----------
 package_db.h            |    3 +
 package_meta.cc         |    6 +-
 package_meta.h          |   11 +---
 prereq.cc               |    1 +
 res.rc                  |    6 ++-
 resource.h              |    1 +
 tree-minus.bmp          |  Bin 106 -> 106 bytes
 tree-plus.bmp           |  Bin 106 -> 106 bytes
 18 files changed, 162 insertions(+), 59 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2186aac..8b81166 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,6 @@ make.out
 CVS
 tags
 autoconf.h.in*
+inilex.cc
+iniparse.cc
+iniparse.hh
diff --git a/KeysSetting.cc b/KeysSetting.cc
old mode 100755
new mode 100644
diff --git a/KeysSetting.h b/KeysSetting.h
old mode 100755
new mode 100644
diff --git a/PickView.cc b/PickView.cc
index 4630ee9..c784a2a 100644
--- a/PickView.cc
+++ b/PickView.cc
@@ -57,8 +57,9 @@ const PickView::views PickView::views::Unknown (0);
 const PickView::views PickView::views::PackageFull (1);
 const PickView::views PickView::views::Package (2);
 const PickView::views PickView::views::PackageKeeps (3);
-const PickView::views PickView::views::PackageSkips = PickView::views (4);
-const PickView::views PickView::views::Category (5);
+const PickView::views PickView::views::PackageSkips (4);
+const PickView::views PickView::views::PackageUserPicked (5);
+const PickView::views PickView::views::Category (6);
 
 ATOM PickView::WindowClassAtom = 0;
 
@@ -92,7 +93,8 @@ PickView::set_header_column_order (views vm)
   if (vm == views::Unknown)
     return -1;
   else if (vm == views::PackageFull || vm == views::Package
-      || vm == views::PackageKeeps || vm == views::PackageSkips)
+           || vm == views::PackageKeeps || vm == views::PackageSkips
+           || vm == views::PackageUserPicked)
     {
       headers = pkg_headers;
       current_col = 0;
@@ -197,7 +199,11 @@ PickView::setViewMode (views mode)
 
               // "Not installed"
               || (view_mode == PickView::views::PackageSkips &&
-                  (!pkg.desired && !pkg.installed)))
+                  (!pkg.desired && !pkg.installed))
+
+              // "UserPick" : installed packages that were picked by user
+              || (view_mode == PickView::views::PackageUserPicked &&
+                  (pkg.installed && pkg.user_picked)))
             {
               // Filter by package name
               if (packageFilterString.empty ()
@@ -246,6 +252,8 @@ PickView::views::caption ()
     case 4:
       return "Not Installed";
     case 5:
+      return "Picked";
+    case 6:
       return "Category";
     default:
       return "";
diff --git a/PickView.h b/PickView.h
index 0ce7581..fd20dc9 100644
--- a/PickView.h
+++ b/PickView.h
@@ -104,15 +104,15 @@ public:
     static const views Package;
     static const views PackageKeeps;
     static const views PackageSkips;
+    static const views PackageUserPicked;
     static const views Category;
-    static const views NView;
       views ():_value (0)
     {
     };
     views (int aInt)
     {
       _value = aInt;
-      if (_value < 0 || _value > 5)
+      if (_value < 0 || _value > 6)
 	_value = 0;
     }
     views & operator++ ();
diff --git a/crypto.cc b/crypto.cc
old mode 100755
new mode 100644
diff --git a/crypto.h b/crypto.h
old mode 100755
new mode 100644
diff --git a/cyg-pubkey.h b/cyg-pubkey.h
old mode 100755
new mode 100644
diff --git a/cygpackage.cc b/cygpackage.cc
index 4b05cb3..71816f9 100644
--- a/cygpackage.cc
+++ b/cygpackage.cc
@@ -39,7 +39,6 @@ name (),
 vendor (),
 packagev (),
 canonical (),
-fn (),
 sdesc (),
 ldesc (),
 status (package_installed),
@@ -66,14 +65,12 @@ cygpackage::createInstance (const std::string& pkgname,
 
 packageversion
 cygpackage::createInstance (const std::string& pkgname,
-                            const std::string& filename,
                             const std::string& version,
 			    package_status_t const newstatus,
 			    package_type_t const newtype)
 {
   cygpackage *temp = new cygpackage;
   temp->name = pkgname;
-  temp->fn = filename;
   temp->status = newstatus;
   temp->type = newtype;
   temp->setCanonicalVersion (version);
diff --git a/cygpackage.h b/cygpackage.h
index 0b08e0d..991072a 100644
--- a/cygpackage.h
+++ b/cygpackage.h
@@ -70,10 +70,9 @@ public:
   static packageversion createInstance (const std::string& pkgname,
                                         const package_type_t type);
 
-  static packageversion createInstance (const std::string& ,
-                                        const std::string& , 
-                                        const std::string& ,
-					package_status_t const, 
+  static packageversion createInstance (const std::string& pkgname,
+                                        const std::string& version,
+					package_status_t const,
 					package_type_t const);
 
 private:
@@ -83,7 +82,6 @@ private:
   std::string vendor;
   std::string packagev;
   std::string canonical;
-  std::string fn;
   std::string sdesc, ldesc;
   char getfilenamebuffer[CYG_PATH_MAX];
 
diff --git a/gpg-packet.cc b/gpg-packet.cc
old mode 100755
new mode 100644
diff --git a/gpg-packet.h b/gpg-packet.h
old mode 100755
new mode 100644
diff --git a/ini.cc b/ini.cc
index 456eb6e..f925bf5 100644
--- a/ini.cc
+++ b/ini.cc
@@ -51,6 +51,7 @@
 #include "compress.h"
 #include "Exception.h"
 #include "crypto.h"
+#include "package_db.h"
 
 extern ThreeBarProgressPage Progress;
 
@@ -351,6 +352,9 @@ do_ini_thread (HINSTANCE h, HWND owner)
   else
     ini_count = do_remote_ini (owner);
 
+  packagedb db;
+  db.upgrade();
+
   if (ini_count == 0)
     return false;
 
diff --git a/install.cc b/install.cc
index 2b714bc..8aad3a5 100644
--- a/install.cc
+++ b/install.cc
@@ -159,7 +159,7 @@ Installer::preremoveOne (packagemeta & pkg)
 {
   Progress.SetText1 ("Running preremove script...");
   Progress.SetText2 (pkg.name.c_str());
-  Log (LOG_PLAIN) << "Running preremove script for  " << pkg.name << endLog;
+  Log (LOG_BABBLE) << "Running preremove script for " << pkg.name << endLog;
   const unsigned numexts = 4;
   const char* exts[numexts] = { ".dash", ".sh", ".bat", ".cmd" };
   for (unsigned i = 0; i < numexts; i++)
@@ -471,6 +471,15 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver,
   while ((fn = tarstream->next_file_name ()).size ())
     {
       std::string canonicalfn = prefixPath + fn;
+
+      // pathnames starting "." (i.e. dotfiles in the root directory) are
+      // reserved for package metadata.  Don't extract them.
+      if (fn[0] == '.')
+        {
+          tarstream->skip_file ();
+          continue;
+        }
+
       Progress.SetText3 (canonicalfn.c_str ());
       Log (LOG_BABBLE) << "Installing file " << prefixURL << prefixPath
           << fn << endLog;
diff --git a/libgetopt++/Makefile.am b/libgetopt++/Makefile.am
index f820d71..34dc6fd 100644
--- a/libgetopt++/Makefile.am
+++ b/libgetopt++/Makefile.am
@@ -28,7 +28,7 @@ libgetopt___la_SOURCES = src/GetOption.cc src/Option.cc src/BoolOption.cc \
 	src/OptionSet.cc \
 	src/StringArrayOption.cc src/StringOption.cc
 
-libgetopt___la_LDFLAGS = -version-info 1:1:0
+libgetopt___la_LDFLAGS = -version-info 1:1:0 -no-undefined
 
 getoptinclude_HEADERS = include/getopt++/Option.h \
   include/getopt++/BoolOption.h \
@@ -49,4 +49,3 @@ tests_BoolOptionTest_LDADD = libgetopt++.la
 
 tests_OptionSet_SOURCES = tests/OptionSet.cc
 tests_OptionSet_LDADD = libgetopt++.la
-
diff --git a/package_db.cc b/package_db.cc
index 73dfbf6..eb7ff6b 100644
--- a/package_db.cc
+++ b/package_db.cc
@@ -42,6 +42,8 @@ static const char *cvsid =
 #include "package_meta.h"
 #include "Exception.h"
 #include "Generic.h"
+#include "LogSingleton.h"
+#include "resource.h"
 
 using namespace std;
 
@@ -55,37 +57,44 @@ packagedb::packagedb ()
       installeddbread = 1;
       if (!db)
 	return;
-      /* flush_local_db_package_data */
-      char line[1000], pkgname[1000], inst[1000];
-      int instsz;
+      char line[1000], pkgname[1000];
 
       if (db->gets (line, 1000))
 	{
+	  /* Look for header line (absent in version 1) */
+	  int instsz;
 	  int dbver;
 	  sscanf (line, "%s %d", pkgname, &instsz);
-	  if (!strcasecmp (pkgname, "INSTALLED.DB") && instsz == 2)
-	    dbver = 2;
+	  if (!strcasecmp (pkgname, "INSTALLED.DB"))
+	    dbver = instsz;
 	  else
 	    dbver = 1;
 	  delete db;
 	  db = 0;
-	  /* Later versions may not use installed.db other than to record the version. */
-	  if (dbver == 1 || dbver == 2)
+
+	  Log (LOG_BABBLE) << "INSTALLED.DB version " << dbver << endLog;
+
+	  if (dbver <= 3)
 	    {
+	      char inst[1000];
+
 	      db =
 		io_stream::open ("cygfile:///etc/setup/installed.db", "rt", 0);
-	      if (dbver == 2)
+
+	      // skip over already-parsed header line
+	      if (dbver >= 2)
 		db->gets (line, 1000);
+
 	      while (db->gets (line, 1000))
 		{
 		  int parseable;
-		  int ign;
+		  int user_picked = 0;
 		  pkgname[0] = '\0';
 		  inst[0] = '\0';
 
-		  sscanf (line, "%s %s %d", pkgname, inst, &ign);
+		  int res = sscanf (line, "%s %s %d", pkgname, inst, &user_picked);
 
-		  if (pkgname[0] == '\0' || inst[0] == '\0')
+		  if (res < 3 || pkgname[0] == '\0' || inst[0] == '\0')
 			continue;
 
 		  fileparse f;
@@ -96,29 +105,31 @@ packagedb::packagedb ()
 		  packagemeta *pkg = findBinary (PackageSpecification(pkgname));
 		  if (!pkg)
 		    {
-		      pkg = new packagemeta (pkgname, inst);
+		      pkg = new packagemeta (pkgname);
 		      packages.insert (packagedb::packagecollection::value_type(pkgname, pkg));
-		      /* we should install a new handler then not check this...
-		       */
-		      //if (!pkg)
-		      //die badly
 		    }
 
 		  packageversion binary = 
-		    cygpackage::createInstance (pkgname, inst, f.ver,
-	    					package_installed,
-	    					package_binary);
+		    cygpackage::createInstance (pkgname, f.ver,
+						package_installed,
+						package_binary);
 
 		  pkg->add_version (binary);
 		  pkg->set_installed (binary);
 		  pkg->desired = pkg->installed;
+
+		  if (dbver == 3)
+		    pkg->user_picked = (user_picked & 1);
 		}
 	      delete db;
 	      db = 0;
 	    }
 	  else
-	    // unknown dbversion
-	    exit (1);
+	    {
+              fatal(NULL, IDS_INSTALLEDB_VERSION);
+	    }
+
+	  installeddbver = dbver;
 	}
     }
 }
@@ -138,21 +149,23 @@ packagedb::flush ()
   if (!ndb)
     return errno ? errno : 1;
 
-  ndb->write ("INSTALLED.DB 2\n", strlen ("INSTALLED.DB 2\n"));
+  ndb->write ("INSTALLED.DB 3\n", strlen ("INSTALLED.DB 3\n"));
   for (packagedb::packagecollection::iterator i = packages.begin ();
        i != packages.end (); ++i)
     {
       packagemeta & pkgm = *(i->second);
       if (pkgm.installed)
 	{
-	  /* size here is irrelevant - as we can assume that this install source
-	   * no longer exists, and it does not correlate to used disk space
-	   * also note that we are writing a fictional install source 
-	   * to keep cygcheck happy.               
-	   */
+	  /*
+	    In INSTALLED.DB 3, lines are: 'packagename version flags', where
+	    version is encoded in a notional filename for backwards
+	    compatibility, and the only currently defined flag is user-picked
+	    (bit 0).
+	  */
 	  std::string line;
-	  line = pkgm.name + " " + pkgm.name + "-" + 
-	    std::string(pkgm.installed.Canonical_version()) + ".tar.bz2 0\n";
+	  line = pkgm.name + " " +
+	    pkgm.name + "-" + std::string(pkgm.installed.Canonical_version()) + ".tar.bz2 " +
+	    (pkgm.user_picked ? "1" : "0") + "\n";
 	  ndb->write (line.c_str(), line.size());
 	}
     }
@@ -166,6 +179,18 @@ packagedb::flush ()
   return 0;
 }
 
+void
+packagedb::upgrade()
+{
+  if (installeddbver < 3)
+    {
+      /* Guess which packages were user_picked.  This has to take place after
+         setup.ini has been parsed as it needs dependency information. */
+      guessUserPicked();
+      installeddbver = 3;
+    }
+}
+
 packagemeta *
 packagedb::findBinary (PackageSpecification const &spec) const
 {
@@ -199,13 +224,13 @@ packagedb::findSource (PackageSpecification const &spec) const
 /* static members */
 
 int packagedb::installeddbread = 0;
+int packagedb::installeddbver = 0;
 packagedb::packagecollection packagedb::packages;
 packagedb::categoriesType packagedb::categories;
 packagedb::packagecollection packagedb::sourcePackages;
 PackageDBActions packagedb::task = PackageDB_Install;
 std::vector <packagemeta *> packagedb::dependencyOrderedPackages;
 
-#include "LogSingleton.h"
 #include <stack>
 
 class
@@ -449,3 +474,59 @@ packagedb::defaultTrust (trusts trust)
         packagedb::categories.erase (n++);
       }
 }
+
+void
+packagedb::guessUserPicked()
+{
+  /*
+    Assume that any non-base installed package which is a dependency of an
+    installed package wasn't user_picked
+
+    i.e. only installed packages which aren't in the base category, and aren't
+    a dependency of any installed package are user_picked
+  */
+
+  /* First mark all installed non-base packages */
+  for (packagedb::packagecollection::iterator i = packages.begin ();
+       i != packages.end (); ++i)
+    {
+      packagemeta & pkgm = *(i->second);
+
+      if (pkgm.categories.find ("Base") != pkgm.categories.end ())
+	continue;
+
+      if (pkgm.installed)
+	pkgm.user_picked = TRUE;
+    }
+
+  /* Then clear the mark for all dependencies of all installed packages */
+  for (packagedb::packagecollection::iterator i = packages.begin ();
+       i != packages.end (); ++i)
+    {
+      packagemeta & pkgm = *(i->second);
+
+      if (!pkgm.installed)
+	continue;
+
+      /* walk through each and clause */
+      vector <vector <PackageSpecification *> *>::const_iterator dp = pkgm.installed.depends()->begin();
+      while (dp != pkgm.installed.depends()->end())
+	{
+	  /* check each or clause for an installed match */
+	  vector <PackageSpecification *>::const_iterator i = find_if ((*dp)->begin(), (*dp)->end(), checkForInstalled);
+	  if (i != (*dp)->end())
+	    {
+	      const packagedb::packagecollection::iterator n = packages.find((*i)->packageName());
+	      if (n != packages.end())
+		{
+		  packagemeta *pkgm2 = n->second;
+		  pkgm2->user_picked = FALSE;
+		}
+	      /* skip to next and clause */
+	      ++dp;
+	      continue;
+	    }
+	  ++dp;
+	}
+    }
+}
diff --git a/package_db.h b/package_db.h
index bc828a1..6a99398 100644
--- a/package_db.h
+++ b/package_db.h
@@ -65,6 +65,7 @@ public:
   packagedb ();
   /* 0 on success */
   int flush ();
+  void upgrade ();
   packagemeta * findBinary (PackageSpecification const &) const;
   packagemeta * findSource (PackageSpecification const &) const;
   PackageDBConnectedIterator connectedBegin();
@@ -84,8 +85,10 @@ public:
   static PackageDBActions task;
 private:
   static int installeddbread;	/* do we have to reread this */
+  static int installeddbver;
   friend class ConnectedLoopFinder;
   static std::vector <packagemeta *> dependencyOrderedPackages;
+  void guessUserPicked(void);
 };
 
 #endif /* SETUP_PACKAGE_DB_H */
diff --git a/package_meta.cc b/package_meta.cc
index 34ff78c..3923b13 100644
--- a/package_meta.cc
+++ b/package_meta.cc
@@ -91,7 +91,7 @@ packagemeta::_actions::caption ()
 }
 
 packagemeta::packagemeta (packagemeta const &rhs) :
-  name (rhs.name), key (rhs.name), installed_from (), 
+  name (rhs.name), key (rhs.name),
   categories (rhs.categories), versions (rhs.versions),
   installed (rhs.installed), prev (rhs.prev),
   curr (rhs.curr),
@@ -458,7 +458,8 @@ packagemeta::set_action (trusts const trust)
   else
     desired = packageversion ();
   /* Memorize the fact that the user picked at least once. */
-  user_picked = true;
+  if (!installed)
+    user_picked = true;
 }
 
 int
@@ -510,6 +511,7 @@ packagemeta::set_action (_actions action, packageversion const &default_version)
 	  if (desired != installed)
 	    if (desired.accessible ())
 	      {
+		user_picked = true;
 		desired.pick (true, this);
 		desired.sourcePackage ().pick (false, NULL);
 	      }
diff --git a/package_meta.h b/package_meta.h
index b24d4fc..3d6ccd2 100644
--- a/package_meta.h
+++ b/package_meta.h
@@ -35,17 +35,11 @@ public:
   static void ScanDownloadedFiles (bool);
   packagemeta (packagemeta const &);
   packagemeta (const std::string& pkgname)
-  : name (pkgname), key(pkgname), installed_from (), user_picked (false),
+  : name (pkgname), key(pkgname), user_picked (false),
     architecture (), priority(), visited_(false)
   {
   }
 
-  packagemeta (const std::string& pkgname, const std::string& installedfrom)
-  : name (pkgname), key(pkgname), installed_from (installedfrom),
-    user_picked (false), architecture (), priority(), visited_(false)
-  {
-  }
-
   ~packagemeta ();
 
   void add_version (packageversion &);
@@ -118,8 +112,7 @@ public:
 
   std::string name;			/* package name, like "cygwin" */
   std::string key;
-  /* legacy variable used to output data for installed.db versions <= 2 */
-  std::string installed_from;
+
   /* true if package was selected on command-line. */
   bool isManuallyWanted() const;
   /* true if package was deleted on command-line. */
diff --git a/prereq.cc b/prereq.cc
index bdc609e..a5083ed 100644
--- a/prereq.cc
+++ b/prereq.cc
@@ -238,6 +238,7 @@ PrereqChecker::isMet ()
                     {
                       // newly found dependency: add to worklist
                       todo.push (dep);
+                      max++;
                     }
                   unmet[dep].push_back (pack);
                 }
diff --git a/res.rc b/res.rc
index f1cf406..2fae133 100644
--- a/res.rc
+++ b/res.rc
@@ -551,7 +551,10 @@ BEGIN
        "are at the desired version already.\r\n"
        "\r\n"
        "Not installed: Show packages that are are not currently installed "
-       "and haven't been selected for installation."
+       "and haven't been selected for installation.\r\n"
+       "\r\n"
+       "Picked: Show installed packages that were selected, not installed "
+       "as a dependency."
     IDS_HIDEOBS_TOOLTIP     "If selected, setup will hide packages in categories "
        "with names that begin with '_'.  Such packages are usually empty "
        "placeholders for packages that have been removed or renamed, or are "
@@ -569,4 +572,5 @@ BEGIN
     IDS_NO_LOCALDIR    "Local package directory %s not found.\nYou can still use setup-%s.exe to remove installed\npackages, but there "
       "will be nothing to install.\n\nPress OK if that's what you wanted\nor Cancel to choose a different directory."
     IDS_ELEVATED       "Hand installation over to elevated child process."
+    IDS_INSTALLEDB_VERSION "Unknown INSTALLED.DB version"
 END
diff --git a/resource.h b/resource.h
index 48f03ab..68e8023 100644
--- a/resource.h
+++ b/resource.h
@@ -39,6 +39,7 @@
 #define IDS_CANT_MKDIR                    137
 #define IDS_NO_LOCALDIR			  138
 #define IDS_ELEVATED			  139
+#define IDS_INSTALLEDB_VERSION            140
 
 // Dialogs
 


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