diff --git a/.github/workflows/ci-aarchxx-cross.yml b/.github/workflows/ci-aarchxx-cross.yml deleted file mode 100644 index e3a16114d80..00000000000 --- a/.github/workflows/ci-aarchxx-cross.yml +++ /dev/null @@ -1,394 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for AArchXX Continuous Integration testing. - -name: ci-aarchxx-cross -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] - merge_group: - - # Manual trigger using the Actions page. May remove when integration complete. - workflow_dispatch: - -defaults: - run: - shell: bash - -jobs: - # AArch64 cross-compile with gcc, with some tests run under QEMU. - # We use a more recent Ubuntu for a more recent QEMU. - aarch64-cross-compile: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Install cross-compiler for cross-compiling Linux build. - # Unfortunately there are no libunwind or compression cross-compile - # packages so we unpack the native versions and copy their files. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ g++-aarch64-linux-gnu \ - qemu-user qemu-user-binfmt - sudo add-apt-repository 'deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main' - apt download libunwind8:arm64 libunwind-dev:arm64 liblzma5:arm64 \ - zlib1g:arm64 zlib1g-dev:arm64 libsnappy1v5:arm64 libsnappy-dev:arm64 \ - liblz4-1:arm64 liblz4-dev:arm64 - mkdir ../extract - for i in *.deb; do dpkg-deb -x $i ../extract; done - for i in include lib; do sudo rsync -av ../extract/usr/${i}/aarch64-linux-gnu/ /usr/aarch64-linux-gnu/${i}/; done - sudo rsync -av ../extract/usr/include/ /usr/aarch64-linux-gnu/include/ - sudo rsync -av ../extract/lib/aarch64-linux-gnu/ /usr/aarch64-linux-gnu/lib/ - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/aarchxx-cross-compile - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # ARM cross-compile with gcc, with some tests run under QEMU. - # We use a more recent Ubuntu for a more recent QEMU. - arm-cross-compile: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Install cross-compiler for cross-compiling Linux build. - # Unfortunately there are no libunwind or compression cross-compile - # packages so we unpack the native versions and copy their files. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ g++-arm-linux-gnueabihf \ - qemu-user qemu-user-binfmt - sudo add-apt-repository 'deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal main' - apt download libunwind8:armhf libunwind-dev:armhf liblzma5:armhf \ - zlib1g:armhf zlib1g-dev:armhf libsnappy1v5:armhf libsnappy-dev:armhf \ - liblz4-1:armhf liblz4-dev:armhf - mkdir ../extract - for i in *.deb; do dpkg-deb -x $i ../extract; done - for i in include lib; do sudo rsync -av ../extract/usr/${i}/arm-linux-gnueabihf/ /usr/arm-linux-gnueabihf/${i}/; done - sudo rsync -av ../extract/usr/include/ /usr/arm-linux-gnueabihf/include/ - sudo rsync -av ../extract/lib/arm-linux-gnueabihf/ /usr/arm-linux-gnueabihf/lib/ - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 32_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/aarchxx-cross-compile - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # Android ARM cross-compile with gcc, no tests: - android-arm-cross-compile: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Fetch and install Android NDK for Android cross-compile build. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ - cd /tmp - wget https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip - unzip -q android-ndk-r10e-linux-x86_64.zip - export ANDROID_NDK_ROOT=/tmp/android-ndk-r10e - android-ndk-r10e/build/tools/make-standalone-toolchain.sh --arch=arm \ - --toolchain=arm-linux-androideabi-4.9 --platform=android-21 \ - --install-dir=/tmp/android-gcc-arm-ndk-10e - # Manually force using ld.bfd, setting CMAKE_LINKER does not work. - ln -sf ld.bfd /tmp/android-gcc-arm-ndk-10e/arm-linux-androideabi/bin/ld - ln -sf arm-linux-androideabi-ld.bfd \ - /tmp/android-gcc-arm-ndk-10e/bin/arm-linux-androideabi-ld - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: ${{ github.workspace }} - env: - DYNAMORIO_CROSS_ANDROID_ONLY: yes - DYNAMORIO_ANDROID_TOOLCHAIN: /tmp/android-gcc-arm-ndk-10e - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - run: ./suite/runsuite_wrapper.pl automated_ci 32_only - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/android-arm-cross-compile - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # Android AArch64 cross-compile with LLVM, no tests: - android-aarch64-cross-compile: - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Fetch the Android NDK for Android cross-compile build. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ - cd /tmp - wget https://dl.google.com/android/repository/android-ndk-r27c-linux.zip - unzip -q android-ndk-r27c-linux.zip - export ANDROID_NDK_ROOT=/tmp/android-ndk-r27c - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: ${{ github.workspace }} - env: - DYNAMORIO_CROSS_ANDROID_ONLY: yes - DYNAMORIO_ANDROID_NDK: /tmp/android-ndk-r27c - DYNAMORIO_ANDROID_API_LEVEL: 35 - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/android-aarch64-cross-compile - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # AArch64 drdecode and drmemtrace on x86: - a64-on-x86: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci - env: - DYNAMORIO_A64_ON_X86_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/a64-on-x86 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI diff --git a/.github/workflows/ci-aarchxx.yml b/.github/workflows/ci-aarchxx.yml deleted file mode 100644 index e7d9b60a5fa..00000000000 --- a/.github/workflows/ci-aarchxx.yml +++ /dev/null @@ -1,153 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# Copyright (c) 2023 Arm Limited All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for aarch64 Continuous Integration testing. - -name: ci-aarchxx -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] - merge_group: - - workflow_dispatch: - -jobs: - aarch64-precommit: - strategy: - fail-fast: false - matrix: - # This job will run in parallel. - include: - - os: ah-ubuntu_20_04-c6g_4x-50 - sve: false - - os: ah-ubuntu_20_04-c7g_4x-50 - sve: true - sve_length: 256 - - os: ah-ubuntu_20_04-c7g_4x-50 - sve: true - sve_length: 128 - runs-on: ${{ matrix.os }} - name: aarch64-${{matrix.sve && 'sve-' || ''}}precommit${{matrix.sve_length && '-' || ''}}${{matrix.sve_length}} - steps: - - name: Check out repository code - uses: actions/checkout@v4 - with: - submodules: true - - # Cancel any prior runs for a PR (but do not cancel master branch runs). - - name: Cancel previous 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 master - run: git fetch --no-tags --depth=1 origin master - - - name: Create build directory - run: mkdir build - - - name: Create build environment - run: | - sudo apt-get update && \ - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - build-essential \ - doxygen \ - git \ - libunwind-dev \ - libc6-dev \ - openssh-client \ - openssl \ - python3 \ - vera++ \ - zlib1g-dev - - - name: Set ptrace_scope to 0 - run: | - echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - - - name: Check current ptrace_scope - run: | - cat /proc/sys/kernel/yama/ptrace_scope - if [[ `cat /proc/sys/kernel/yama/ptrace_scope` != "0" ]]; then echo "WARNING: ptrace_scope NOT SET TO 0"; fi - - - name: Setup cmake - uses: lukka/get-cmake@latest - with: - cmakeVersion: '3.26.4' - - - name: Run Suite - working-directory: build - run: ../suite/runsuite_wrapper.pl travis - env: - CI_BRANCH: ${{ github.ref }} - if: ${{ matrix.sve == false || matrix.sve_length == '' }} - - - name: Run Suite with sve vector length ${{ matrix.sve_length }} - working-directory: build - run: ../tools/run_with_vector_length.py ${{ matrix.sve_length }} ../suite/runsuite_wrapper.pl travis - env: - CI_BRANCH: ${{ github.ref }} - if: ${{ matrix.sve == true && matrix.sve_length != ''}} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-32 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI diff --git a/.github/workflows/ci-clang-format.yml b/.github/workflows/ci-clang-format.yml deleted file mode 100644 index be618af9093..00000000000 --- a/.github/workflows/ci-clang-format.yml +++ /dev/null @@ -1,112 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for clang-format Continuous Integration testing. - -name: ci-clang-format -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] - merge_group: - - # Manual trigger using the Actions page. May remove when integration complete. - workflow_dispatch: - -defaults: - run: - shell: bash - -jobs: - # 64-bit Linux build with clang, no tests (runsuite.cmake disables the tests), - # install and require clang-format. - # We used to build 32-bit with clang but have decided that is not worth - # the CI resources: 64-bit hits most clang-only warnings and 64-bit - # is the primary target these days. - clang-format: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - - name: Create Build Environment - run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' - sudo apt update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev clang-format-14 libunwind-dev - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only require_format - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - DYNAMORIO_CLANG: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/clang-format - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml deleted file mode 100644 index 488864626f6..00000000000 --- a/.github/workflows/ci-docs.yml +++ /dev/null @@ -1,155 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for building doxygen docs for the web site. - -name: ci-docs -on: - # Built weekly: 10pm EST Fridays. A re-build even with no content - # changes updates timestamps on every page, increasing the repo size. - # We thus use manual builds for rare docs changes we want to deploy to - # the website and have automated builds match our weekly package builds. - schedule: - - cron: '0 3 * * FRI' - # Manual trigger using the Actions page. - workflow_dispatch: - inputs: - version: - description: 'Version number for docs (blank for cronbuild)' - required: false - default: '' - build: - description: 'Build number for docs' - required: true - default: '0' - -defaults: - run: - shell: bash - -jobs: - ########################################################################### - # Docs deployment, building on Linux. - docs: - # We use a more recent Ubuntu for better markdown support. - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - # We do shallow clones and assume DrM will update its DR at least once - # every 250 DR commits. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # Install needed packages. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ cmake zlib1g-dev libsnappy-dev \ - liblz4-dev libunwind-dev - - - name: Get Version - id: version - # XXX: For now we duplicate this version number here with CMakeLists.txt. - # We should find a way to share (xref i#1565). - # We support setting the version and build for manual builds. - # We only use a non-zero build # when making multiple manual builds in one day. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Docs - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - DEPLOY_DOCS: yes - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Check Out Web - uses: actions/checkout@v4 - with: - repository: DynamoRIO/dynamorio.github.io - token: ${{ secrets.DOCS_TOKEN }} - path: dynamorio.github.io - - - name: Deploy Embedded Docs - run: | - rsync -av --delete html_embed/ dynamorio.github.io/docs/ - cd dynamorio.github.io - git config --local user.name "cronbuild" - git config --local user.email "dynamorio-devs@googlegroups.com" - git add -A - git commit -m "Snapshot for cronbuild-${{ steps.version.outputs.version_number }}" - git push - env: - # We need a personal access token for write access to another repo. - GITHUB_TOKEN: ${{ secrets.DOCS_TOKEN }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/docs - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs diff --git a/.github/workflows/ci-package.yml b/.github/workflows/ci-package.yml deleted file mode 100644 index 43a6b7bf788..00000000000 --- a/.github/workflows/ci-package.yml +++ /dev/null @@ -1,671 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for release packages. - -name: ci-package -on: - # Our weekly cronbuild: 9pm EST on Fridays. - schedule: - - cron: '0 2 * * SAT' - # Manual trigger using the Actions page. - workflow_dispatch: - inputs: - version: - description: 'Package version number (blank for cronbuild)' - required: false - default: '' - build: - description: 'Package build number' - required: true - default: '0' - -defaults: - run: - shell: bash - -jobs: - ########################################################################### - # Linux x86 tarball with 64-bit and 32-bit builds: - linux-x86: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - # We do shallow clones and assume DrM will update its DR at least once - # every 250 DR commits. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # 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 i386 packages we need. - - name: Create Build Environment - run: | - sudo apt update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev g++-multilib libunwind-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 - 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/include/i386-linux-gnu/ /usr/include/ - - # Use a newer cmake to avoid 32-bit toolchain problems (i#4830). - - name: Setup newer cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.19.7' - - - name: Get Version - id: version - # XXX: For now we duplicate this version number here with CMakeLists.txt. - # We should find a way to share (xref i#1565). - # We support setting the version and build for manual builds. - # We only use a non-zero build # when making multiple manual builds in one day. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Package - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - # We do not update the web documentation here because a newer - # Doxygen is needed but we have not yet tested our tests and - # packages built on newer Ubuntu on GA CI. - DEPLOY_DOCS: no - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Upload Artifacts - # This points to the latest upload-artifact v4.x.x. - uses: actions/upload-artifact@v4 - with: - name: linux-tarball - path: DynamoRIO-Linux-${{ steps.version.outputs.version_number }}.tar.gz - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/linux-x86 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs - - ########################################################################### - # Linux AArch64 tarball: - linux-aarch64: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # Install cross-compiler for cross-compiling Linux build. - # Unfortunately there are no libunwind or compression cross-compile - # packages so we unpack the native versions and copy their files. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ cmake g++-aarch64-linux-gnu - sudo add-apt-repository 'deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main' - apt download libunwind8:arm64 libunwind-dev:arm64 liblzma5:arm64 \ - zlib1g:arm64 zlib1g-dev:arm64 libsnappy1v5:arm64 libsnappy-dev:arm64 \ - liblz4-1:arm64 liblz4-dev:arm64 - mkdir ../extract - for i in *.deb; do dpkg-deb -x $i ../extract; done - for i in include lib; do sudo rsync -av ../extract/usr/${i}/aarch64-linux-gnu/ /usr/aarch64-linux-gnu/${i}/; done - sudo rsync -av ../extract/usr/include/ /usr/aarch64-linux-gnu/include/ - sudo rsync -av ../extract/lib/aarch64-linux-gnu/ /usr/aarch64-linux-gnu/lib/ - - - name: Get Version - id: version - # XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Package - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Upload AArch64 - # This points to the latest upload-artifact v4.x.x. - uses: actions/upload-artifact@v4 - with: - name: aarch64-tarball - path: DynamoRIO-AArch64-Linux-${{ steps.version.outputs.version_number }}.tar.gz - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/linux-aarch64 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs - - ########################################################################### - # Linux ARM tarball (package.cmake does not support same job as AArch64): - linux-arm: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # Install cross-compiler for cross-compiling Linux build. - # Unfortunately there are no libunwind or compression cross-compile - # packages so we unpack the native versions and copy their files. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ cmake g++-arm-linux-gnueabihf - sudo add-apt-repository 'deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal main' - apt download libunwind8:armhf libunwind-dev:armhf liblzma5:armhf \ - zlib1g:armhf zlib1g-dev:armhf libsnappy1v5:armhf libsnappy-dev:armhf \ - liblz4-1:armhf liblz4-dev:armhf - mkdir ../extract - for i in *.deb; do dpkg-deb -x $i ../extract; done - for i in include lib; do sudo rsync -av ../extract/usr/${i}/arm-linux-gnueabihf/ /usr/arm-linux-gnueabihf/${i}/; done - sudo rsync -av ../extract/usr/include/ /usr/arm-linux-gnueabihf/include/ - sudo rsync -av ../extract/lib/arm-linux-gnueabihf/ /usr/arm-linux-gnueabihf/lib/ - - - name: Get Version - id: version - # XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Package - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 32_only - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Upload ARM - # This points to the latest upload-artifact v4.x.x. - uses: actions/upload-artifact@v4 - with: - name: arm-tarball - path: DynamoRIO-ARM-Linux-EABIHF-${{ steps.version.outputs.version_number }}.tar.gz - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/linux-arm - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs - - ########################################################################### - # Android ARM tarball: - android-arm: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # Fetch and install Android NDK for Andoid cross-compile build. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ cmake - cd /tmp - wget https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip - unzip -q android-ndk-r10e-linux-x86_64.zip - export ANDROID_NDK_ROOT=/tmp/android-ndk-r10e - android-ndk-r10e/build/tools/make-standalone-toolchain.sh --arch=arm \ - --toolchain=arm-linux-androideabi-4.9 --platform=android-21 \ - --install-dir=/tmp/android-gcc-arm-ndk-10e - # Manually force using ld.bfd, setting CMAKE_LINKER does not work. - ln -sf ld.bfd /tmp/android-gcc-arm-ndk-10e/arm-linux-androideabi/bin/ld - ln -sf arm-linux-androideabi-ld.bfd \ - /tmp/android-gcc-arm-ndk-10e/bin/arm-linux-androideabi-ld - - - name: Get Version - id: version - # XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Package - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 32_only - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - DYNAMORIO_CROSS_ANDROID_ONLY: yes - DYNAMORIO_ANDROID_TOOLCHAIN: /tmp/android-gcc-arm-ndk-10e - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Upload Artifacts - # This points to the latest upload-artifact v4.x.x. - uses: actions/upload-artifact@v4 - with: - name: android-tarball - path: DynamoRIO-ARM-Android-EABI-${{ steps.version.outputs.version_number }}.tar.gz - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/android-arm - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs - - ########################################################################### - # Windows .zip with 32-bit and 64-bit x86 builds: - windows: - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Fetch Sources - run: | - git fetch --no-tags --depth=1 origin master - # Include Dr. Memory in packages. - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory && git submodule update --init --recursive --depth 250 && cd .. - - # Install Doxygen. - - uses: ssciwr/doxygen-install@v1 - - - name: Download Packages - shell: powershell - run: | - md c:\projects\install - (New-Object System.Net.WebClient).DownloadFile("https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip", "c:\projects\install\ninja.zip") - - - name: Get Version - id: version - # XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER=11.90.$((`git log -n 1 --format=%ct` / (60*60*24))) - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - - - name: Build Package - working-directory: ${{ github.workspace }} - shell: cmd - # We need to set up WiX for Dr. Memory. - run: | - echo ------ Setting up paths ------ - 7z x c:\projects\install\ninja.zip -oc:\projects\install\ninja > nul - set PATH=c:\projects\install\ninja;%PATH% - dir "c:\Program Files (x86)\WiX Toolset"* - set PATH=C:\Program Files (x86)\WiX Toolset v3.14\bin;%PATH% - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars32.bat" - echo ------ Running suite ------ - echo PATH is "%PATH%" - echo Running in directory "%CD%" - perl suite/runsuite_wrapper.pl automated_ci use_ninja - env: - CI_TARGET: package - VERSION_NUMBER: ${{ steps.version.outputs.version_number }} - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Upload Artifacts - # This points to the latest upload-artifact v4.x.x. - uses: actions/upload-artifact@v4 - with: - name: windows-zip - path: DynamoRIO-Windows-${{ steps.version.outputs.version_number }}.zip - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/windows - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs - - ########################################################################### - # Create release and populate with files. - # We can't have each OS job create the release because only the first - # succeeds and the others fail: there is no check in the create-release - # action to use an existing release if it already exists. - # Thus, our strategy is to share files from the build jobs with this - # single release job via artifacts. - - create_release: - needs: [linux-x86, linux-aarch64, linux-arm, android-arm, windows] - runs-on: ubuntu-20.04 - - steps: - # We need a checkout to run git log for the version. - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Get Version - id: version - # XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt. - run: | - if test -z "${{ github.event.inputs.version }}"; then - export VERSION_NUMBER="11.90.$((`git log -n 1 --format=%ct` / (60*60*24)))" - export PREFIX="cronbuild-" - else - export VERSION_NUMBER=${{ github.event.inputs.version }} - export PREFIX="release_" - fi - if [ "${{ github.event.inputs.build }}" -ne 0 ]; then - export VERSION_NUMBER="${VERSION_NUMBER}-${{ github.event.inputs.build }}" - fi - echo "::set-output name=version_number::${VERSION_NUMBER}" - echo "::set-output name=version_string::${PREFIX}${VERSION_NUMBER}" - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.version.outputs.version_string }} - release_name: ${{ steps.version.outputs.version_string }} - body: | - Auto-generated periodic build. - draft: false - prerelease: false - - - name: Download Linux - # This points to the latest download-artifact v4.x.x. - uses: actions/download-artifact@v4 - with: - name: linux-tarball - - name: Upload Linux - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - # This action doesn't seem to support a glob so we need the exact name. - asset_path: DynamoRIO-Linux-${{ steps.version.outputs.version_number }}.tar.gz - asset_name: DynamoRIO-Linux-${{ steps.version.outputs.version_number }}.tar.gz - asset_content_type: application/x-gzip - - - name: Download AArch64 - # This points to the latest download-artifact v4.x.x. - uses: actions/download-artifact@v4 - with: - name: aarch64-tarball - - name: Upload AArch64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - # This action doesn't seem to support a glob so we need the exact name. - asset_path: DynamoRIO-AArch64-Linux-${{ steps.version.outputs.version_number }}.tar.gz - asset_name: DynamoRIO-AArch64-Linux-${{ steps.version.outputs.version_number }}.tar.gz - asset_content_type: application/x-gzip - - - name: Download ARM - # This points to the latest download-artifact v4.x.x. - uses: actions/download-artifact@v4 - with: - name: arm-tarball - - name: Upload ARM - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - # This action doesn't seem to support a glob so we need the exact name. - asset_path: DynamoRIO-ARM-Linux-EABIHF-${{ steps.version.outputs.version_number }}.tar.gz - asset_name: DynamoRIO-ARM-Linux-EABIHF-${{ steps.version.outputs.version_number }}.tar.gz - asset_content_type: application/x-gzip - - - name: Download Android - # This points to the latest download-artifact v4.x.x. - uses: actions/download-artifact@v4 - with: - name: android-tarball - - name: Upload Android - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - # This action doesn't seem to support a glob so we need the exact name. - asset_path: DynamoRIO-ARM-Android-EABI-${{ steps.version.outputs.version_number }}.tar.gz - asset_name: DynamoRIO-ARM-Android-EABI-${{ steps.version.outputs.version_number }}.tar.gz - asset_content_type: application/x-gzip - - - name: Download Windows - # This points to the latest download-artifact v4.x.x. - uses: actions/download-artifact@v4 - with: - name: windows-zip - - name: Upload Windows - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - # This action doesn't seem to support a glob so we need the exact name. - asset_path: DynamoRIO-Windows-${{ steps.version.outputs.version_number }}.zip - asset_name: DynamoRIO-Windows-${{ steps.version.outputs.version_number }}.zip - asset_content_type: application/zip - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/create_release - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action package jobs diff --git a/.github/workflows/ci-riscv64.yml b/.github/workflows/ci-riscv64.yml deleted file mode 100644 index e5378b0a6a6..00000000000 --- a/.github/workflows/ci-riscv64.yml +++ /dev/null @@ -1,126 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for RISCV64 Continuous Integration testing. - -name: ci-riscv64 -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] - merge_group: - - # Manual trigger using the Actions page. May remove when integration complete. - workflow_dispatch: - -defaults: - run: - shell: bash - -jobs: - # RISCV64 cross-compile with gcc - # We use ubuntu 24.04 because the compilition here need libunwind-riscv64 and - # it's a stable source. - riscv64-cross-compile: - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Install cross-compiler for cross-compiling Linux build. - # Unfortunately there are no libunwind or compression cross-compile - # packages so we unpack the native versions and copy their files. - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install doxygen vera++ cmake crossbuild-essential-riscv64 git \ - qemu-user qemu-user-binfmt - # We cannot use the following command here, because it will download the - # x86_64 binaries due to some known issue of DEB822. - # sudo add-apt-repository 'deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports noble main' - echo 'deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports noble main' | sudo tee -a /etc/apt/sources.list - sudo apt-get update - apt download libunwind8:riscv64 libunwind-dev:riscv64 liblzma5:riscv64 \ - zlib1g:riscv64 zlib1g-dev:riscv64 libsnappy1v5:riscv64 libsnappy-dev:riscv64 \ - liblz4-1:riscv64 liblz4-dev:riscv64 - mkdir ../extract - for i in *.deb; do dpkg-deb -x $i ../extract; done - for i in include lib; do sudo rsync -av ../extract/usr/${i}/riscv64-linux-gnu/ /usr/riscv64-linux-gnu/${i}/; done - sudo rsync -av ../extract/usr/include/ /usr/riscv64-linux-gnu/include/ - if test -e "../extract/lib/riscv64-linux-gnu/"; then \ - sudo rsync -av ../extract/lib/riscv64-linux-gnu/ /usr/riscv64-linux-gnu/lib/; \ - fi - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - DYNAMORIO_CROSS_RISCV64_LINUX_ONLY: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - QEMU_LD_PREFIX: /usr/riscv64-linux-gnu/ - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/aarchxx-cross-compile - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml deleted file mode 100644 index 1cd4f0a306b..00000000000 --- a/.github/workflows/ci-windows.yml +++ /dev/null @@ -1,253 +0,0 @@ -# ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# Github Actions workflow for Windows Continuous Integration testing. - -# TODO i#2145: point at Qt5 for testing drgui build. - -name: ci-windows -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] - merge_group: - - # Manual trigger using the Actions page. May remove when integration complete. - workflow_dispatch: - -defaults: - run: - shell: cmd - -jobs: - ########################################################################### - # 32-bit VS2019 and tests: - vs2019-32: - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - name: Fetch Sources - run: git fetch --no-tags --depth=1 origin master - - # Install Doxygen. - - uses: ssciwr/doxygen-install@v1 - - - name: Download Packages - shell: powershell - run: | - md c:\projects\install - (New-Object System.Net.WebClient).DownloadFile("https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip", "c:\projects\install\ninja.zip") - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: | - echo ------ Setting up paths ------ - 7z x c:\projects\install\ninja.zip -oc:\projects\install\ninja > nul - set PATH=c:\projects\install\ninja;%PATH% - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars32.bat" - echo ------ Running suite ------ - echo PATH is "%PATH%" - echo Running in directory "%CD%" - perl suite/runsuite_wrapper.pl automated_ci use_ninja 32_only debug_only - env: - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/vs2019-32 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - ########################################################################### - # 64-bit VS2019 and tests: - vs2019-64: - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - name: Fetch Sources - run: git fetch --no-tags --depth=1 origin master - - # Install Doxygen. - - uses: ssciwr/doxygen-install@v1 - - - name: Download Packages - shell: powershell - run: | - md c:\projects\install - (New-Object System.Net.WebClient).DownloadFile("https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip", "c:\projects\install\ninja.zip") - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: | - echo ------ Setting up paths ------ - 7z x c:\projects\install\ninja.zip -oc:\projects\install\ninja > nul - set PATH=c:\projects\install\ninja;%PATH% - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars32.bat" - echo ------ Running suite ------ - echo PATH is "%PATH%" - echo Running in directory "%CD%" - perl suite/runsuite_wrapper.pl automated_ci use_ninja 64_only debug_only - env: - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/vs2019-64 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - ########################################################################### - # 32-bit and 64-bit VS2019 release builds: - vs2019-builds: - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - name: Fetch Sources - run: git fetch --no-tags --depth=1 origin master - - # Install Doxygen. - - uses: ssciwr/doxygen-install@v1 - - - name: Download Packages - shell: powershell - run: | - md c:\projects\install - (New-Object System.Net.WebClient).DownloadFile("https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip", "c:\projects\install\ninja.zip") - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: | - echo ------ Setting up paths ------ - 7z x c:\projects\install\ninja.zip -oc:\projects\install\ninja > nul - set PATH=c:\projects\install\ninja;%PATH% - call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars32.bat" - echo ------ Running suite ------ - echo PATH is "%PATH%" - echo Running in directory "%CD%" - perl suite/runsuite_wrapper.pl automated_ci use_ninja nontest_only - env: - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/vs2019-builds - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI diff --git a/.github/workflows/ci-x86.yml b/.github/workflows/ci-x86.yml index 9e15d9ea95d..4a583043fbd 100644 --- a/.github/workflows/ci-x86.yml +++ b/.github/workflows/ci-x86.yml @@ -56,6 +56,7 @@ defaults: jobs: # 32-bit Linux build with gcc and run tests: x86-32: + name: 'x86-32' runs-on: ubuntu-20.04 # When checking out the repository that triggered a workflow, actions/checkout @@ -85,6 +86,7 @@ jobs: # so we manually install the i386 packages we need. - name: Create Build Environment run: | + exit 1 sudo apt update sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ liblz4-dev g++-multilib libunwind-dev @@ -112,30 +114,6 @@ jobs: CI_TRIGGER: ${{ github.event_name }} CI_BRANCH: ${{ github.ref }} - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-32 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - # 64-bit Linux build with gcc and run tests. x86-64: runs-on: ubuntu-20.04 @@ -155,262 +133,17 @@ jobs: # Install multilib for non-cross-compiling Linux build. - name: Create Build Environment run: | - sudo apt update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev g++-multilib libunwind-dev - echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - - # Use a newer cmake to avoid 32-bit toolchain problems (i#4830). - - name: Setup newer cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.19.7' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-64 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # Ubuntu22 64-bit Linux build with gcc and run tests. - # XXX: A matrix could combine this with the 20.04 but our auto-cancel - # step cancels the 2nd job so we need to solve that first. - x86-64-ubuntu22: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Install multilib for non-cross-compiling Linux build. - - name: Create Build Environment - run: | - sudo apt update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev g++-multilib libunwind-dev - echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - - # Use a newer cmake to avoid 32-bit toolchain problems (i#4830). - - name: Setup newer cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.19.7' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-64-ubuntu22 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # Ubuntu22 64-bit Linux build with gcc and run tests. - # XXX: A matrix could combine this with the 20.04 but our auto-cancel - # step cancels the 2nd job so we need to solve that first. - x86-32-ubuntu22: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - # Install multilib for non-cross-compiling Linux build. - - name: Create Build Environment - run: | - sudo apt update - sudo apt-get -y install doxygen vera++ zlib1g-dev libsnappy-dev \ - liblz4-dev g++-multilib libunwind-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 - 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/include/i386-linux-gnu/ /usr/include/ - echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - - # Use a newer cmake to avoid 32-bit toolchain problems (i#4830). - - name: Setup newer cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.19.7' - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 32_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-32-ubuntu22 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI - - # 64-bit Linux build with gcc and musl. - # TODO i#1973: Fix failing cases and enable tests in CI. - x86-64-alpine-3_21: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - with: - submodules: true - path: ${{ github.workspace }}/DynamoRIO - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - working-directory: ${{ github.workspace }}/DynamoRIO - - # Create an Alpine Linux 3.21.2 chroot environment for building - - name: Create Build Environment - run: | - curl -L https://dl-cdn.alpinelinux.org/v3.21/main/x86_64/apk-tools-static-2.14.6-r2.apk | \ - tar xzv sbin/apk.static - - sudo mkdir -p alpine-root/etc/apk - echo "https://dl-cdn.alpinelinux.org/v3.21/main/" | \ - sudo tee alpine-root/etc/apk/repositories - # Meta-package build-base simplifies dependencies, but it pulls in - # fortify-headers. Alpine ships an out-of-date version whose headers - # contain unnecessary includes, causing naming conflicts. - # TODO i#1973: simplify dependency with build-base after fixing - # the compatibility problem. - # Supply --allow-untrusted since we're creating a rootfs from scratch - # thus don't have any public key available. - sudo sbin/apk.static -p alpine-root -U --initdb --allow-untrusted add \ - alpine-base binutils bash cmake doxygen file g++ git libunwind-dev \ - lz4-dev lz4-static linux-headers make musl-dev musl-libintl perl \ - patch xz-dev zlib-dev zlib-static - - cd alpine-root - sudo mount -o bind /dev/ dev - sudo mount -t proc proc proc - sudo mount -t sysfs sys sys - sudo mount -o bind ${{ github.workspace }}/DynamoRIO root - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: | - sudo --preserve-env=CI_TRIGGER,CI_BRANCH,DYNAMORIO_MUSL \ - chroot alpine-root sh -c 'cd && - ./suite/runsuite_wrapper.pl automated_ci 64_only' - env: - DYNAMORIO_MUSL: yes - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' - uses: dawidd6/action-send-mail@v2 - with: - server_address: smtp.gmail.com - server_port: 465 - username: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_USERNAME}} - password: ${{secrets.DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD}} - subject: | - [${{github.repository}}] ${{github.workflow}} FAILED - on ${{github.event_name}} at ${{github.ref}} - body: | - Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/x86-32-ubuntu22 - Repository: ${{github.repository}} - Branch ref: ${{github.ref}} - SHA: ${{github.sha}} - Triggering actor: ${{github.actor}} - Triggering event: ${{github.event_name}} - Run Id: ${{github.run_id}} - See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com - from: Github Action CI + exit 0 + + send-failure-notification: + uses: ./.github/workflows/failure-notification.yml + needs: [x86-32, x86-64_err] + # We need this to ensure this job runs even if there is failure in + # any of the workflows marked as needed. + if: ${{ always() }} + with: + test_suite_status: ${{ format('{0} {1} | {2} {3}', + 'x86-32', needs.x86-32.result, + 'x86-64', needs.x86-64.result) }} + test_suite_results_only: ${{ join(needs.*.result, ',') }} + secrets: inherit diff --git a/.github/workflows/ci-osx.yml b/.github/workflows/failure-notification.yml similarity index 55% rename from .github/workflows/ci-osx.yml rename to .github/workflows/failure-notification.yml index 26f5a9082b2..bc7670e9950 100644 --- a/.github/workflows/ci-osx.yml +++ b/.github/workflows/failure-notification.yml @@ -1,5 +1,5 @@ # ********************************************************** -# Copyright (c) 2020-2025 Google, Inc. All rights reserved. +# Copyright (c) 2025 Google, Inc. All rights reserved. # ********************************************************** # Redistribution and use in source and binary forms, with or without @@ -28,66 +28,34 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH # DAMAGE. -# Github Actions workflow for Mac OSX Continuous Integration testing. +# Github Actions workflow to send out failure notification emails. +# This is a reusable workflow that is called by various ci workflows. -name: ci-osx +name: send-failure-notification 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] - merge_group: - - # Manual trigger using the Actions page. May remove when integration complete. - workflow_dispatch: - -defaults: - run: - shell: bash + workflow_call: + inputs: + test_suite_status: + required: true + type: string + # We ask for the results only string separately so we can do a + # substring match to check for failure. + test_suite_results_only: + required: true + type: string + secrets: + DYNAMORIO_NOTIFICATION_EMAIL_USERNAME: + required: true + DYNAMORIO_NOTIFICATION_EMAIL_PASSWORD: + required: true jobs: - # 64-bit OSX build with clang and run tests: - osx-x86-64: - runs-on: macos-13 - + send-failure-notification-job: + runs-on: ubuntu-latest + # Add && github.ref == 'refs/heads/master' + if: ${{ contains(inputs.test_suite_results_only, 'failure') }} steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # 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' }} - - - run: git fetch --no-tags --depth=1 origin master - - - name: Create Build Environment - # XXX: We should install doxygen too but it's a different version and - # hits issues about incompatible options in the Doxyfile. - run: | - brew install nasm zlib snappy lz4 - - - name: Run Suite - working-directory: ${{ github.workspace }} - run: ./suite/runsuite_wrapper.pl automated_ci 64_only - env: - DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY: no - # Change xcode version for current session: - # https://www.unix.com/man-page/osx/1/xcode-select/ - # https://github.community/t/selecting-an-xcode-version/16204/3 - # To find available versions, add the following as a step above: - # - run: ls -l /Applications - DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer - CI_TRIGGER: ${{ github.event_name }} - CI_BRANCH: ${{ github.ref }} - - name: Send failure mail to dynamorio-devs - if: failure() && github.ref == 'refs/heads/master' uses: dawidd6/action-send-mail@v2 with: server_address: smtp.gmail.com @@ -99,7 +67,8 @@ jobs: on ${{github.event_name}} at ${{github.ref}} body: | Github Actions CI workflow run FAILED! - Workflow: ${{github.workflow}}/osx-x86-64 + Workflow: ${{github.workflow}} + All test status: ${{ inputs.test_suite_status }} Repository: ${{github.repository}} Branch ref: ${{github.ref}} SHA: ${{github.sha}} @@ -107,5 +76,6 @@ jobs: Triggering event: ${{github.event_name}} Run Id: ${{github.run_id}} See more details on github.com/DynamoRIO/dynamorio/actions/runs/${{github.run_id}} - to: dynamorio-devs@googlegroups.com + to: sharmaabhinav@google.com + # to: dynamorio-devs@googlegroups.com from: Github Action CI