#59051 closed enhancement (fixed)
Remove *-graveyard ports
Reported by: | jmroot (Joshua Root) | Owned by: | jmroot (Joshua Root) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | mojca (Mojca Miklavec) | |
Port: | py-graveyard p5-graveyard |
Description
These cause hundreds of ports to be reindexed every time one subport is added (or removed), which takes quite some time. And more importantly, they don't provide any real useful function: marking a module installed for one interpreter version as replaced_by one installed for a different interpreter version doesn't provide a convenient upgrade path at all, because the two don't install the same files. Manual intervention is needed just as if the subport were simply deleted. So the goal of avoiding buildbot failure messages is better achieved by doing just that.
Change History (18)
comment:1 Changed 5 years ago by mojca (Mojca Miklavec)
Cc: | mojca added |
---|
comment:2 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)
comment:3 follow-up: 7 Changed 5 years ago by mojca (Mojca Miklavec)
I understand the pain being present with the python graveyard ports. For perl we try to keep this minimal and only update the graveyard once or twice per year which seems like a reasonable compromise to allow getting rid of the gazillion of no-longer-existing subports.
Also, perl is somewhat special in the way that we do have the perl5
port, so to some extent and with quite a bit of limitations the intention does work to some extent (when we upgrade perl5 to use a newer version and remove the old variant, and if we removed the old subports at the same time, modules that previously worked with perl might keep working). So maybe this is a plea to keep the p5-graveyard if you happen to decide to remove the other one.
For python ... could we at least provide a mechanism to remove old ports? I agree that the py-graveyard has very very limited usability, and by constantly updating it just for the sake of one port at a time, given the waaaaaaay to long parsing time of the file, it's a bit of annoyance.
comment:4 Changed 5 years ago by reneeotten (Renee Otten)
I agree that the py-graveyard
isn't all that useful... and would be fine with "just" removing subports as needed, without giving any replacement rules. That would certainly make the removal of EOL Python versions a much less time-consuming task.
In the meantime, I cleaned up the py-graveyard
file by removing all entries that have been in there for more than 1 year; this should help quite a bit with the reindexing time... see PR5383
comment:5 Changed 5 years ago by jmroot (Joshua Root)
In e4a42da6a4abc7fce9a20c557d57d01d376290be/mpbb (master):
comment:6 Changed 5 years ago by jmroot (Joshua Root)
There, the graveyard ports no longer have any reason to exist. :)
If replacement is desired, it can be done in the individual portfiles.
comment:7 Changed 5 years ago by jmroot (Joshua Root)
Replying to mojca:
could we at least provide a mechanism to remove old ports?
port uninstall obsolete
will remove them, as will port reclaim
if they have no requested dependents. What more do you want?
comment:8 Changed 5 years ago by reneeotten (Renee Otten)
comment:9 Changed 5 years ago by jmroot (Joshua Root)
As the only objections seem to have been addressed, I'm going to go ahead with the removal.
comment:10 Changed 5 years ago by mojca (Mojca Miklavec)
Joshua, can you please provide an example patch or Portfile for how I should modify a p5-<something>
port when I want to declare p5.26-something
obsolete (with or without replacement)?
comment:11 Changed 5 years ago by jmroot (Joshua Root)
subport p5.26-something { replaced_by p5.30-something PortGroup obsolete 1.0 }
It shouldn't be hard to add a new option like perl5.obsolete_versions
to the perl5 portgroup to automate this if you want.
comment:12 follow-up: 14 Changed 5 years ago by reneeotten (Renee Otten)
Joshua, sorry but from that change to mpbb
it's not clear to me how one would proceed now with, for example, Python subports.
I get that you're suggesting to do the replacement if required in the actual Portfile; that's fine with me (anyway that's not very useful, so that can likely be skipped in most cases). What do we do know when one just want to remove a subport, then I would need to add the code below to the Portfile?
subport p34-something { PortGroup obsolete 1.0 }
If so, that hardly makes the removal of subports easier... or am I missing something?
comment:13 Changed 5 years ago by jmroot (Joshua Root)
Owner: | set to jmroot |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:14 Changed 5 years ago by jmroot (Joshua Root)
Replying to reneeotten:
I get that you're suggesting to do the replacement if required in the actual Portfile; that's fine with me (anyway that's not very useful, so that can likely be skipped in most cases). What do we do know when one just want to remove a subport, then I would need to add the code below to the Portfile?
subport p34-something { PortGroup obsolete 1.0 }If so, that hardly makes the removal of subports easier... or am I missing something?
If there's no replacement, simply delete 34 from python.versions.
comment:15 Changed 5 years ago by eborisch (Eric A. Borisch)
If you have a chance, take a look at https://github.com/macports/macports-ports/pull/5598 (implementation of python.obsolete_versions.)
comment:16 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
comment:17 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
comment:18 Changed 4 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
In fcf55e8985d7aabe259ff6555f3d06509978f764/macports-ports (dar, master, py38-reproject, revert-6945-rust-1.43.0, wireshark):
I have not been certain whether the graveyard ports are useful. Maybe you're right that they're not.