DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 45KDbwYr3939729 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=ZPQ7TpY0 X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AB49C3894C01 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1718890676; bh=J21BKC+3upMtts6xFfgfmLhJOupFw7g5y1BD1CJz1Fk=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=ZPQ7TpY0VWCdyjCYEeVeHCnfR+23gSa91gvA1WgNas9Yn0SvbpIfDex0lLTSsHyyc S1jTa7pPlJKH4wG8oLJy4/n7gnZFxsSzfr8no1UawQVG81qxYkDRaBGnI9CYY/exJZ 6UGbKxV2INwRpVvJny19bOSs/UqVAF8OClB48Vp0= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AEA6F389366E ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AEA6F389366E ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718890612; cv=none; b=vKqIHQxWkqoYPyfWIxm+myH/aDy6nPE09v9NeRX4+9Uly7JIYfdVO5vBNy2lu/QvrtzZgOZVzPt0l1m14gP1zLuhpLkf/qJW07m3GEc3Y0QMjafm6O3kbl0r4ud448/PUBqdZTV4lGlYoCSie6PD1v/k+SbizH29Jky/qihlZ7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718890612; c=relaxed/simple; bh=8j/sOkmQHXUdTtOZQmgz3Xn7UFKtnrON3YP2aU0BqEg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=acgIsn1K4zkMI2YpJoU5ou8ytz4LPlurvTKO2XgHC3cuUB0yaa4vbBI67Rs76hf/ZEhAWsNTxWuOLK+tgMLKxxizhWSawfwdArW3KNI0bKAsTmz/TlHkZuTe98QmuH4NepJmXHAs1bMJWRTOw16vJiLHeyvLkWQ+y8oSabnXS1c= ARC-Authentication-Results: i=1; server2.sourceware.org X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718890610; x=1719495410; h=mime-version:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=sylDIktv7PwpUlJ4FZvlM87OGjc1Ky3PeKsFJ9wP6T8=; b=Yn8KS8AhgCL33DopBOvbfgdFQa13zmnwhgixI1ieS3UvwsROGe7K6H3TVPx0uUU95v Kxe5br3IcUzcd4y5qtkDyjNhgezARoth8lkMxW2OUQ9rZZW1//1JZeWrxIt8ff3lSek2 sIuBuPECuWUy/D+nd8cUFK4q03sUutN4PANskEn3PKcymDpbvmhY9KYj4fF5K3XZXw19 4KCrtAX3dhylHVgTd/Y5pgfBs1er9S3j0w+crg3zOt2MBYwqfasP9j4uusb3XdoOLziF vrV3H/2DR9VVTEagMEBXEwYk4Q5wgQCgCZ0X6PivviqwtfeNM5iMMotJtkpi52ki6X/F SAQw== X-Gm-Message-State: AOJu0YyDmw57MKLe0rRShuyO6i0S+xx9/8eOR3wogvMCAzq1UJ0vBWmL W8a533qmMcFx9AW4R1cCbYLbFxjJndhtFDPj/kAxX1cn8yF1MNSyNUfsUQ== X-Google-Smtp-Source: AGHT+IGs5naecUILWrPhUVDLSsPSNuvoYkRgUxRXfoG2JwKx9t/VOplEY0CpUrvRFGU3Va8j4VSzXQ== X-Received: by 2002:a05:622a:45:b0:439:7147:8f2a with SMTP id d75a77b69052e-444a7a8986cmr61945801cf.4.1718890609812; Thu, 20 Jun 2024 06:36:49 -0700 (PDT) To: cygwin AT cygwin DOT com Cc: David McFarland Subject: setup: --prune-install appears to be broken Date: Thu, 20 Jun 2024 10:36:45 -0300 Message-ID: <87bk3v91n6.fsf@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , From: David McFarland via Cygwin Reply-To: David McFarland Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Cygwin" If I do a base install to a new root: setup-x86_64.exe --root "$(cygpath -wa .cygtest)" --no-admin \ --no-shortcuts --no-replaceonreboot --no-version-check \ --prune-install --verbose And then run the same install again, I get: libsolv: orphaned packages: libsolv: base-0.0-0.any (erased) libsolv: _windows-10.0.19045.any (kept) libsolv: libsolv: ordering transaction libsolv: transaction elements: 33 libsolv: edges: 41, edge space: 70 libsolv: edge creation took 0 ms libsolv: cycles broken: 0 libsolv: cycle breaking took 0 ms libsolv: invedge space: 76 libsolv: creating new transaction took 0 ms libsolv: transaction ordering took 0 ms libsolv: 33 erased packages: libsolv: - base-0.0-0.any libsolv: - ca-certificates-2023.2.62_v7.0.401-2.any libsolv: - cygutils-1.4.17-1.any libsolv: - file-5.44-1.any libsolv: - gawk-5.3.0-1.any libsolv: - groff-1.23.0-1.any libsolv: - less-643-1.any libsolv: - libfdisk1-2.39.3-2.any libsolv: - libffi6-3.2.1-2.any libsolv: - libgdbm6-1.18.1-1.any libsolv: - liblz4_1-1.9.4-1.any libsolv: - liblzma5-5.6.2-1.any libsolv: - libmpfr6-4.2.1-1.any libsolv: - libp11-kit0-0.23.20-1.any libsolv: - libpcre1-8.45-1.any libsolv: - libpipeline1-1.5.6-1.any libsolv: - libpopt-common-1.19-1.any libsolv: - libpopt0-1.19-1.any libsolv: - libsmartcols1-2.39.3-2.any libsolv: - libssl1.1-1.1.1w-1.any libsolv: - libssl3-3.0.14-1.any libsolv: - libstdc++6-11.4.0-1.any libsolv: - libtasn1_6-4.14-1.any libsolv: - libuchardet0-0.0.8-1.any libsolv: - libuuid1-2.39.3-2.any libsolv: - man-db-2.12.1-1.any libsolv: - openssl-3.0.14-1.any libsolv: - p11-kit-0.23.20-1.any libsolv: - p11-kit-trust-0.23.20-1.any libsolv: - tar-1.35-2.any libsolv: - util-linux-2.39.3-2.any libsolv: - xz-5.6.2-1.any libsolv: - zstd-1.5.6-1.any libsolv: Can't happen. No packagemeta for base The "Can't happen" error results in all following transactions being skipped: // Can't happen - throw an exception? { Log (LOG_PLAIN) << "Can't happen. No packagemeta for " << pv.Name() << endLog; return; } This results in setup always showing no pending changes, even if you have installed additional packages that should be pruned by --prune-install, or if setup.ini has different contents. The problem seems to be that we use SOLVER_ERASE jobs to remove all non-base installed packages, and they take precedence over keeping the pseudo-package 'base' installed. Making the erase jobs weak seems to solve the problem: diff --git a/libsolv.cc b/libsolv.cc index 3f083a4..95f21a2 100644 --- a/libsolv.cc +++ b/libsolv.cc @@ -850,7 +850,7 @@ SolverSolution::tasksToJobs(SolverTasks &tasks, updateMode update, Queue &job) queue_push2(&job, SOLVER_INSTALL | SOLVER_SOLVABLE_PROVIDES, sv.name_id()); break; case SolverTasks::taskUninstall: - queue_push2(&job, SOLVER_ERASE | SOLVER_SOLVABLE, sv.id); + queue_push2(&job, SOLVER_ERASE | SOLVER_WEAK | SOLVER_SOLVABLE, sv.id); break; case SolverTasks::taskReinstall: // we don't know how to ask solver for this, so we just add the erase However, I'm not sure if this is a good idea. Perhaps it should only be done for pruned packages, and not explicitly uninstalled ones. I did try various things to strengthen the requirement on 'base', but had no luck. -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple