From 0918bdf4fa45a0d83c36d52fbe89a825561b7055 Mon Sep 17 00:00:00 2001 From: Ofek Shaked Date: Thu, 5 Sep 2024 13:30:36 +0300 Subject: [PATCH] Add build for Linux ARM64 --- .../install-wireshark-headers-unix/action.yml | 2 +- .github/workflows/pr.yml | 20 ++++++++++---- .github/workflows/release.yml | 26 ++++++++++++++----- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/.github/actions/install-wireshark-headers-unix/action.yml b/.github/actions/install-wireshark-headers-unix/action.yml index 61fb36e..35ee2c1 100644 --- a/.github/actions/install-wireshark-headers-unix/action.yml +++ b/.github/actions/install-wireshark-headers-unix/action.yml @@ -5,7 +5,7 @@ runs: - name: Configure Wireshark run: | mkdir wireshark/build - cmake -G Ninja -B wireshark/build -S wireshark -DENABLE_CCACHE=Yes -DENABLE_WERROR=ON -DDISABLE_WERROR=OFF + cmake -G Ninja -B wireshark/build -S wireshark -DPython3_EXECUTABLE=$(which python3.11) -DENABLE_CCACHE=Yes -DENABLE_WERROR=ON -DDISABLE_WERROR=OFF || grep -i python wireshark/build/CMakeCache.txt shell: bash - name: Install headers id: install_headers diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index bb09f59..021c5f1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,15 +10,19 @@ jobs: strategy: matrix: # macos-14 is ARM64, macos-13 is x86-64 - os: [ubuntu-latest, macos-14, macos-13, windows-latest] + os: [ubuntu-latest, macos-14, macos-13, windows-latest, ubuntu_arm64] wireshark_version: [wireshark-4.2.6, wireshark-4.4.0] include: # Ubuntu 22.04 Wireshark package version - os: ubuntu-latest wireshark_version: wireshark-3.6.2 + - os: ubuntu_arm64 + wireshark_version: wireshark-3.6.2 # Ubuntu 24.04 Wireshark package version - os: ubuntu-latest wireshark_version: wireshark-4.2.2 + - os: ubuntu_arm64 + wireshark_version: wireshark-4.2.2 steps: - name: Disable auto CRLF (Windows) @@ -33,8 +37,14 @@ jobs: - name: Clone Wireshark run: git clone --depth 1 --branch ${{ matrix.wireshark_version }} https://github.com/wireshark/wireshark + - name: Install older Python (Ubuntu) + if: matrix.os == 'ubuntu_arm64' || matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + uses: actions/setup-python@v5 + with: + python-version: '3.11' # 3.12 introduced changes that break builds of older Wireshark versions + - name: Install dependencies (Ubuntu) - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' run: | sudo apt update sudo apt install -y ninja-build ccache @@ -60,7 +70,7 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Install Wireshark headers (Unix) - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13' uses: ./.github/actions/install-wireshark-headers-unix - name: Install Wireshark headers (Windows) @@ -68,7 +78,7 @@ jobs: uses: ./.github/actions/install-wireshark-headers-windows - name: Build Traceeshark (Unix) - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13' run: | WERROR=y make cmake make @@ -84,7 +94,7 @@ jobs: shell: cmd - name: Load Plugins Test (Unix) - if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13') + if: (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13') run: | make install .github/load_plugins.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0f3cb24..b53f533 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,15 +35,19 @@ jobs: strategy: matrix: # macos-14 is ARM64, macos-13 is x86-64 - os: [ubuntu-latest, macos-14, macos-13, windows-latest] + os: [ubuntu-latest, macos-14, macos-13, windows-latest, ubuntu_arm64] wireshark_version: [wireshark-4.2.6, wireshark-4.4.0] include: # Ubuntu 22.04 Wireshark package version - os: ubuntu-latest wireshark_version: wireshark-3.6.2 + - os: ubuntu_arm64 + wireshark_version: wireshark-3.6.2 # Ubuntu 24.04 Wireshark package version - os: ubuntu-latest wireshark_version: wireshark-4.2.2 + - os: ubuntu_arm64 + wireshark_version: wireshark-4.2.2 steps: - name: Disable auto CRLF (Windows) @@ -58,12 +62,22 @@ jobs: - name: Clone Wireshark run: git clone --depth 1 --branch ${{ matrix.wireshark_version }} https://github.com/wireshark/wireshark + - name: Install older Python (Ubuntu) + if: matrix.os == 'ubuntu_arm64' || matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install dependencies (Ubuntu) - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' run: | sudo apt update sudo apt install -y ninja-build ccache sudo wireshark/tools/debian-setup.sh + # Downgrade to Python 3.11, because 3.12 introduced changes that break builds of older Wireshark versions + sudo add-apt-repository ppa:deadsnakes/ppa + sudo apt update + sudo apt install python3.11 - name: Install dependencies (Macos) if: matrix.os == 'macos-14' || matrix.os == 'macos-13' @@ -85,7 +99,7 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Install Wireshark headers (Unix) - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13' uses: ./.github/actions/install-wireshark-headers-unix - name: Install Wireshark headers (Windows) @@ -93,7 +107,7 @@ jobs: uses: ./.github/actions/install-wireshark-headers-windows - name: Build Traceeshark (Unix) - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13' run: | WERROR=y make cmake make @@ -109,7 +123,7 @@ jobs: shell: cmd - name: Load Plugins Test (Unix) - if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13') + if: (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13') run: | make install .github/load_plugins.py @@ -122,7 +136,7 @@ jobs: shell: cmd - name: Create distribution archive (Unix) - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu_arm64' || matrix.os == 'macos-14' || matrix.os == 'macos-13' run: | make dist DIST_PATH=$(ls dist/*.zip | head -n 1)