Description
I think I've mentioned that the whole 'system' of creating archives (7z files) is in need of an update.
- Several years ago Ruby was released with an upgrade from OpenSSL 1.1 to OpenSSL 3, and I made some bad choices then.
- That problem required 'downgrade' archive packages, and I suspected it would occur again, which has now occurred with gcc.
- Going forward, this may become more common (build tool/package incompatibility), so I'd like to make it easier to update, and also clearer as to how it works.
So, what I'd like to do is set it up so the package/downgrade info is more 'data/configuration' driven, rather than the current 'code' driven approach.
An example of what I think will be needed is shown below in a new GHA matrix:
matrix:
include:
# The below jobs have no package downgrades
- { os: windows-2022 , file: msys2 , ruby: 3.4 }
- { os: windows-11-arm, file: msys2-arm64, ruby: head }
- { os: windows-2022 , file: mingw64 , ruby: mingw }
- { os: windows-2022 , file: ucrt64 , ruby: ucrt }
- { os: windows-11-arm, file: clangarm64 , ruby: head }
- { os: windows-2022 , file: mswin , ruby: mswin }
# The below jobs have package downgrades, at present, GCC and/or OpenSSL
# All downgrade packages must be stored in the 'new name' release
- { os: windows-20222 , file: ucrt64-gcc14 , ruby: 3.2, downgrade: gcc-14.2.0-3 }
- { os: windows-20222 , file: ucrt64-gcc14-ssl1.1 , ruby: 3.1, downgrade: gcc-14.2.0-3 openssl-1.1.1.w-1 }
- { os: windows-20222 , file: mingw64-gcc14-ssl1.1, ruby: 3.0, downgrade: gcc-14.2.0-3 openssl-1.1.1.w-1 }
- I intend to use a new release for these packages, so the work can be done without affecting current code in
setup-ruby
. - One issue is how to push code to
setup-ruby
for the proper selection of which build tool archive files to install, based on the Ruby version and platform. This code may be messy, since patch versions may be needed for proper selection, eg Ruby 3.4.3 should use gcc-14, but Ruby 3.4.4 should use gcc-15 (assuming backports). I'd like to keep the data here, possibly in a json or yaml format, and transfer it in some way tosetup-ruby
, which is where the selection occurs.
Any thoughts?
@hsbt I'm not sure where to look. Is there a stated policy regarding backports for updated build tool/package issues? If they are backported to 'bug' supported versions, would they also be done for Ruby versions in 'security only' updates? Thanks for adding the Ubuntu gcc-15 CI...
*EDIT: I have not mentioned. MSYS2 uses pacman
for its package manager, and pacman
only allows one package to be installed. Unlike some other popular package managers, pacman
will only install one version. So, to downgrade a package, we need to store the downgrade package (MSYS2 only keeps old packages for a limited time), and use a different install command.