Opened 18 years ago
Last modified 5 years ago
#15186 assigned defect
port upgrade does not work correctly on current pseudo-port
| Reported by: | raimue (Rainer Müller) | Owned by: | raimue (Rainer Müller) |
|---|---|---|---|
| Priority: | Normal | Milestone: | MacPorts Future |
| Component: | base | Version: | 1.6.0 |
| Keywords: | Cc: | mojca (Mojca Miklavec), ryandesign (Ryan Carsten Schmidt) | |
| Port: |
Description
Instead of taking the actual porturl, macports::upgrade searches for the port in the tree which makes the behavior totally unexpected when using the current pseudo-port.
Imagine you got some directory with a Portfile outside of your ports tree which has the same name as a port in the tree. Then run port upgrade in this directory, and not the port from this directory is build and installed, but the one from the tree. This is absolutely not expected behavior.
I think macports::upgrade should take a porturl instead of the name of a port.
Change History (12)
comment:1 Changed 18 years ago by raimue (Rainer Müller)
| Component: | ports → base |
|---|
comment:2 Changed 17 years ago by tobypeterson
| Milestone: | MacPorts base bugs → MacPorts Future |
|---|
comment:4 follow-up: 7 Changed 8 years ago by neverpanic (Clemens Lang)
| Milestone: | MacPorts Future → MacPorts 2.5.0 |
|---|---|
| Owner: | changed from macports-tickets@… to raimue |
| Status: | new → assigned |
We should probably just remove the possibility to run upgrade with the current port. This is a very uncommon usecase otherwise, so it's probably not worth investing a lot of time into it.
comment:5 Changed 8 years ago by neverpanic (Clemens Lang)
| Keywords: | base upgrade removed |
|---|---|
| Milestone: | MacPorts 2.5.0 → MacPorts 2.6.0 |
comment:6 Changed 8 years ago by raimue (Rainer Müller)
| Milestone: | MacPorts 2.6.0 → MacPorts 2.5.0 |
|---|
Pull request: https://github.com/macports/macports-base/pull/69
comment:7 follow-ups: 8 9 Changed 8 years ago by jmroot (Joshua Root)
Replying to neverpanic:
This is a very uncommon usecase otherwise, so it's probably not worth investing a lot of time into it.
I don't know about that; I do it most of the time when updating ports. It's not needed of course, but it'll be an annoyance to retrain around.
comment:8 Changed 8 years ago by raimue (Rainer Müller)
If we want this to work, we are missing an API just like macports::upgrade, but instead of looking up a port by name with mportlookup, it would take a port name of the installed port and a porturl for the replacement. However, that seems a bit complex just for this case.
You can use sudo port install with the current pseudo-port to replace an installed port. The only difference is that port install is allowed to downgrade to an earlier version. Therefore another alternative could be to divert port upgrade current automatically to the install target, maybe with an informational message as the behavior changes slightly.
However, I thought that completely removing this functionality from port upgrade would be a good idea. After a while we could even make port upgrade default to port upgrade outdated to make using MacPorts easier.
comment:9 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
| Cc: | ryandesign added |
|---|
Replying to raimue:
Imagine you got some directory with a Portfile outside of your ports tree which has the same
nameas a port in the tree. Then runport upgradein this directory, and not the port from this directory is build and installed, but the one from the tree. This is absolutely not expected behavior.
I have been bitten by this behavior before, and I agree it was not at all obvious what was happening.
Replying to jmroot:
Replying to neverpanic:
This is a very uncommon usecase otherwise, so it's probably not worth investing a lot of time into it.
I don't know about that; I do it most of the time when updating ports. It's not needed of course, but it'll be an annoyance to retrain around.
I also use sudo port upgrade constantly. Whenever I work on a port, I first cd $(port dir foo) so that I can easily edit Portfile, sudo port install, sudo port upgrade, sudo port uninstall, port info, and so forth, without having to further specify the port name.
Could we only error out if sudo port upgrade is being attempted on a port that is not the one that is in the index?
comment:10 Changed 8 years ago by neverpanic (Clemens Lang)
| Milestone: | MacPorts 2.5.0 → MacPorts 2.6.0 |
|---|
comment:11 Changed 6 years ago by jmroot (Joshua Root)
| Milestone: | MacPorts 2.6.0 → MacPorts 2.7.0 |
|---|
Ticket retargeted after milestone closed
comment:12 Changed 5 years ago by jmroot (Joshua Root)
| Milestone: | MacPorts 2.7.0 → MacPorts Future |
|---|
Ticket retargeted after milestone closed

Milestone MacPorts base bugs deleted