Skip to content

Update for downgraded package #25

Closed
@MSP-Greg

Description

@MSP-Greg

@eregon & @ntkme

I think I've mentioned that the whole 'system' of creating archives (7z files) is in need of an update.

  1. Several years ago Ruby was released with an upgrade from OpenSSL 1.1 to OpenSSL 3, and I made some bad choices then.
  2. That problem required 'downgrade' archive packages, and I suspected it would occur again, which has now occurred with gcc.
  3. 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 }
  1. I intend to use a new release for these packages, so the work can be done without affecting current code in setup-ruby.
  2. 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 to setup-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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions