summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-04-08 13:28:13 +0900
committerGitHub <noreply@github.com>2020-04-08 13:28:13 +0900
commit9e6e39c3512f7a962c44dc3729c98a0f8be90341 (patch)
tree901a22676d54d78240e450b64a8cd06eb1703910 /.github
parent5ac4bf2cd87e1eb5779ca5ae7f96a1a22e8436d9 (diff)
Merge pull request #2991 from shyouhei/ruby.h
Split ruby.h
Notes
Notes: Merged-By: shyouhei <shyouhei@ruby-lang.org>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/compilers.yml201
-rw-r--r--.github/workflows/mingw.yml4
2 files changed, 203 insertions, 2 deletions
diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml
new file mode 100644
index 0000000000..24de5d6aee
--- /dev/null
+++ b/.github/workflows/compilers.yml
@@ -0,0 +1,201 @@
+name: Compilations
+
+on: [push, pull_request]
+
+# Github actions does not support YAML anchors. This creative use of
+# environment variables (plus the "echo ::set-env" hack) is to reroute that
+# restriction.
+env:
+ default_cc: clang-11
+ append_cc: ''
+
+ # -O1 is faster than -O3 in our tests... Majority of time are consumed trying
+ # to optimize binaries. Also Github Actions runs on a relatively modern CPU
+ # compared to, say, GCC 4 or Clang 3. We don't specify `-march=native`
+ # because compilers tend not understand what the CPU is.
+ optflags: '-O1 -march=x86-64 -mtune=generic'
+
+ # -g0 disables backtraces when SEGV. Do not set that.
+ debugflags: '-ggdb3'
+
+ default_configure: >-
+ --enable-debug-env
+ --disable-install-doc
+ --with-ext=-test-/cxxanyargs,+
+ append_configure: >-
+ --without-valgrind
+ --without-jemalloc
+ --without-gmp
+
+ UPDATE_UNICODE: >-
+ UNICODE_FILES=.
+ UNICODE_PROPERTY_FILES=.
+ UNICODE_AUXILIARY_FILES=.
+ UNICODE_EMOJI_FILES=.
+ CONFIGURE_TTY: never
+ RUBY_DEBUG: ci rgengc
+ RUBY_TESTOPTS: >-
+ -q
+ --color=always
+ --tty=no
+
+jobs:
+ compile:
+ strategy:
+ fail-fast: false
+ matrix:
+ entry:
+ - { key: default_cc, name: gcc-9, value: gcc-9 }
+ - { key: default_cc, name: gcc-8, value: gcc-8 }
+ - { key: default_cc, name: gcc-7, value: gcc-7 }
+ - { key: default_cc, name: gcc-6, value: gcc-6 }
+ - { key: default_cc, name: gcc-5, value: gcc-5 }
+ - { key: default_cc, name: gcc-4.8, value: gcc-4.8 }
+ - { key: default_cc, name: clang-11, value: clang-11 }
+ - { key: default_cc, name: clang-10, value: clang-10 }
+ - { key: default_cc, name: clang-9, value: clang-9 }
+ - { key: default_cc, name: clang-8, value: clang-8 }
+ - { key: default_cc, name: clang-7, value: clang-7 }
+ - { key: default_cc, name: clang-6.0, value: clang-6.0 }
+ - { key: default_cc, name: clang-5.0, value: clang-5.0 }
+ - { key: default_cc, name: clang-4.0, value: clang-4.0 }
+ - { key: default_cc, name: clang-3.9, value: clang-3.9 }
+
+ - { key: append_cc, name: c99, value: '-std=c99 -Werror=pedantic -pedantic-errors' }
+ - { key: append_cc, name: c11, value: '-std=c11 -Werror=pedantic -pedantic-errors' }
+ - { key: append_cc, name: c17, value: '-std=c17 -Werror=pedantic -pedantic-errors' }
+ - { key: append_cc, name: c2x, value: '-std=c2x -Werror=pedantic -pedantic-errors' }
+ - { 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' }
+
+ - { key: optflags, name: '-O0', value: '-O0 -march=x86-64 -mtune=generic' }
+ - { key: optflags, name: '-O3', value: '-O3 -march=x86-64 -mtune=generic' }
+
+ - { key: append_configure, name: gmp, value: '--with-gmp' }
+ - { key: append_configure, name: jemalloc, value: '--with-jemalloc' }
+ - { key: append_configure, name: valgrind, value: '--with-valgrind' }
+ - { key: append_configure, name: 'coroutine=ucontext', value: '--with-coroutine=ucontext' }
+ - { key: append_configure, name: 'coroutine=copy', value: '--with-coroutine=copy' }
+ - { key: append_configure, name: disable-mathn, value: '--disable-mathn' }
+ - { key: append_configure, name: disable-jit-support, value: '--disable-jit-support' }
+ - { key: append_configure, name: disable-dln, value: '--disable-dln' }
+ - { key: append_configure, name: disable-rubygems, value: '--disable-rubygems' }
+
+ - { key: cppflags, name: OPT_THREADED_CODE=1, value: '-DOPT_THREADED_CODE=1' }
+ - { key: cppflags, name: OPT_THREADED_CODE=2, value: '-DOPT_THREADED_CODE=2' }
+ - { key: cppflags, name: OPT_THREADED_CODE=3, value: '-DOPT_THREADED_CODE=3' }
+
+ - { key: cppflags, name: NDEBUG, value: '-DNDEBUG' }
+ - { key: cppflags, name: RUBY_DEBUG, value: '-DRUBY_DEBUG' }
+ - { key: cppflags, name: ARRAY_DEBUG, value: '-DARRAY_DEBUG' }
+ - { key: cppflags, name: BUGNUM_DEBUG, value: '-DBUGNUM_DEBUG' }
+ - { key: cppflags, name: CCAN_LIST_DEBUG, value: '-DCCAN_LIST_DEBUG' }
+ - { key: cppflags, name: CPDEBUG=-1, value: '-DCPDEBUG=-1' }
+ - { key: cppflags, name: ENC_DEBUG, value: '-DENC_DEBUG' }
+ - { key: cppflags, name: GC_DEBUG, value: '-DGC_DEBUG' }
+ - { key: cppflags, name: HASH_DEBUG, value: '-DHASH_DEBUG' }
+ - { key: cppflags, name: ID_TABLE_DEBUG, value: '-DID_TABLE_DEBUG' }
+ - { key: cppflags, name: RGENGC_DEBUG=-1, value: '-DRGENGC_DEBUG=-1' }
+ - { key: cppflags, name: SYMBOL_DEBUG, value: '-DSYMBOL_DEBUG' }
+ - { key: cppflags, name: THREAD_DEBUG=-1, value: '-DTHREAD_DEBUG=-1' }
+
+ - { key: cppflags, name: RGENGC_CHECK_MODE, value: '-DRGENGC_CHECK_MODE' }
+ - { key: cppflags, name: TRANSIENT_HEAP_CHECK_MODE, value: '-DTRANSIENT_HEAP_CHECK_MODE' }
+ - { key: cppflags, name: VM_CHECK_MODE, value: '-DVM_CHECK_MODE' }
+
+ - { key: cppflags, name: USE_EMBED_CI=0, value: '-DUSE_EMBED_CI=0' }
+ - { key: cppflags, name: USE_FLONUM=0, value: '-DUSE_FLONUM=0' }
+# - { key: cppflags, name: USE_GC_MALLOC_OBJ_INFO_DETAILS, value: '-DUSE_GC_MALLOC_OBJ_INFO_DETAILS' }
+ - { key: cppflags, name: USE_LAZY_LOAD, value: '-DUSE_LAZY_LOAD' }
+ - { key: cppflags, name: USE_RINCGC=0, value: '-DUSE_RINCGC=0' }
+ - { key: cppflags, name: USE_SYMBOL_GC=0, value: '-DUSE_SYMBOL_GC=0' }
+ - { key: cppflags, name: USE_THREAD_CACHE=0, value: '-DUSE_THREAD_CACHE=0' }
+ - { key: cppflags, name: USE_TRANSIENT_HEAP=0, value: '-DUSE_TRANSIENT_HEAP=0' }
+
+ - { key: cppflags, name: DEBUG_FIND_TIME_NUMGESS, value: '-DDEBUG_FIND_TIME_NUMGESS' }
+ - { key: cppflags, name: DEBUG_INTEGER_PACK, value: '-DDEBUG_INTEGER_PACK' }
+ - { key: cppflags, name: ENABLE_PATH_CHECK, value: '-DENABLE_PATH_CHECK' }
+
+ - { key: cppflags, name: GC_DEBUG_STRESS_TO_CLASS, value: '-DGC_DEBUG_STRESS_TO_CLASS' }
+ - { key: cppflags, name: GC_ENABLE_LAZY_SWEEP=0, value: '-DGC_ENABLE_LAZY_SWEEP=0' }
+ - { key: cppflags, name: GC_PROFILE_DETAIL_MEMOTY, value: '-DGC_PROFILE_DETAIL_MEMOTY' }
+ - { key: cppflags, name: GC_PROFILE_MORE_DETAIL, value: '-DGC_PROFILE_MORE_DETAIL' }
+
+ - { key: cppflags, name: CALC_EXACT_MALLOC_SIZE, value: '-DCALC_EXACT_MALLOC_SIZE' }
+ - { key: cppflags, name: MALLOC_ALLOCATED_SIZE_CHECK, value: '-DMALLOC_ALLOCATED_SIZE_CHECK' }
+
+ - { key: cppflags, name: IBF_ISEQ_ENABLE_LOCAL_BUFFER, value: '-DIBF_ISEQ_ENABLE_LOCAL_BUFFER' }
+
+ - { key: cppflags, name: RGENGC_ESTIMATE_OLDMALLOC, value: '-DRGENGC_ESTIMATE_OLDMALLOC' }
+ - { key: cppflags, name: RGENGC_FORCE_MAJOR_GC, value: '-DRGENGC_FORCE_MAJOR_GC' }
+ - { key: cppflags, name: RGENGC_OBJ_INFO, value: '-DRGENGC_OBJ_INFO' }
+ - { key: cppflags, name: RGENGC_OLD_NEWOBJ_CHECK, value: '-DRGENGC_OLD_NEWOBJ_CHECK' }
+ - { key: cppflags, name: RGENGC_PROFILE, value: '-DRGENGC_PROFILE' }
+
+ - { key: cppflags, name: VM_DEBUG_BP_CHECK, value: '-DVM_DEBUG_BP_CHECK' }
+ - { key: cppflags, name: VM_DEBUG_VERIFY_METHOD_CACHE, value: '-DVM_DEBUG_VERIFY_METHOD_CACHE' }
+
+ name: ${{ matrix.entry.name }}
+ runs-on: ubuntu-latest
+ container: shyouhei/c-compilers:latest
+ if: "!contains(github.event.head_commit.message, '[ci skip]')"
+ steps:
+ - name: setenv
+ run: |
+ echo ::set-env name=${{ matrix.entry.key }}::${{ matrix.entry.value }}
+ echo ::set-env name=make::make -sj$((1 + $(nproc --all)))
+ - run: mkdir build
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 128
+ path: src
+ - run: autoconf
+ working-directory: src
+ - name: Run configure
+ working-directory: build
+ run: |
+ ../src/configure -C \
+ ${default_configure} \
+ ${append_configure} \
+ --with-gcc="${default_cc} ${append_cc}"
+ - run: $make incs
+ working-directory: build
+ - run: $make
+ working-directory: build
+ - run: $make test
+ working-directory: build
+ - run: $make $UPDATE_UNICODE up
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+ - run: $make install
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+ - run: /usr/local/bin/gem install --no-doc timezone tzinfo
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+ - run: $make test-tool
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+ - run: $make test-all TESTS='-- ruby -ext-'
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+ - run: $make test-spec
+ working-directory: build
+ if: "matrix.entry.name == '-O3'"
+
+ - uses: k0kubun/action-slack@v2.0.0
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ matrix.entry.name }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref }}".split('/').reverse()[0]
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: failure() && github.event_name == 'push'
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml
index 5cccb09d8f..b6704299e5 100644
--- a/.github/workflows/mingw.yml
+++ b/.github/workflows/mingw.yml
@@ -91,7 +91,7 @@ jobs:
make -j $jobs update-gems
- name: make all
- timeout-minutes: 20
+ timeout-minutes: 40
working-directory: build
run: |
$jobs = [int]$env:NUMBER_OF_PROCESSORS + 1
@@ -114,7 +114,7 @@ jobs:
make test
- name: test-all
- timeout-minutes: 25
+ timeout-minutes: 50
working-directory: build
run: |
$env:TMPDIR = "$pwd/../temp"