Skip to content

Commit

Permalink
Add build for Linux ARM64
Browse files Browse the repository at this point in the history
  • Loading branch information
oshaked1 committed Sep 9, 2024
1 parent b1e4240 commit 9ef1925
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 17 deletions.
6 changes: 5 additions & 1 deletion .github/actions/install-wireshark-headers-unix/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ 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
if [ "$WERROR" = "n" ]; then
cmake -G Ninja -B wireshark/build -S wireshark -DENABLE_CCACHE=Yes -DENABLE_WERROR=OFF -DDISABLE_WERROR=ON $TRACEESHARK_CMAKE_OPTIONS
else
cmake -G Ninja -B wireshark/build -S wireshark -DENABLE_CCACHE=Yes -DENABLE_WERROR=ON -DDISABLE_WERROR=OFF $TRACEESHARK_CMAKE_OPTIONS
fi
shell: bash
- name: Install headers
id: install_headers
Expand Down
35 changes: 29 additions & 6 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -33,8 +37,24 @@ jobs:
- name: Clone Wireshark
run: git clone --depth 1 --branch ${{ matrix.wireshark_version }} https://github.com/wireshark/wireshark

# Python 3.12 introduced changes that break builds of older Wireshark versions
- name: Install Python 3.11 (Wireshark 3.6.2)
if: matrix.wireshark_version == 'wireshark-3.6.2'
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Add Python 3.11 to cmake options (Wireshark 3.6.2)
if: matrix.wireshark_version == 'wireshark-3.6.2'
run: echo "TRACEESHARK_CMAKE_OPTIONS=-DPython3_EXECUTABLE=$(which python3.11)" >> $GITHUB_ENV

# Wireshark has compilation warnings on Wireshark 3.6.2 on Ubuntu ARM64
- name: Disable WERROR (Ubuntu ARM64, Wireshark 3.6.2)
if: matrix.os == 'ubuntu_arm64' && matrix.wireshark_version == 'wireshark-3.6.2'
run: echo "WERROR=n" >> $GITHUB_ENV

- 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
Expand All @@ -60,17 +80,20 @@ 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)
if: matrix.os == 'windows-latest'
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
if [ -z $WERROR ]; then
export WERROR=y
fi
make cmake
make
- name: Build Traceeshark (Windows)
Expand All @@ -84,7 +107,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
Expand Down
37 changes: 30 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -58,8 +62,24 @@ jobs:
- name: Clone Wireshark
run: git clone --depth 1 --branch ${{ matrix.wireshark_version }} https://github.com/wireshark/wireshark

# Python 3.12 introduced changes that break builds of older Wireshark versions
- name: Install Python 3.11 (Wireshark 3.6.2)
if: matrix.wireshark_version == 'wireshark-3.6.2'
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Add Python 3.11 to cmake options (Wireshark 3.6.2)
if: matrix.wireshark_version == 'wireshark-3.6.2'
run: echo "TRACEESHARK_CMAKE_OPTIONS=-DPython3_EXECUTABLE=$(which python3.11)" >> $GITHUB_ENV

# Wireshark has compilation warnings on Wireshark 3.6.2 on Ubuntu ARM64
- name: Disable WERROR (Ubuntu ARM64, Wireshark 3.6.2)
if: matrix.os == 'ubuntu_arm64' && matrix.wireshark_version == 'wireshark-3.6.2'
run: echo "WERROR=n" >> $GITHUB_ENV

- 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
Expand All @@ -85,17 +105,20 @@ 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)
if: matrix.os == 'windows-latest'
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
if [ -z $WERROR ]; then
export WERROR=y
fi
make cmake
make
- name: Build Traceeshark (Windows)
Expand All @@ -109,7 +132,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
Expand All @@ -122,7 +145,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)
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,9 @@ cmake: clean sync
@rm -rf wireshark/build && mkdir wireshark/build
# Wireshark changed DISABLE_WERROR to ENABLE_WERROR at some point. Use both for compatibility (even though it causes a cmake warning to be thrown)
ifeq ($(WERROR),y)
@cmake -G Ninja -DTRACEESHARK_VERSION=$(TRACEESHARK_VERSION) -DENABLE_CCACHE=No -DENABLE_WERROR=ON -DDISABLE_WERROR=OFF -S wireshark -B wireshark/build
@cmake -G Ninja -DTRACEESHARK_VERSION=$(TRACEESHARK_VERSION) -DENABLE_CCACHE=Yes -DENABLE_WERROR=ON -DDISABLE_WERROR=OFF $(TRACEESHARK_CMAKE_OPTIONS) -S wireshark -B wireshark/build
else
@cmake -G Ninja -DTRACEESHARK_VERSION=$(TRACEESHARK_VERSION) -DENABLE_CCACHE=No -DENABLE_WERROR=OFF -DDISABLE_WERROR=ON -S wireshark -B wireshark/build
@cmake -G Ninja -DTRACEESHARK_VERSION=$(TRACEESHARK_VERSION) -DENABLE_CCACHE=Yes -DENABLE_WERROR=OFF -DDISABLE_WERROR=ON $(TRACEESHARK_CMAKE_OPTIONS) -S wireshark -B wireshark/build
endif

dist: all
Expand Down
2 changes: 1 addition & 1 deletion autoinstall.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def get_system_info() -> Tuple[str, str]:
if platform.machine() in ["AMD64", "x86_64"]:
arch = "x86_64"
elif platform.machine() in ["arm64", "aarch64"]:
arch = "arm64"
arch = platform.machine()
else:
raise ValueError(f"incompatible architecture {platform.machine()}")

Expand Down

0 comments on commit 9ef1925

Please sign in to comment.