Merge pull request #270 from flaviojs/build-test-cygwin-amd64-with-wo… #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI build | |
on: | |
workflow_dispatch: # run manually https://docs.github.com/en/actions/using-workflows/manually-running-a-workflow | |
push: | |
branches: [ "master" ] # run for these branches | |
pull_request: | |
branches: [ "master" ] # run for pull requests that target these branches | |
env: | |
BUILD_TYPE: RelWithDebInfo # CMake build type (Release, Debug, RelWithDebInfo, etc.) | |
jobs: | |
# ---------------------------------------------------------------------------------------------- | |
linux-amd64: | |
name: Linux (amd64/x86_64) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies with APT (libelf, libpcap) | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: libelf-dev libpcap0.8-dev | |
version: linux-amd64 | |
- name: Configure with CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDYNAMIPS_CODE=both -DBUILD_UDP_RECV=ON -DBUILD_UDP_SEND=ON -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/build/install -DCPACK_PACKAGE_FILE_NAME=dynamips-package -DCPACK_GENERATOR=ZIP | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Test | |
run: | | |
set -x | |
cd ${{github.workspace}}/build | |
ctest --verbose --build-config ${{env.BUILD_TYPE}} | |
./stable/dynamips -e | |
./unstable/dynamips_amd64_unstable -e | |
- name: Install | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install | |
- name: Package | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target package | |
- name: Upload success | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-amd64-success | |
path: | | |
${{github.workspace}}/build/install/ | |
${{github.workspace}}/build/dynamips-package.zip | |
compression-level: 9 # maximum compression | |
- name: Upload failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-amd64-failure | |
path: ${{github.workspace}}/build/ | |
compression-level: 9 # maximum compression | |
# ---------------------------------------------------------------------------------------------- | |
linux-x86: | |
name: Linux (x86) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup x86 chroot with Alpine Linux and install dependencies | |
uses: jirutka/setup-alpine@v1 | |
with: | |
arch: x86 | |
packages: > | |
build-base | |
linux-headers | |
elfutils-dev | |
libpcap-dev | |
cmake | |
- name: Configure with CMake | |
shell: alpine.sh {0} | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDYNAMIPS_CODE=both -DBUILD_UDP_RECV=ON -DBUILD_UDP_SEND=ON -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/build/install -DCPACK_PACKAGE_FILE_NAME=dynamips-package -DCPACK_GENERATOR=ZIP | |
- name: Build | |
shell: alpine.sh {0} | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Test | |
shell: alpine.sh {0} | |
run: | | |
set -x | |
cd ${{github.workspace}}/build | |
ctest --verbose --build-config ${{env.BUILD_TYPE}} | |
./stable/dynamips -e | |
./unstable/dynamips_x86_unstable -e | |
- name: Install | |
shell: alpine.sh {0} | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install | |
- name: Package | |
shell: alpine.sh {0} | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target package | |
- name: Upload success | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-x86-success | |
path: | | |
${{github.workspace}}/build/install/ | |
${{github.workspace}}/build/dynamips-package.zip | |
compression-level: 9 # maximum compression | |
- name: Upload failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-x86-failure | |
path: ${{github.workspace}}/build/ | |
compression-level: 9 # maximum compression | |
# ---------------------------------------------------------------------------------------------- | |
macos-amd64: | |
name: MacOS (amd64/x86_64) | |
runs-on: macos-13 # macos-13 is the last runner with an AMD64 cpu, macos-14 has an ARM cpu (Apple M1) | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies with brew | |
uses: ConorMacBride/install-package@v1 | |
with: | |
brew: libelf # libpcap is included in the SDK | |
- name: Configure with CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDYNAMIPS_CODE=both -DBUILD_UDP_RECV=ON -DBUILD_UDP_SEND=ON -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/build/install -DCPACK_PACKAGE_FILE_NAME=dynamips-package -DCPACK_GENERATOR=ZIP | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Test | |
run: | | |
set -x | |
cd ${{github.workspace}}/build | |
ctest --verbose --build-config ${{env.BUILD_TYPE}} | |
./stable/dynamips -e | |
./unstable/dynamips_amd64_unstable -e | |
- name: Install | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install | |
- name: Package | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target package | |
- name: Upload success | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos-amd64-success | |
path: | | |
${{github.workspace}}/build/install/ | |
${{github.workspace}}/build/dynamips-package.zip | |
compression-level: 9 # maximum compression | |
- name: Upload failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos-amd64-failure | |
path: ${{github.workspace}}/build/ | |
compression-level: 9 # maximum compression | |
# ---------------------------------------------------------------------------------------------- | |
cygwin-amd64: | |
name: Cygwin (amd64/x86_64) | |
runs-on: windows-latest | |
env: | |
CYGWIN_NOWINPATH: 1 # isolate cygwin from windows | |
defaults: | |
run: | |
shell: C:\cygwin\bin\bash.EXE --login -e -o pipefail -o igncr '{0}' | |
steps: | |
- name: Avoid '\r' problems | |
shell: cmd | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
- name: Install dependencies with Cygwin | |
uses: cygwin/cygwin-install-action@master | |
with: | |
packages: git curl p7zip cmake make gcc-core # FIXME using the libelf-devel package gets you a "missing libintl_dgettext" error, how to fix? | |
platform: x86_64 | |
add-to-path: false | |
- name: Adapt cygwin environment | |
run: | | |
set -x | |
# avoid git error "detected dubious ownership" | |
git config --global --add safe.directory '*' | |
# set the start directory | |
echo "cd '${{github.workspace}}'" >> ~/.bash_profile | |
- name: Install dependencies (libelf) | |
run: | | |
set -x | |
curl -O https://fossies.org/linux/misc/old/libelf-0.8.13.tar.gz | |
tar xvzf libelf-0.8.13.tar.gz | |
cd libelf-0.8.13 | |
./configure --host x86_64-pc-cygwin | |
make | |
make install | |
- name: Install dependencies (winpcap SDK) | |
run: | | |
set -x | |
curl -O https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip | |
7za x ./WpdPack_4_1_2.zip -o. | |
cp ./WpdPack/Lib/x64/Packet.lib /usr/local/lib/libpacket.a | |
cp ./WpdPack/Lib/x64/wpcap.lib /usr/local/lib/libwpcap.a | |
cp --verbose --force --recursive ./WpdPack/Include/* /usr/local/include/ | |
- name: Install dependencies (win10pcap) | |
shell: cmd | |
run: | | |
echo on | |
curl -O "http://www.win10pcap.org/download/Win10Pcap-v10.2-5002.msi" | |
msiexec /i "Win10Pcap-v10.2-5002.msi" /qn /norestart /L*v "Win10Pcap-install.log" | |
type "Win10Pcap-install.log" | |
- name: Configure with CMake | |
run: cmake -B $(pwd)/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDYNAMIPS_CODE=both -DBUILD_UDP_RECV=ON -DBUILD_UDP_SEND=ON -DCMAKE_INSTALL_PREFIX=$(pwd)/build/install -DCPACK_PACKAGE_FILE_NAME=dynamips-package -DCPACK_GENERATOR=ZIP | |
- name: Build | |
run: cmake --build $(pwd)/build --config ${{env.BUILD_TYPE}} | |
- name: Test | |
run: | | |
set -x | |
cd build | |
ctest --verbose --build-config ${{env.BUILD_TYPE}} | |
./stable/dynamips -e | |
./unstable/dynamips_amd64_unstable -e | |
- name: Install | |
run: cmake --build $(pwd)/build --config ${{env.BUILD_TYPE}} --target install | |
- name: Package | |
run: cmake --build $(pwd)/build --config ${{env.BUILD_TYPE}} --target package | |
- name: Upload success | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cygwin-amd64-success | |
path: | | |
${{github.workspace}}/build/install/ | |
${{github.workspace}}/build/dynamips-package.zip | |
compression-level: 9 # maximum compression | |
- name: Upload failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cygwin-amd64-failure | |
path: ${{github.workspace}}/build/ | |
compression-level: 9 # maximum compression |