| # ********************************************************** |
| # Copyright (c) 2020-2024 Google, Inc. All rights reserved. |
| # ********************************************************** |
| |
| # Dr. Memory: the memory debugger |
| # |
| # This library is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; |
| # version 2.1 of the License, and no later version. |
| # |
| # This library is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # Library General Public License for more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with this library; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| |
| # Github Actions workflow for x86 Continuous Integration testing. |
| |
| name: ci-x86 |
| on: |
| # Run on pushes to master and on pull request changes, including from a |
| # forked repo with no "push" trigger, while avoiding duplicate triggers. |
| push: |
| branches: |
| - master |
| pull_request: |
| types: [opened, reopened, synchronize] |
| |
| # Manual trigger using the Actions page. May remove when integration complete. |
| workflow_dispatch: |
| |
| defaults: |
| run: |
| shell: bash |
| |
| jobs: |
| # 64-bit and 32-bit Linux build with gcc and tests: |
| x86: |
| runs-on: ubuntu-22.04 |
| |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| submodules: recursive |
| |
| # Cancel any prior runs for a PR (but do not cancel master branch runs). |
| - uses: n1hility/cancel-previous-runs@v2 |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| if: ${{ github.event_name == 'pull_request' }} |
| |
| # We also need origin/master for pre-commit source file checks in runsuite.cmake. |
| # But fetching multiple branches isn't supported yet: actions/checkout#214 |
| # Pending PR that adds this support actions/checkout#155 |
| # TODO i#4549: When necessary support is available, remove/replace the |
| # workaround here and from every job in other Github Actions CI workflows. |
| - name: Fetch Sources |
| run: git fetch --no-tags --depth=1 origin master |
| |
| # Install multilib for non-cross-compiling Linux build. |
| # GA CI uses packages.microsoft.com which is missing i386 packages, and |
| # attempts at using apt with us.archive-ubuntu.com hit dep issues: |
| # so we manually install the libunwind i386 packages we need. |
| - name: Create Build Environment |
| run: | |
| sudo apt-get update |
| sudo apt-get -y install doxygen jsonlint g++-multilib libunwind-dev \ |
| zlib1g zlib1g-dev |
| sudo add-apt-repository 'deb [arch=i386] http://us.archive.ubuntu.com/ubuntu focal main' |
| apt download libunwind8:i386 libunwind-dev:i386 liblzma5:i386 \ |
| zlib1g:i386 zlib1g-dev:i386 |
| mkdir ../extract |
| for i in *.deb; do dpkg-deb -x $i ../extract; done |
| # find_package(ZLIB) doesn't find /lib32, yet ld.so seems to need lib32, |
| # so we do both: |
| sudo rsync -av ../extract/usr/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/ |
| sudo rsync -av ../extract/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/ |
| sudo rsync -av ../extract/usr/lib/i386-linux-gnu/ /lib32/ |
| sudo rsync -av ../extract/lib/i386-linux-gnu/ /lib32/ |
| sudo rsync -av ../extract/usr/include/i386-linux-gnu/ /usr/include/ |
| rm *.deb |
| |
| # Downgrade from cmake 3.20 to avoid 32-bit toolchain problems (DRi#4830). |
| - name: Downgrade cmake |
| uses: jwlawson/actions-setup-cmake@v2 |
| with: |
| cmake-version: '3.19.7' |
| |
| - name: Run Suite |
| working-directory: ${{ github.workspace }} |
| run: ./tests/runsuite_wrapper.pl travis |