https://github.com/taiki-e/install-action/blob/469c5e2/tools/ci/tool-list.sh#L10-L49 manually defines a list of tools which have varied glibc requirements.
It is only used in CI, and only the latest version of each tool's binary 's undergoes this check.
However the glibc requirement changes over time, which breaks CI occasionally, and it is possible to dynamically detect this using rust crate https://github.com/m4b/goblin or underlying https://github.com/gimli-rs/object . https://github.com/ex0dus-0x/binsec/blob/e2003fad60661c9d507b419fa0ac9583dac7aaa3/src/check/elf.rs provides some example Rust code for this.
As it is CI only, I am thinking we might want a separate lib does the detection, and manage this data in a separate JSON file that describes the glibc version of each tool's latest binary, which can then by used by tool-list.sh. Then, when a tool changes it's minimum glib version, at least it is easy to update the JSON file.
https://github.com/taiki-e/install-action/blob/469c5e2/tools/ci/tool-list.sh#L10-L49 manually defines a list of tools which have varied glibc requirements.
It is only used in CI, and only the latest version of each tool's binary 's undergoes this check.
However the glibc requirement changes over time, which breaks CI occasionally, and it is possible to dynamically detect this using rust crate https://github.com/m4b/goblin or underlying https://github.com/gimli-rs/object . https://github.com/ex0dus-0x/binsec/blob/e2003fad60661c9d507b419fa0ac9583dac7aaa3/src/check/elf.rs provides some example Rust code for this.
As it is CI only, I am thinking we might want a separate lib does the detection, and manage this data in a separate JSON file that describes the glibc version of each tool's latest binary, which can then by used by
tool-list.sh. Then, when a tool changes it's minimum glib version, at least it is easy to update the JSON file.