Edit

kc3-lang/libffi/.github/workflows

Branch :

  • Show log

    Commit

  • Author : Anthony Green
    Date : 2022-09-07 07:12:10
    Hash : 08693502
    Message : Set CC and CXX for GCC compile farm builds

  • build.yml
  • name: CI
    
    # Controls when the action will run.
    on:
      # Triggers the workflow on push or pull request events but only for the master branch
      push:
        branches: [ master ]
      pull_request:
        branches: [ master ]
    
      # Allows you to run this workflow manually from the Actions tab
      workflow_dispatch:
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
    
      build-sim:
        name: Build & test
        runs-on: ubuntu-latest
    
        strategy:
          fail-fast: false
          matrix:
           include:
             - MEVAL: "export CC=clang CXX=clang"
             - HOST: "i386-pc-linux-gnu"
               MEVAL: 'export CC="gcc -m32" CXX="g++ -m32"'
             - CONFIGURE_OPTIONS: "--disable-shared"
             - CONFIGURE_OPTIONS: "--enable-shared"
             - HOST: "m68k-linux-gnu"
               MEVAL: 'export CC="m68k-linux-gnu-gcc-8 -mcpu=547x" CXX="m68k-linux-gnu-g++-8 -mcpu=547x"'
               CONFIGURE_OPTIONS: '--disable-shared'
               QEMU_LD_PREFIX: '/usr/m68k-linux-gnu'
               QEMU_CPU: 'cfv4e'
             - HOST: "sh4-linux-gnu"
               CONFIGURE_OPTIONS: "--disable-shared"
               QEMU_LD_PREFIX: "/usr/sh4-linux-gnu"
               QEMU_CPU: 'sh7785'
             - HOST: "alpha-linux-gnu"
               CONFIGURE_OPTIONS: "--disable-shared"
               QEMU_LD_PREFIX: "/usr/alpha-linux-gnu"
               QEMU_CPU: 'ev4-alpha-cpu'
             - HOST: "arm32v7-linux-gnu"
               LIBFFI_TEST_OPTIMIZATION: "-O0"
               QEMU_CPU: 'any'
             - HOST: "arm32v7-linux-gnu"
               LIBFFI_TEST_OPTIMIZATION: "-O2"
               QEMU_CPU: 'any'
             - HOST: "arm32v7-linux-gnu"
               LIBFFI_TEST_OPTIMIZATION: "-O2 -fomit-frame-pointer"
               QEMU_CPU: 'any'
             - HOST: "powerpc-eabisim"
               RUNTESTFLAGS: "--target_board powerpc-eabisim"
             - HOST: "or1k-elf"
               RUNTESTFLAGS: "--target_board or1k-sim"
             - HOST: "m32r-elf"
               RUNTESTFLAGS: "--target_board m32r-sim"
             - HOST: "bfin-elf"
               RUNTESTFLAGS: "--target_board bfin-sim"
             - MEVAL: "export PATH=/opt/moxielogic/bin:$PATH CC=moxie-elf-gcc CXX=moxie-elf-g++"
               HOST: "moxie-elf"
               LDFLAGS: "-Tsim.ld"
               RUNTESTFLAGS: "--target_board moxie-sim"
    
        steps:
          - uses: actions/checkout@v2
    
          - env:
              MEVAL: ${{ matrix.MEVAL }}
              HOST: ${{ matrix.HOST }}
              LDFLAGS: ${{ matrix.LDFLAGS }}
              RUNTESTFLAGS: ${{ matrix.RUNTESTFLAGS }}
              CONFIGURE_OPTIONS: ${{ matrix.CONFIGURE_OPTIONS }}
              QEMU_LD_PREFIX: ${{ matrix.QEMU_LD_PREFIX }}
              QEMU_CPU: ${{ matrix.QEMU_CPU }}
            run: |
              if test x"$MEVAL" != x; then eval ${MEVAL}; fi
              ./.ci/install.sh
              ./.ci/build.sh
    
      build-cfarm:
        name: Build & test on the GCC Compile Farm
        runs-on: ubuntu-latest
    
        strategy:
          fail-fast: false
          matrix:
           include:
             - CFARM_HOST: gcc117.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: aarch64-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc400.fsffrance.org
               CFARM_PORT: 25465
               CFARM_TRIPLE: loongarch64-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc230.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: mips-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc102.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: sparc64-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc102.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: sparc64-linux-gnu
               CFARM_CC: "gcc -m32"
               CFARM_CXX: "g++ -m32"
             - CFARM_HOST: gcc91.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: riscv64-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc103.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: aarch64-m1-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc112.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: powerpc64le-linux-gnu
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
             - CFARM_HOST: gcc111.fsffrance.org
               CFARM_PORT: 22
               CFARM_TRIPLE: powerpc-ibm-aix7.1.5.0
               CFARM_CC: "gcc"
               CFARM_CXX: "g++"
    
        steps:
    
          - uses: actions/checkout@v2
    
          - name: Run autogen
            run: |
              wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 -qO - https://ftpmirror.gnu.org/autoconf/autoconf-2.71.tar.gz | tar -xvzf -
              mkdir -p ~/i
              (cd autoconf-2.71; ./configure --prefix=$HOME/i; make; make install)
              rm -rf autoconf-2.71
              PATH=$HOME/i/bin:$PATH ./autogen.sh
              echo "${{ secrets.CFARM_KEY }}" > /tmp/cfk
              chmod go-rw /tmp/cfk
    
          - name: Generate build dir name
            id: build-dir
            run: |
              echo '::set-output name=BUILD_DIR=t/$GITHUB_RUN_NUMBER-$RANDOM'
    
          - name: Check for host availability
            id: check-host
            run: |
              set +e
              ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -p ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }} "mkdir -p ${{ steps.build-dir.outputs.BUILD_DIR }}"
              if test $? -ne 0; then
                echo "Remote host is unavailable."
                echo '::set-output name=HOST_OK::NO'
              else
                echo "Remote host is available."
                echo '::set-output name=HOST_OK::YES'
              fi
              set -e
    
          - name: Show host availability
            run: |
              echo ${{ steps.check-host.outputs.HOST_OK }}
    
          - name: Copy source to remote host
            if: ${{ steps.check-host.outputs.HOST_OK == 'YES' }}
            run: |
              echo ${{ steps.check-host.outputs.HOST_OK }}
              scp -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -P ${{ matrix.CFARM_PORT }} -r * ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }}:${{ steps.build-dir.outputs.BUILD_DIR }}
    
          - name: Run configure and make
            if: ${{ steps.check-host.outputs.HOST_OK == 'YES' }}
            run: |
              ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -p ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }} "(cd ${{ steps.build-dir.outputs.BUILD_DIR }}; if test -f ~/.profile; then source ~/.profile; fi; CC=${{ matrix.CFARM_CC }} CXX=${{ matrix.CFARM_CXX }} ./configure --host=${{ matrix.CFARM_TRIPLE }}) || true; exit 0"
              ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -p ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }} "(cd ${{ steps.build-dir.outputs.BUILD_DIR }}; if test -f ~/.profile; then source ~/.profile; fi; make;) || true; exit 0"
    
          - name: Run tests
            if: ${{ steps.check-host.outputs.HOST_OK == 'YES' }}
            run: |
              ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -p ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }} "(cd ${{ steps.build-dir.outputs.BUILD_DIR }}; if test -f ~/.profile; then source ~/.profile; fi; make check & CHECKPID=\$!; while kill -0 \$CHECKPID 2>/dev/null; do echo 'Waiting for tests to finish'; sleep 5; done;)"
    
          - name: Copy results and clean up
            if: ${{ steps.check-host.outputs.HOST_OK == 'YES' }}
            run: |
              scp -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -P ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }}:${{ steps.build-dir.outputs.BUILD_DIR }}/*/testsuite/*.log .
              ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=3 -i /tmp/cfk -p ${{ matrix.CFARM_PORT }} ${{ secrets.CFARM_USERNAME }}@${{ matrix.CFARM_HOST }} "rm -rf ${{ steps.build-dir.outputs.BUILD_DIR }}"
    
          - name: Install rlgl and run
            if: ${{ steps.check-host.outputs.HOST_OK == 'YES' }}
            run: |
              wget -qO - https://rl.gl/cli/rlgl-linux-amd64.tgz | \
                   tar --strip-components=2 -xvzf - ./rlgl/rlgl;
              ./rlgl l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
              ./rlgl e --id=${GITHUB_SHA:0:7} --policy=https://github.com/libffi/rlgl-policy.git libffi.log
              exit $?
    
      build:
        name: Build & test with Cygwin
        runs-on: windows-latest
    
        strategy:
          fail-fast: false
          matrix:
            platform: [windows-latest]
    
        steps:
          - run: git config --global core.autocrlf input
    
          - uses: actions/checkout@v2
    
          - name: Set up Cygwin
            uses: egor-tensin/setup-cygwin@v3
            with:
              platform: x64
              packages: wget gcc-core make dejagnu automake autoconf libtool texinfo dos2unix unzip
    
          - run: |
              set -x
              cd $(cygpath $RUNNER_WORKSPACE)/libffi
              wget https://rl.gl/cli/rlgl-windows-amd64.zip
              unzip rlgl-windows-amd64.zip
              autoreconf -f -v -i
              ./configure
              make -j 4
              TERM=none DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci make check || true
              ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
              ./rlgl/rlgl.exe e --id=${GITHUB_SHA:0:7} --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
            shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
    
      build-macos:
        name: Build & test on macOS
        runs-on: ${{ matrix.platform }}
    
        strategy:
          fail-fast: false
          matrix:
            platform: [macos-11, macos-12]
            compilers: [CC=gcc CXX=g++, CC=clang CXX=clang]
    
        steps:
          - run: git config --global core.autocrlf input
          - uses: actions/checkout@v2
          - run: ./.ci/install.sh
          - run: ${{ matrix.compilers }} ./.ci/build.sh
    
      build-msvc:
        name: Build & test with Visual C++
        runs-on: windows-latest
    
        strategy:
          fail-fast: false
          matrix:
            platform: [windows-latest]
    
        steps:
          - run: git config --global core.autocrlf input
          - uses: actions/checkout@v2
          - uses: egor-tensin/setup-cygwin@v3
            with:
              platform: x64
              packages: wget make dejagnu automake autoconf libtool texinfo unzip dos2unix
          - uses: ilammy/msvc-dev-cmd@v1.8.1
          - uses: microsoft/setup-msbuild@v1.0.2
    
          - name: Build and test
            run: |
              # $(cygpath $RUNNER_WORKSPACE)/libffi/.ci/msvs-detect --arch=x64 --with-assembler
              export PATH=$PATH:"/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64"
              cd $(cygpath $RUNNER_WORKSPACE)/libffi
              wget https://rl.gl/cli/rlgl-windows-amd64.zip
              unzip rlgl-windows-amd64.zip
              autoreconf -f -v -i
              ./configure CC="$(pwd)/msvcc.sh -m64" CXX="$(pwd)/msvcc.sh -m64" LD='link' CPP='cl -nologo -EP' CXXCPP='cl -nologo -EP' CPPFLAGS='-DFFI_BUILDING_DLL' AR='$(pwd)/.ci/ar-lib lib' NM='dumpbin -symbols' STRIP=':' --build=$BUILD --host=$HOST $DEBUG_ARG $SHARED_ARG || cat */config.log
              make
              cp $(find . -name 'libffi-?.dll') x86_64-pc-cygwin/testsuite/
              TERM=none DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci make check || true
              ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
              ./rlgl/rlgl.exe e --id=${GITHUB_SHA:0:7} --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
            shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'