From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11374 invoked by alias); 24 Oct 2017 21:33:35 -0000 Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com Received: (qmail 11363 invoked by uid 89); 24 Oct 2017 21:33:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: limerock04.mail.cornell.edu Received: from limerock04.mail.cornell.edu (HELO limerock04.mail.cornell.edu) (128.84.13.244) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 24 Oct 2017 21:33:33 +0000 X-CornellRouted: This message has been Routed already. Received: from authusersmtp.mail.cornell.edu (granite3.serverfarm.cornell.edu [10.16.197.8]) by limerock04.mail.cornell.edu (8.14.4/8.14.4_cu) with ESMTP id v9OLXVJ7003215 for ; Tue, 24 Oct 2017 17:33:31 -0400 Received: from [10.13.22.3] (50-192-26-108-static.hfc.comcastbusiness.net [50.192.26.108]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.14.4/8.12.10) with ESMTP id v9OLXT4s031179 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Tue, 24 Oct 2017 17:33:30 -0400 Subject: Re: [setup topic/libsolv] Does "obsoletes:" work? To: cygwin-apps@cygwin.com References: <8344e55f-2036-187b-7cb9-819d2cdb0e99@cornell.edu> <2ec4937d-5932-a47a-964d-b3fc8c030da3@cornell.edu> <47d9f129-3c05-821e-56af-177bab31c355@cornell.edu> <743acb89-89a0-7d1c-dc45-01ca1e175b09@dronecode.org.uk> From: Ken Brown Message-ID: <0c9ff690-f257-792c-ccda-d04e75ba1d98@cornell.edu> Date: Tue, 24 Oct 2017 21:33:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <743acb89-89a0-7d1c-dc45-01ca1e175b09@dronecode.org.uk> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-PMX-Cornell-Gauge: Gauge=X X-PMX-CORNELL-AUTH-RESULTS: dkim-out=none; X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00117.txt.bz2 On 10/24/2017 4:37 PM, Jon Turney wrote: > On 24/10/2017 21:24, Ken Brown wrote: >> On 10/24/2017 4:09 PM, Jon Turney wrote: >>> On 23/10/2017 18:43, Ken Brown wrote: >>>> On 10/23/2017 7:38 AM, Jon Turney wrote: >>>>> On 21/10/2017 21:18, Ken Brown wrote: >>>>>> On 10/20/2017 6:24 PM, Ken Brown wrote: >>>>>>> Have you ever tested the "obsoletes:" feature of setup/libsolv? >>>>>>> I tried adding an "obsoletes:" line to setup.ini, and it didn't >>>>>>> seem to have any effect. >>>>> >>>>> It seems I tested it back in May, so it might well have broken >>>>> since :) >>>>> >>>>> Here's a very small test repo I've been using for some tests: >>>>> http://www.dronecode.org.uk/cygwin/test/x86_64/ >>>>> >>>>> But yes, your patch looks like it's needed for it to work correctly... >>>>> >>>>>> It turns out that it *is* working (after a minor fix, attached), >>>>>> but not always as I expect.  Suppose A requires B and C obsoletes >>>>>> B. Then the "obsoletes" statement appears to have no effect.  If I >>>>>> remove the dependence of A on B, then setup does propose >>>>>> uninstalling B and installing C. >>>>>> >>>>>> I guess the issue is that libsolv interprets "C obsoletes B" as >>>>>> "uninstall B and install C", and it won't uninstall B while >>>>>> something requires it. >>>>> >>>>> The 'targeted' vs. 'untargeted' distinction is relevant here? >>>>> Perhaps we are doing the wrong one? >>>> >>>> Maybe.  I've read and re-read the discussion of this in >>>> libsolv-bindings.txt, and I'm still not sure I understand it. >>> >>> Yeah, the documentation is a bit impenetrable. >>> >>>> But here's a simpler case where "obsoletes" isn't working as I >>>> expect. Using your test repo, in which A requires C and obsoletes B, >>>> I start with none of the packages installed.  I choose B for >>>> installation (either interactively or on the command line), and B >>>> gets installed. If I now run setup a second time, A and C get >>>> installed and B gets uninstalled. >>>> >>>> I expected A and C to be installed on the first run.  I don't think >>>> this has anything to do with targeted vs. untargeted, because that >>>> distinction is only relevant for updating installed packages. >>> >>> I guess I had the opposite expectation (if I ask for A to be >>> installed, that's what should happen, because if it insists on >>> upgrading it behind my back there's no way to do that...) >>> >>> The actual behaviour you mention fits what's described there pretty >>> well. >> >> OK, so maybe there's no real problem here.  In any case, the situation >> is unlikely to happen often -- the user has to intentionally choose to >> install an obsolete package. > > I was wondering if there might be some scenario where A is in the base > category, and obsoleted by B, where we'd really want to install B the > first time on fresh installs, but, yeah, something we'd want to avoid in > general... > >> I think we might have reached the point where more widespread testing >> would be useful.  If it would help, I could put together a patch >> series containing the various (sometimes revised) patches we've >> discussed recently. > Cool, I was going to ask you how far along you were in your test plan :) > > I think I've been keeping track of your patches, so I've updated > topic/libsolv with your patches and rebased onto master.  If that looks > good to you, I'll do test release. > > (I squashed "Fix parsing setup.ini" (for obsoletes) into "Add obsoletes: > support", and added a missing break; in "Don't override a Skip selection") Looks good to me. The only issue I can think of that hasn't yet been fully addressed is the one I mentioned here: https://sourceware.org/ml/cygwin-apps/2017-10/msg00094.html . But I admit that this is an obscure corner case, and the patch I proposed at the beginning of that thread is probably not the best way to deal with it. So we might want to just leave it for now. Ken