Opened 7 years ago
Last modified 14 months ago
#56182 new defect
current_versions.tcl, delete_old_archives.py should understand that ports don't always offer the same version to all systems
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | admin@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | server/hosting | Version: | |
Keywords: | Cc: | jmroot (Joshua Root) | |
Port: |
Description
If I'm not mistaken, current_versions.tcl assumes that all versions of macOS have the same version of each port. This is not always the case; this is why we have separate portindexes for each version of macOS. A port might offer a different version depending on os.major
, or os.arch
, or even configure.cxx_stdlib
. For example, libomp offers version 5.0.1 to libc++ systems but version 3.8.1 to libstdc++ systems. Even though 5.0.1 is the "current version" according to current_versions.tcl, we should not delete the 3.8.1 archive for libstdc++ systems.
In practice, I don't know how big a problem this is. delete_old_archives.py doesn't delete all old archives; it leaves up to 200GB of old archives, preferring to first delete the archives that are oldest and largest. Even if, say, the libomp 3.8.1 libstdc++ archives got inadvertently deleted, the buildbot would eventually recreate them, and then those new archives would not be "old" so they wouldn't be as likely to be deleted again for awhile.
Change History (3)
comment:1 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
comment:2 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
In fact, this problem did happen when I ran these scripts a couple days ago. I ran them on the buildmaster, which has OS X 10.11. It determined that the current version of mame was 0.226, even though newer systems have 0.227 available. It deleted all the 0.227 archives, which now have to be recreated.
comment:3 Changed 14 months ago by ryandesign (Ryan Carsten Schmidt)
For the automated runs of this script on the server I am now using a patched version of the scripts that runs separately for each OS version using that OS version's PortIndex.
Could current_versions.tcl use a strategy like mprsyncup uses to fake different os.major and os.arch values to get a fuller picture of what is "current" on different systems?