public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
From: jturney@sourceware.org
To: cygwin-apps-cvs@sourceware.org
Subject: [setup - the official Cygwin setup program] branch master, updated. release_2.900
Date: Fri, 03 Jan 2020 18:00:00 -0000	[thread overview]
Message-ID: <20200103180001.119248.qmail@sourceware.org> (raw)




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

commit d997f4cfe147d5ee6aa886aa6bda066204f734ad
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Jan 2 16:26:46 2020 +0000

    Ignore reinstall action when the package isn't installed
    
    '--packages X --remove-packages X' is interpreted by
    applyCommandLinePackageSelection() as a request to reinstall X (and
    similarly with --category X --remove-categories X).  If X isn't actually
    already installed, this leads to bogus 'erase/install no-package' tasks
    appearing in the task list.

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

commit 4938eeae36da8c6570b6abedeeb9960c6f9eea64
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Jan 2 15:37:12 2020 +0000

    Dynamically size columns in transaction list log

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

commit 080aca57ed93ee055eee9ca030f34257bd3225df
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Jan 2 14:56:07 2020 +0000

    Ignore install action when no current package exists
    
    This isn't ideal as a command line to install a package which only has a
    test version will do nothing.  But I think we don't want installing by
    category to install packages in that category which only have a test
    version. Unfortunately, both cases are currently identical by the time
    we get to applyCommandLinePackageSelection().

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

commit 849c42ad876d68f32516e01a1a9e7ee13b3ef632
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Jan 2 14:51:04 2020 +0000

    Revert "Fix cases where incorrect action is stored by set_action()"
    
    This reverts commit e435a212a6e85169616a67c08eab1d9a387c6cfc.
    
    I'd forgotten that action = Install_action, desired = empty version is
    how we represent 'install any version of this package'.  Converting that
    to NoChange_action leaves us back mishandling obsolete packges specified
    on the command line, fixing which was the whole point of this change. So
    let's try to fix this a different way...


Diff:
---
 libsolv.cc      |   25 +++++++++++++++++++------
 package_meta.cc |   55 ++++++++++++++++++++++++++++++-------------------------
 2 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/libsolv.cc b/libsolv.cc
index d7a9d01..a2f3f4c 100644
--- a/libsolv.cc
+++ b/libsolv.cc
@@ -21,7 +21,8 @@
 #include "solv/evr.h"
 
 #include "LogSingleton.h"
-#include  <iomanip>
+#include <iomanip>
+#include <algorithm>
 
 // ---------------------------------------------------------------------------
 // Utility functions for mapping between Operators and Relation Ids
@@ -655,7 +656,7 @@ SolverTasks::setTasks()
         case packagemeta::Install_action:
           if (pkg->desired)
             add(pkg->desired, taskInstall); // install/upgrade
-          else
+          else if (pkg->curr)
             add(pkg->curr, taskInstallAny); // install
           break;
 
@@ -948,7 +949,7 @@ SolverSolution::augmentTasks(SolverTasks &tasks)
     {
       const SolvableVersion &sv = (*i).first;
 
-      if (((*i).second) == SolverTasks::taskReinstall)
+      if (sv && (((*i).second) == SolverTasks::taskReinstall))
         {
           trans.push_back(SolverTransaction(SolvableVersion(sv.id, pool.pool),
                                             SolverTransaction::transErase));
@@ -986,15 +987,27 @@ SolverSolution::dumpTransactionList() const
 {
   if (trans.size())
     {
+      size_t width_name = 0;
+      size_t width_version = 0;
+
+      for (SolverTransactionList::const_iterator i = trans.begin ();
+           i != trans.end ();
+           ++i)
+        {
+          width_name = std::max(width_name, i->version.Name().length()+1);
+          width_version = std::max(width_version, i->version.Canonical_version().length()+1);
+        }
+
       Log (LOG_PLAIN) << "Augmented Transaction List:" << endLog;
       for (SolverTransactionList::const_iterator i = trans.begin ();
            i != trans.end ();
            ++i)
         {
           Log (LOG_PLAIN) << std::setw(4) << std::distance(trans.begin(), i)
-                          << std::setw(8) << i->type
-                          << std::setw(48) << i->version.Name()
-                          << std::setw(20) << i->version.Canonical_version() << endLog;
+                          << std::setw(8) << i->type << " "
+                          << std::left
+                          << std::setw(width_name) << i->version.Name()
+                          << std::setw(width_version) << i->version.Canonical_version() << endLog;
         }
     }
   else
diff --git a/package_meta.cc b/package_meta.cc
index 1f6ab16..121fc70 100644
--- a/package_meta.cc
+++ b/package_meta.cc
@@ -549,31 +549,30 @@ packagemeta::set_action (_actions action, packageversion const &default_version,
   else if (action == Install_action)
     {
       desired = default_version;
-      if (desired != installed)
-        if (desired.accessible ())
-          {
-            /* Memorize the fact that the user picked to install this package at least once. */
-            if (useraction)
-              user_picked = true;
-
-            pick (true);
-            srcpick (false);
-
-            /* Install no version is Uninstall */
-            if (!desired)
-              action = Uninstall_action;
-          }
-        else
-          {
-            pick (false);
-            srcpick (true);
-          }
-      else
-        {
-          action = NoChange_action;
-          pick (false);
-          srcpick (false);
-        }
+      if (desired)
+	{
+	  if (desired != installed)
+	    if (desired.accessible ())
+	      {
+		/* Memorize the fact that the user picked to install this package at least once. */
+		if (useraction)
+		  user_picked = true;
+
+		pick (true);
+		srcpick (false);
+	      }
+	    else
+	      {
+		pick (false);
+		srcpick (true);
+	      }
+	  else
+	    {
+	      action = NoChange_action;
+	      pick (false);
+	      srcpick (false);
+	    }
+	}
     }
   else if (action == Reinstall_action)
     {
@@ -583,6 +582,12 @@ packagemeta::set_action (_actions action, packageversion const &default_version,
 	  pick (true);
 	  srcpick (false);
 	}
+      else
+      {
+        action = NoChange_action;
+        pick (false);
+        srcpick (false);
+      }
     }
   else if (action == Uninstall_action)
     {


                 reply	other threads:[~2020-01-03 18:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200103180001.119248.qmail@sourceware.org \
    --to=jturney@sourceware.org \
    --cc=cygwin-apps-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).