[MacPorts] #50233: port upgrade --force shouldn't uninstall if no permission was given to install a missing dependency
MacPorts
noreply at macports.org
Tue Jan 5 16:16:46 PST 2016
#50233: port upgrade --force shouldn't uninstall if no permission was given to
install a missing dependency
--------------------------+--------------------------------
Reporter: rjvbertin@… | Owner: macports-tickets@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: base | Version: 2.3.4
Resolution: | Keywords:
Port: |
--------------------------+--------------------------------
Old description:
> This is a rare situation, that gave rise to a port being uninstalled in
> error, I consider:
>
> Given: a port "A" that has a build dependency on port "B1" which itself
> conflicts with port "B2". Once built, port "A" can co-exist with either
> "B1" or "B2"; in fact, "A" has a path-style *runtime* dependency on an
> executable provided by both B1 and B2 (path:bin/bb).
>
> Scenario (leaving out sudo, and ignoring the reasons why I proceeded this
> way):
>
> ```
> > port deactivate B2
> > port activate B1
> > port destroot A
> > port deactivate B1
> > port activate B2
> > port -nv upgrade --force A
> ---> Computing dependencies for A..
> The following dependencies will be installed: B1
> Continue? [Y/n]: n
> ---> Deactivating A @version
> ---> Uninstalling A @version
> ---> Cleaning A
> ---> Removing work directory for A
> ---> Computing dependencies for A..
> The following dependencies will be installed: B1
> Continue? [Y/n]: n
> ---> Scanning binaries for linking errors
> ```
>
> I consider that the process should have been aborted when I first refused
> to install B1.
> One could also consider that
> - the depends_build dependency should be ignored since the build process
> has been completed
> - the depends_run dependency is satisfied by the presence of
> ${prefix}/bin/bb (provided by B2 at the time).
>
> So in a sense there should be no missing dependency when doing an upgrade
> .
New description:
This is a rare situation, that gave rise to a port being uninstalled in
error, I consider:
Given: a port "A" that has a build dependency on port "B1" which itself
conflicts with port "B2". Once built, port "A" can co-exist with either
"B1" or "B2"; in fact, "A" has a path-style *runtime* dependency on an
executable provided by both B1 and B2 (path:bin/bb).
Scenario (leaving out sudo, and ignoring the reasons why I proceeded this
way):
{{{
> port deactivate B2
> port activate B1
> port destroot A
> port deactivate B1
> port activate B2
> port -nv upgrade --force A
---> Computing dependencies for A..
The following dependencies will be installed: B1
Continue? [Y/n]: n
---> Deactivating A @version
---> Uninstalling A @version
---> Cleaning A
---> Removing work directory for A
---> Computing dependencies for A..
The following dependencies will be installed: B1
Continue? [Y/n]: n
---> Scanning binaries for linking errors
}}}
I consider that the process should have been aborted when I first refused
to install B1.
One could also consider that
- the depends_build dependency should be ignored since the build process
has been completed
- the depends_run dependency is satisfied by the presence of
${prefix}/bin/bb (provided by B2 at the time).
So in a sense there should be no missing dependency when doing an upgrade
.
--
Comment (by ryandesign@…):
I agree that if you answer "no" to the "Continue?" prompt, MacPorts should
abort and not do anything.
--
Ticket URL: <https://trac.macports.org/ticket/50233#comment:1>
MacPorts <https://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list