Skip to content

Merge pull request #23 from novafacing/no-symbol-file-dependency #80

Merge pull request #23 from novafacing/no-symbol-file-dependency

Merge pull request #23 from novafacing/no-symbol-file-dependency #80

Workflow file for this run

name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
env:
CARGO_TERM_COLOR: always
jobs:
test_plugins_linux:
name: Build and Test Plugins API v${{ matrix.version }} (Linux)
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
matrix:
include:
- version: 1
commit: fb691b8cbabf5bde7d25a7f720d5ec7d5b1341e1
- version: 2
commit: fba3b490a26cb278dfa183d7fcc375746e312980
- version: 3
commit: 7de77d37880d7267a491cb32a1b2232017d1e545
- version: 4
commit: cfa3a6c54511374e9ccee26d9c38ac1698fc7af2
env:
QEMU_COMMIT_HASH: ${{ matrix.commit }}
steps:
- name: Set up Sources List
run: |
cat <<EOF > /etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb-src
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
- name: Install QEMU Build Dependencies
run: |
apt -y update
apt -y install git curl build-essential
apt -y source qemu
apt -y build-dep qemu
- name: Cache QEMU
id: qemu-cache
uses: actions/cache@v3
with:
path: |
qemu-upstream
key: ${{ runner.os }}-qemu-v${{ matrix.version }}-${{ matrix.commit }}
- name: Clone QEMU
if: steps.qemu-cache.outputs.cache-hit != 'true'
run: |
git clone https://gitlab.com/qemu/qemu qemu-upstream
cd qemu-upstream
git checkout "${QEMU_COMMIT_HASH}"
- name: Build QEMU
if: steps.qemu-cache.outputs.cache-hit != 'true'
run: |
cd qemu-upstream
./configure --enable-plugins
cd build
make -j$(nproc)
make install
cd ../..
- uses: dtolnay/rust-toolchain@nightly
- uses: actions/checkout@v4
- name: Test QEMU Install
run: |
qemu-x86_64 --help
- name: Build and Test Tracer
run: |
cd plugins/tracer
cargo build -r --features=plugin-api-v${{ matrix.version }} --no-default-features || exit 0
cargo build -r --features=plugin-api-v${{ matrix.version }} --no-default-features
cargo run --features=plugin-api-v${{ matrix.version }} --no-default-features -r --bin tracer -- -a /bin/ls -- -lah
cd ../..
- name: Build and Test Tiny
run: |
cd plugins/tiny
cargo build -r --features=plugin-api-v${{ matrix.version }} --no-default-features
qemu-x86_64 -plugin ../../target/release/libtiny.so /bin/ls -lah
cd ../..
test_plugins_windows:
name: Build and Test Plugins (Windows)
runs-on: windows-latest
env:
QEMU_VERSION: 9.1.2-1
RUSTUP_URL: "https://win.rustup.rs/x86_64"
FEDORA_CLOUDIMG_URL: "https://download.fedoraproject.org/pub/fedora/linux/releases/39/Cloud/x86_64/images/Fedora-Cloud-Base-39-1.5.x86_64.qcow2"
steps:
# Cache MSYS2
- name: Cache MSYS2 packages
id: msys2-cache
uses: actions/cache@v3
with:
path: C:\msys-custom
key: ${{ runner.os }}-msys2-${{ env.QEMU_VERSION }}
- name: Install MSYS2 and QEMU
uses: msys2/setup-msys2@v2
if: steps.msys2-cache.outputs.cache-hit != 'true'
with:
msystem: UCRT64
update: true
install: git mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-qemu=${{ env.QEMU_VERSION }}
location: C:\msys-custom
- name: Download and Install Rust
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri ${{ env.RUSTUP_URL }} -OutFile rustup-init.exe
./rustup-init.exe --default-toolchain nightly --default-host x86_64-pc-windows-gnu -y
- name: Test QEMU
run: |
C:\msys-custom\msys64\ucrt64\bin\qemu-system-x86_64.exe --version
- uses: actions/checkout@v4
- name: Cache Fedora Cloud Image
id: fedora-cache
uses: actions/cache@v3
with:
path: Fedora-Cloud-Base-39-1.5.x86_64.qcow2
key: fedora-cloud-39-1.5
- name: Download Cloud Image
if: steps.fedora-cache.outputs.cache-hit != 'true'
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri ${{ env.FEDORA_CLOUDIMG_URL }} -OutFile Fedora-Cloud-Base-39-1.5.x86_64.qcow2
ls
- name: Build and Test Tiny
run: |
cd plugins/tiny-system
cargo build -r --features=plugin-api-v3 --no-default-features
cd ../..
$process = Start-Process PowerShell.exe -NoNewWindow -RedirectStandardOutput out.txt -RedirectStandardError err.txt -PassThru -ArgumentList "-Command", "C:\msys-custom\msys64\ucrt64\bin\qemu-system-x86_64.exe -machine type=q35 -m 2G -nographic -device virtio-net-pci,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22 -drive if=virtio,format=qcow2,file=Fedora-Cloud-Base-39-1.5.x86_64.qcow2 -drive if=virtio,format=raw,file=.github/rsrc/seed.img -plugin target/release/tiny_system.dll"
echo "Sleeping 180.0 seconds until booted (boot process took 118s first time)"
Start-Sleep -Seconds 180.0
echo "Stopping process"
Stop-Process -Id $process.id -ErrorAction SilentlyContinue
cat out.txt
cat err.txt