New Ticket     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #12989 (closed defect: fixed)

Opened 5 years ago

Last modified 3 years ago

Misleading message on activation conflicts

Reported by: stephen@… Owned by: macports-tickets@…
Priority: Normal Milestone: MacPorts 1.7.1
Component: base Version: 1.5.0
Keywords: Cc:
Port:

Description

This is absurd. The error message suggesting use of port -f should be changed to recommend "port -f activate" explicitly, and very probably should explicitly warn against "port -f upgrade".

chibi:MacPorts steve$ port upgrade {various stuff}
--->  Activating p5-pathtools 3.25_0
Error: Activating p5-pathtools 3.25_0 failed: Image error: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs is being used by the active perl5.8 port.  Please deactivate this port first, or use the -f flag to force the activation.
chibi:MacPorts steve$ port -f upgrade p5-pathtools
--->  Activating p5-pathtools 3.25_0
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs.mp_1193376935.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle.mp_1193376935.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm.mp_1193376935.
--->  Fetching perl5.8
--->  Verifying checksum(s) for perl5.8
--->  Extracting perl5.8
--->  Applying patches to perl5.8
--->  Configuring perl5.8
--->  Building perl5.8 with target all
--->  Staging perl5.8 into destroot
--->  Packaging tgz archive for perl5.8 5.8.8_0+darwin_8
--->  Unable to uninstall perl5.8 5.8.8_0+darwin_8, the following ports depend on it:
--->    p5-xml-parser
--->    gnome-icon-theme
--->    gnome-mime-data
--->    p5-xml-namespacesupport
--->    p5-xml-simple
--->    gnome-icon-theme
--->    gnome-icon-theme
--->    p5-xml-simple
--->    p5-xml-simple
--->    ghc
--->    openldap
--->    gnome-mime-data
--->    gnome-icon-theme
--->    ghc
--->    gnome-icon-theme
--->    gnome-icon-theme
--->    openldap
--->    ghc
--->    openldap
--->    p5-compress-raw-zlib
--->    p5-io-compress-base
--->    p5-io-compress-zlib
--->    p5-compress-zlib
--->    p5-html-tagset
--->    p5-html-parser
--->    p5-uri
--->    p5-libwww-perl
--->    subversion-perlbindings
--->    p5-svn-simple
--->    autoconf
--->    automake
--->    ghc
--->    subversion-perlbindings
--->    p5-compress-raw-zlib
--->    p5-scalar-list-utils
--->    p5-io-compress-base
--->    p5-io-compress-zlib
--->    p5-compress-zlib
--->    p5-error
--->    p5-term-readkey
--->    p5-locale-gettext
--->    help2man
--->    autoconf
--->    p5-scalar-list-utils
--->    p5-libwww-perl
--->    p5-libwww-perl
--->    p5-test-harness
--->    p5-test-simple
--->    p5-xml-sax
--->    p5-xml-simple
--->    p5-libwww-perl
--->    p5-xml-sax
--->    p5-xml-simple
--->    subversion-perlbindings
--->    p5-compress-raw-zlib
--->    p5-io-compress-zlib
--->    p5-compress-zlib
--->    p5-io-compress-base
--->    help2man
--->    p5-xml-parser
--->    gnome-mime-data
--->    gnome-icon-theme
--->    libbonobo
--->    p5-compress-zlib
--->    p5-test-harness
--->    p5-pathtools
--->    p5-getopt-long
--->    icon-naming-utils
--->    p5-xml-sax
--->    p5-test-simple
--->    libbonobo
--->    p5-uri
--->    libbonobo
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating perl5.8 5.8.8_0+darwin_8
--->  Uninstalling perl5.8 5.8.8_0+darwin_8
--->  Installing perl5.8 5.8.8_0+darwin_8
--->  Activating perl5.8 5.8.8_0+darwin_8
Warning: File /opt/local/bin/prove already exists.  Moving to: /opt/local/bin/prove.mp_1193377887.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs.mp_1193377887.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle.mp_1193377887.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm.mp_1193377887.
Warning: File /opt/local/lib/perl5/5.8.8/Getopt/Long.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Getopt/Long.pm.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/newgetopt.pl already exists.  Moving to: /opt/local/lib/perl5/5.8.8/newgetopt.pl.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness/Assert.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness/Assert.pm.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness/Iterator.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness/Iterator.pm.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness/Point.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness/Point.pm.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness/Straps.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness/Straps.pm.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness/TAP.pod already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness/TAP.pod.mp_1193377888.
Warning: File /opt/local/lib/perl5/5.8.8/Test/Harness.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/Test/Harness.pm.mp_1193377888.
Warning: File /opt/local/share/man/man1/prove.1.gz already exists.  Moving to: /opt/local/share/man/man1/prove.1.gz.mp_1193377888.
--->  Cleaning perl5.8
Portfile changed since last build; discarding previous state.
--->  Fetching p5-pathtools
--->  Verifying checksum(s) for p5-pathtools
--->  Extracting p5-pathtools
--->  Configuring p5-pathtools
--->  Building p5-pathtools with target all
--->  Staging p5-pathtools into destroot
You must install or activate this package with '-f' (force) as it needs to overwrite files installed by the perl5.8 port
--->  Packaging tgz archive for p5-pathtools 3.25_0
--->  Unable to uninstall p5-pathtools 3.25_0, the following ports depend on it:
--->    p5-getopt-long
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating p5-pathtools 3.25_0
--->  Uninstalling p5-pathtools 3.25_0
--->  Installing p5-pathtools 3.25_0
--->  Activating p5-pathtools 3.25_0
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs.mp_1193377929.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bundle.mp_1193377929.
Warning: File /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm already exists.  Moving to: /opt/local/lib/perl5/5.8.8/darwin-2level/Cwd.pm.mp_1193377929.
--->  Cleaning p5-pathtools

Change History

  Changed 5 years ago by ryandesign@…

  • cc stephen@… added
  • milestone set to MacPorts base bugs

follow-up: ↓ 6   Changed 4 years ago by dluke@…

As a side note, the error message doesn't say to -f upgrade ... it says

"You must install or activate this package with '-f' (force) as it needs to overwrite files installed by the perl5.8 port"

  Changed 4 years ago by jmpp@…

  • component changed from ports to base

  Changed 3 years ago by toby@…

  • milestone changed from MacPorts base bugs to MacPorts Future

Milestone MacPorts base bugs deleted

follow-up: ↓ 7   Changed 3 years ago by jmr@…

  • cc stephen@… removed

Any reason this shouldn't be duped to #12710?

in reply to: ↑ 2   Changed 3 years ago by stephen@…

Replying to dluke@…:

As a side note, the error message doesn't say to -f upgrade ... it says "You must install or activate this package with '-f' (force) as it needs to overwrite files installed by the perl5.8 port"

No. That message is issued from a different place. The one that caused me to use -f upgrade is at the very top of the report, and it says "Please deactivate this port first, or use the -f flag to force the activation." From the user's point of view, the error may have interrupted a sequence of dependencies, and they want to use -f upgrade to do the whole batch. But this has the rather annoying consequence that many packages that don't need to be upgraded at all get uninstalled and reinstalled!

in reply to: ↑ 5   Changed 3 years ago by stephen@…

Replying to jmr@…:

Any reason this shouldn't be duped to #12710?

It's a different issue from my point of view. I do not understand why the perl port needs to be uninstalled and reinstalled, then the p5-pathtools that at long last got activated itself has to be uninstalled and reinstalled. Note that I now have (at least) FOUR copies of /opt/local/lib/perl5/5.8.8/darwin-2level/auto/Cwd/Cwd.bs!

  Changed 3 years ago by jmr@…

I guess I don't understand the issue then. It seems like the problem is simply that p5-pathtools can't be installed without force-activation, which is what #12710 is about. Rebuilding things regardless of whether they are outdated is the intended behaviour of force upgrade.

I agree that being told simply to "use -f" when you initially ran an upgrade command is misleading. I've improved the message in r47848.

follow-up: ↓ 10   Changed 3 years ago by stephen@…

When I say "port -f upgrade p5-pathtools" I expect p5-pathtools to be rebuilt. However, if I put -f in an upgrade command, I cannot predict how much will be rebuilt unless I'm wiling to trace the whole dependency graph. For example, IIRC if p5-pathtools depends on p5-foo, and both depend on perlt, you can expect perl to be rebuilt twice. OTOH, if you do -f -n then outdated prerequisites won't get rebuilt either.

It's also an unsightly waste of space in cases like this where copies of files get replicated ad infinitum.

in reply to: ↑ 9   Changed 3 years ago by jmr@…

Replying to stephen@…:

When I say "port -f upgrade p5-pathtools" I expect p5-pathtools to be rebuilt. However, if I put -f in an upgrade command, I cannot predict how much will be rebuilt unless I'm wiling to trace the whole dependency graph.

There's a dry-run mode in trunk.

For example, IIRC if p5-pathtools depends on p5-foo, and both depend on perlt, you can expect perl to be rebuilt twice.

Actually, perl will only be rebuilt once.

OTOH, if you do -f -n then outdated prerequisites won't get rebuilt either.

If things are genuinely outdated then you don't have to use -f. Of course you do have to manually intervene and use -f on some of the activations, but that's #12710.

It's also an unsightly waste of space in cases like this where copies of files get replicated ad infinitum.

Again, the ports shouldn't conflict. #12710.

  Changed 3 years ago by raimue@…

  • status changed from new to closed
  • resolution set to fixed
  • summary changed from port -f upgrade considered harmful to Misleading message on activation conflicts

The misleading message was improved in r47848, everything else is covered by #12710.

  Changed 3 years ago by raimue@…

  • milestone changed from MacPorts Future to MacPorts 1.7.1

Merged to release_1_7 in r47864.

Note: See TracTickets for help on using tickets.