ruby-changes:72285
From: Nobuyoshi <ko1@a...>
Date: Wed, 22 Jun 2022 18:32:37 +0900 (JST)
Subject: [ruby-changes:72285] e6f92cada1 (master): Refactor compilations workflow
https://git.ruby-lang.org/ruby.git/commit/?id=e6f92cada1 From e6f92cada1cf8026d0dc6dbd11867ba9a994f4d6 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Thu, 16 Jun 2022 01:15:31 +0900 Subject: Refactor compilations workflow Now some entries need multiple variables for customization, and only one environment variable per entry is not enough. To solve it, dccfff943c3e has introduced overriding variables by `env` key for each entries. This commit uses `env` keys for the other environment variables too, instead of appending to `$GITHUB_ENV`. --- .github/workflows/compilers.yml | 233 ++++++++++++++++++++-------------------- 1 file changed, 118 insertions(+), 115 deletions(-) diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml index a9f97b181d..30299e29e6 100644 --- a/.github/workflows/compilers.yml +++ b/.github/workflows/compilers.yml @@ -22,7 +22,6 @@ concurrency: https://github.com/ruby/ruby/blob/trunk/.github/workflows/compilers.yml#L22 env: default_cc: clang-14 append_cc: '' - crosshost: '' # -O1 is faster than -O3 in our tests... Majority of time are consumed trying # to optimize binaries. Also GitHub Actions run on relatively modern CPUs @@ -63,61 +62,62 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/compilers.yml#L62 env: - {} entry: - - { key: default_cc, name: gcc-12, value: gcc-12, container: gcc-12 } - - { key: default_cc, name: gcc-11, value: gcc-11, container: gcc-11 } - - { key: default_cc, name: gcc-10, value: gcc-10, container: gcc-10 } - - { key: default_cc, name: gcc-9, value: gcc-9, container: gcc-9 } - - { key: default_cc, name: gcc-8, value: gcc-8, container: gcc-8 } - - { key: default_cc, name: gcc-7, value: gcc-7, container: gcc-7 } - - { key: default_cc, name: gcc-6, value: gcc-6, container: gcc-6 } - - { key: default_cc, name: gcc-5, value: gcc-5, container: gcc-5 } - - { key: default_cc, name: gcc-4.8, value: gcc-4.8, container: gcc-4.8 } - - key: default_cc - name: 'gcc-11 LTO' - value: 'gcc-11 -flto=auto -ffat-lto-objects' + - { name: gcc-12, env: { default_cc: gcc-12 } } + - { name: gcc-11, env: { default_cc: gcc-11 } } + - { name: gcc-10, env: { default_cc: gcc-10 } } + - { name: gcc-9, env: { default_cc: gcc-9 } } + - { name: gcc-8, env: { default_cc: gcc-8 } } + - { name: gcc-7, env: { default_cc: gcc-7 } } + - { name: gcc-6, env: { default_cc: gcc-6 } } + - { name: gcc-5, env: { default_cc: gcc-5 } } + - { name: gcc-4.8, env: { default_cc: gcc-4.8 } } + - name: 'gcc-11 LTO' container: gcc-11 - configure_append: '--disable-shared optflags=-O2' + env: + default_cc: 'gcc-11 -flto=auto -ffat-lto-objects' + optflags: '-O2' + shared: disable # check: true - - key: default_cc - name: 'gcc-11 annocheck' - # Minimal flags to pass the check. - value: 'gcc-11 -O2 -fcf-protection -Wa,--generate-missing-build-notes=yes' + - name: 'gcc-11 annocheck' container: gcc-11 env: + # Minimal flags to pass the check. + default_cc: 'gcc-11 -O2 -fcf-protection -Wa,--generate-missing-build-notes=yes' append_configure: 'LDFLAGS=-Wl,-z,now' # FIXME: Drop skipping options # https://bugs.ruby-lang.org/issues/18061 # https://sourceware.org/annobin/annobin.html/Test-pie.html TEST_ANNOCHECK_OPTS: "--skip-pie" check: true - - { key: default_cc, name: clang-15, value: clang-15, container: clang-15 } - - { key: default_cc, name: clang-14, value: clang-14, container: clang-14 } - - { key: default_cc, name: clang-13, value: clang-13, container: clang-13 } - - { key: default_cc, name: clang-12, value: clang-12, container: clang-12 } - - { key: default_cc, name: clang-11, value: clang-11, container: clang-11 } - - { key: default_cc, name: clang-10, value: clang-10, container: clang-10 } - - { key: default_cc, name: clang-9, value: clang-9, container: clang-9 } - - { key: default_cc, name: clang-8, value: clang-8, container: clang-8 } - - { key: default_cc, name: clang-7, value: clang-7, container: clang-7 } - - { key: default_cc, name: clang-6.0, value: clang-6.0, container: clang-6.0 } - - { key: default_cc, name: clang-5.0, value: clang-5.0, container: clang-5.0 } - - { key: default_cc, name: clang-4.0, value: clang-4.0, container: clang-4.0 } - - { key: default_cc, name: clang-3.9, value: clang-3.9, container: clang-3.9 } - - key: default_cc - name: 'clang-14 LTO' - value: 'clang-14 -flto=auto' + - { name: clang-15, env: { default_cc: clang-15 } } + - { name: clang-14, env: { default_cc: clang-14 } } + - { name: clang-13, env: { default_cc: clang-13 } } + - { name: clang-12, env: { default_cc: clang-12 } } + - { name: clang-11, env: { default_cc: clang-11 } } + - { name: clang-10, env: { default_cc: clang-10 } } + - { name: clang-9, env: { default_cc: clang-9 } } + - { name: clang-8, env: { default_cc: clang-8 } } + - { name: clang-7, env: { default_cc: clang-7 } } + - { name: clang-6.0, env: { default_cc: clang-6.0 } } + - { name: clang-5.0, env: { default_cc: clang-5.0 } } + - { name: clang-4.0, env: { default_cc: clang-4.0 } } + - { name: clang-3.9, env: { default_cc: clang-3.9 } } + - name: 'clang-14 LTO' container: clang-14 - configure_append: '--disable-shared optflags=-O2' + env: + default_cc: 'clang-14 -flto=auto' + optflags: '-O2' + shared: disable # check: true -# - { key: crosshost, name: aarch64-linux-gnu, value: aarch64-linux-gnu, container: crossbuild-essential-arm64 } -# - { key: crosshost, name: arm-linux-gnueabi, value: arm-linux-gnueabi } -# - { key: crosshost, name: arm-linux-gnueabihf, value: arm-linux-gnueabihf } -# - { key: crosshost, name: i686-w64-mingw32, value: i686-w64-mingw32 } -# - { key: crosshost, name: powerpc-linux-gnu, value: powerpc-linux-gnu } -# - { key: crosshost, name: powerpc64le-linux-gnu, value: powerpc64le-linux-gnu, container: crossbuild-essential-ppc64el } -# - { key: crosshost, name: s390x-linux-gnu, value: s390x-linux-gnu, container: crossbuild-essential-s390x } -# - { key: crosshost, name: x86_64-w64-mingw32, value: x86_64-w64-mingw32, container: mingw-w64 } +# - { name: aarch64-linux-gnu, crosshost: aarch64-linux-gnu, container: crossbuild-essential-arm64 } +# - { name: arm-linux-gnueabi, crosshost: arm-linux-gnueabi } +# - { name: arm-linux-gnueabihf, crosshost: arm-linux-gnueabihf } +# - { name: i686-w64-mingw32, crosshost: i686-w64-mingw32 } +# - { name: powerpc-linux-gnu, crosshost: powerpc-linux-gnu } +# - { name: powerpc64le-linux-gnu, crosshost: powerpc64le-linux-gnu, container: crossbuild-essential-ppc64el } +# - { name: s390x-linux-gnu, crosshost: s390x-linux-gnu, container: crossbuild-essential-s390x } +# - { name: x86_64-w64-mingw32, crosshost: x86_64-w64-mingw32, container: mingw-w64 } # -Wno-strict-prototypes is necessary with current clang-15 since # older autoconf generate functions without prototype and -pedantic @@ -125,92 +125,92 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/compilers.yml#L125 # warning generates a lot of noise from use of ANYARGS in # rb_define_method() and friends. # See: https://github.com/llvm/llvm-project/commit/11da1b53d8cd3507959022cd790d5a7ad4573d94 - - { key: append_cc, name: c99, value: '-std=c99 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } -# - { key: append_cc, name: c11, value: '-std=c11 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } -# - { key: append_cc, name: c17, value: '-std=c17 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } - - { key: append_cc, name: c2x, value: '-std=c2x -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } - - { key: CXXFLAGS, name: c++98, value: '-std=c++98 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } -# - { key: CXXFLAGS, name: c++11, value: '-std=c++11 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } -# - { key: CXXFLAGS, name: c++14, value: '-std=c++14 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } -# - { key: CXXFLAGS, name: c++17, value: '-std=c++17 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } - - { key: CXXFLAGS, name: c++2a, value: '-std=c++2a -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } + - { name: c99, env: { append_cc: '-std=c99 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } } +# - { name: c11, env: { append_cc: '-std=c11 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } } +# - { name: c17, env: { append_cc: '-std=c17 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } } + - { name: c2x, env: { append_cc: '-std=c2x -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } } + - { name: c++98, env: { CXXFLAGS: '-std=c++98 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } } +# - { name: c++11, env: { CXXFLAGS: ' (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/