diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 638e5a8d..43e1489e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -1,23 +1,29 @@ name: C/C++ CI -on: [push, pull_request] +on: [ push, pull_request ] jobs: build: - runs-on: ${{ matrix.os }} strategy: matrix: os: [ macos-latest, ubuntu-24.04-arm, ubuntu-latest ] - steps: - - uses: actions/checkout@v6 - - run: make - - name: Unit tests + - name: Set up build environment (Linux) run: | sudo apt-get update sudo apt-get install check + if: runner.os == 'Linux' + - name: Set up build environment (macOS) + run: | + brew update + brew install check + if: runner.os == 'macOS' + - uses: actions/checkout@v6 + - name: Build + run: make + - name: Unit tests + run: | make clean make units UNITS=1 ./test/units.sh - if: runner.os == 'Linux' diff --git a/.github/workflows/cross-platform-actions.yml b/.github/workflows/cross-platform-actions.yml index a3a4372d..92c5e4fa 100644 --- a/.github/workflows/cross-platform-actions.yml +++ b/.github/workflows/cross-platform-actions.yml @@ -1,6 +1,6 @@ name: BSD, Haiku CI -on: [push, pull_request] +on: [ push, pull_request ] jobs: build: @@ -12,23 +12,21 @@ jobs: include: - operating_system: freebsd version: '15.0' - pkginstall: sudo pkg update && sudo pkg install -y gmake && export MAKE=gmake + pkginstall: sudo pkg update && sudo pkg install -y check gmake && export MAKE=gmake - operating_system: haiku version: 'r1beta5' - pkginstall: pkgman refresh + pkginstall: pkgman refresh && pkgman install -y check_devel - operating_system: netbsd version: '10.1' - pkginstall: sudo pkgin update && sudo pkgin -y install clang gmake && export MAKE=gmake + pkginstall: sudo pkgin update && sudo pkgin -y install check clang gmake && export MAKE=gmake - operating_system: openbsd version: '7.8' - pkginstall: sudo pkg_add -u && sudo pkg_add gmake && export MAKE=gmake + pkginstall: sudo pkg_add -u && sudo pkg_add check gmake && export MAKE=gmake exclude: - operating_system: haiku architecture: arm64 - steps: - uses: actions/checkout@v6 - - uses: cross-platform-actions/action@v0.32.0 with: operating_system: ${{ matrix.operating_system }} @@ -37,3 +35,6 @@ jobs: run: | ${{ matrix.pkginstall }} ${MAKE:-make} CC=cc + ${MAKE:-make} clean + ${MAKE:-make} CC=cc units UNITS=1 + ./test/units.sh diff --git a/.github/workflows/msys2.yml b/.github/workflows/msys2.yml index 12aca50b..e8eeff21 100644 --- a/.github/workflows/msys2.yml +++ b/.github/workflows/msys2.yml @@ -1,10 +1,9 @@ name: MSYS2 CI -on: [push, pull_request] +on: [ push, pull_request ] jobs: build: - runs-on: ${{ matrix.os }} strategy: matrix: @@ -17,7 +16,6 @@ jobs: defaults: run: shell: msys2 {0} - steps: - uses: actions/checkout@v6 - uses: msys2/setup-msys2@v2 @@ -26,5 +24,5 @@ jobs: update: true install: make pacboy: toolchain:p - - run: | - [[ ${{matrix.sys}} == clang* ]] && make CC=clang || make + - name: Build + run: make CC=cc diff --git a/Makefile b/Makefile index e23e3ca7..d20ed308 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,18 @@ ifeq ($(OS),Darwin) BREW_PREFIX_CHECK:=$(shell brew --prefix check) UNIT_CFLAGS+=-I$(BREW_PREFIX_CHECK)/include UNIT_LDFLAGS+=-L$(BREW_PREFIX_CHECK)/lib +else ifeq ($(OS),FreeBSD) + UNIT_CFLAGS+=-I/usr/local/include + UNIT_LDFLAGS+=-L/usr/local/lib +else ifeq ($(OS),Haiku) + UNIT_CFLAGS+=-I/system/develop/headers + UNIT_LDFLAGS+=-L/system/lib -lnetwork +else ifeq ($(OS),NetBSD) + UNIT_CFLAGS+=-I/usr/pkg/include + UNIT_LDFLAGS+=-L/usr/pkg/lib -Wl,-R/usr/pkg/lib +else ifeq ($(OS),OpenBSD) + UNIT_CFLAGS+=-I/usr/local/include + UNIT_LDFLAGS+=-L/usr/local/lib else ifeq ($(OS),Linux) UNIT_LDFLAGS+=-lsubunit endif @@ -37,9 +49,18 @@ STRIP?=0 RTOS?=0 GENERIC?=0 PTHREAD?=0 -ADDRESS_SANITIZER?=1 GCOV?=0 +ifeq ($(OS),Haiku) + ADDRESS_SANITIZER=0 +else ifeq ($(OS),NetBSD) + ADDRESS_SANITIZER=0 +else ifeq ($(OS),OpenBSD) + ADDRESS_SANITIZER=0 +else + ADDRESS_SANITIZER?=1 +endif + # Default compiled-in protocols # TCP?=1 diff --git a/docs/user_manual/build.sh b/docs/user_manual/build.sh index 56eaf313..74ea6b75 100755 --- a/docs/user_manual/build.sh +++ b/docs/user_manual/build.sh @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash pdflatex user_doc.tex && pdflatex user_doc.tex && pdflatex user_doc.tex diff --git a/make-gnu.sh b/make-gnu.sh index 993dcf6c..87be9d43 100755 --- a/make-gnu.sh +++ b/make-gnu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash make PTHREAD=1 TCP=1 UDP=1 VDE=1 \ RTOS=0 \ diff --git a/mkdeps.sh b/mkdeps.sh index 6e536bca..fd8a615e 100755 --- a/mkdeps.sh +++ b/mkdeps.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if [ "$#" -eq 0 ]; then echo "Supply PREFIX for building pico_defines.h" diff --git a/modules/pico_dev_ppp.c b/modules/pico_dev_ppp.c index 0d92f47f..290e9bcd 100644 --- a/modules/pico_dev_ppp.c +++ b/modules/pico_dev_ppp.c @@ -1233,7 +1233,7 @@ static void ipcp_send_req(struct pico_device_ppp *ppp) static void ipcp_reject_vj(struct pico_device_ppp *ppp, uint8_t *comp_req) { - uint8_t ipcp_req[PPP_HDR_SIZE + PPP_PROTO_SLOT_SIZE + sizeof(struct pico_ipcp_hdr) + IPCP_VJ_LEN + PPP_FCS_SIZE + 1]; + uint8_t ipcp_req[PPP_HDR_SIZE + PPP_PROTO_SLOT_SIZE + sizeof(struct pico_ipcp_hdr) + IPCP_VJ_LEN + PPP_FCS_SIZE + 1] = { 0 }; uint32_t prefix = PPP_HDR_SIZE + PPP_PROTO_SLOT_SIZE; struct pico_ipcp_hdr *ih = (struct pico_ipcp_hdr *) (ipcp_req + prefix); uint8_t *p = ipcp_req + prefix + sizeof(struct pico_ipcp_hdr); diff --git a/test/autotest.sh b/test/autotest.sh index 0d82998c..6481c705 100755 --- a/test/autotest.sh +++ b/test/autotest.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -x TFTP_EXEC_DIR="$(pwd)/build/test" diff --git a/test/coverage.sh b/test/coverage.sh index f326bc7f..15bf2fba 100755 --- a/test/coverage.sh +++ b/test/coverage.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash ./test/units.sh || exit 1 ./test/autotest.sh || exit 2 exit 0 diff --git a/test/mkunits.sh b/test/mkunits.sh index ca5e6ee9..946cb5bd 100755 --- a/test/mkunits.sh +++ b/test/mkunits.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # By Daniele. #set -x filename=$1 diff --git a/test/olsr_test.sh b/test/olsr_test.sh index 597b233a..bc17c57d 100755 --- a/test/olsr_test.sh +++ b/test/olsr_test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash sudo vde_switch -t pic0 -s /tmp/pic0.ctl -d sudo vde_switch -s /tmp/pic1.ctl -d diff --git a/test/perf.sh b/test/perf.sh index c9debbea..2c44a90b 100755 --- a/test/perf.sh +++ b/test/perf.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash THRESHOLD=300 sh ./test/vde_sock_start_user.sh sleep 2 diff --git a/test/units.sh b/test/units.sh index a881abd5..cae2ee75 100755 --- a/test/units.sh +++ b/test/units.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash rm -f /tmp/pico-mem-report-* ASAN_OPTIONS="detect_leaks=0" ./build/test/units || exit 1 diff --git a/test/vde_sock_start.sh b/test/vde_sock_start.sh index cf0100e8..18c1704e 100755 --- a/test/vde_sock_start.sh +++ b/test/vde_sock_start.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash gksu "vdecmd -s /tmp/pico.mgmt shutdown" gksu "vdecmd -s /tmp/pico1.mgmt shutdown" diff --git a/test/vde_sock_start_user.sh b/test/vde_sock_start_user.sh index 624cfc9a..d57bb640 100755 --- a/test/vde_sock_start_user.sh +++ b/test/vde_sock_start_user.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash function help(){ echo 'Cmd line arguments can be:' echo 'start: to start the vde setup for the autotest.'