mirror of
https://git.openwrt.org/project/uci.git
synced 2025-12-20 00:53:58 +08:00
Install uci and properly use it by adding it to PATH and LD_LIBRARY_PATH. This is needed in order to use a proper environment for testing. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> Link: https://github.com/openwrt/uci/pull/14
249 lines
8.3 KiB
YAML
249 lines
8.3 KiB
YAML
name: uci
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
env:
|
|
LUA_VERSION: 5.1.5
|
|
|
|
jobs:
|
|
build:
|
|
name: Build ${{ matrix.arch }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arch: aarch64
|
|
gcc: /usr/bin/aarch64-linux-gnu-gcc
|
|
packages: gcc-aarch64-linux-gnu
|
|
- arch: arm
|
|
gcc: /usr/bin/arm-linux-gnueabi-gcc
|
|
packages: gcc-arm-linux-gnueabi
|
|
- arch: mips
|
|
gcc: /usr/bin/mips-linux-gnu-gcc
|
|
packages: gcc-mips-linux-gnu
|
|
- arch: powerpc
|
|
gcc: /usr/bin/powerpc-linux-gnu-gcc
|
|
packages: gcc-powerpc-linux-gnu
|
|
- arch: x86_64
|
|
gcc: /usr/bin/x86_64-linux-gnu-gcc
|
|
packages: gcc-x86-64-linux-gnu
|
|
outputs:
|
|
size-aarch64-basic: ${{ steps.basic.outputs.size_aarch64 }}
|
|
size-aarch64-full: ${{ steps.full.outputs.size_aarch64 }}
|
|
size-arm-basic: ${{ steps.basic.outputs.size_arm }}
|
|
size-arm-full: ${{ steps.full.outputs.size_arm }}
|
|
size-mips-basic: ${{ steps.basic.outputs.size_mips }}
|
|
size-mips-full: ${{ steps.full.outputs.size_mips }}
|
|
size-powerpc-basic: ${{ steps.basic.outputs.size_powerpc }}
|
|
size-powerpc-full: ${{ steps.full.outputs.size_powerpc }}
|
|
size-x86_64-basic: ${{ steps.basic.outputs.size_x86_64 }}
|
|
size-x86_64-full: ${{ steps.full.outputs.size_x86_64 }}
|
|
steps:
|
|
- name: Checkout uci
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Checkout json-c
|
|
uses: actions/checkout@v5
|
|
with:
|
|
repository: json-c/json-c
|
|
path: depends/json-c
|
|
|
|
- name: Checkout libubox
|
|
uses: actions/checkout@v5
|
|
with:
|
|
repository: openwrt/libubox
|
|
path: depends/libubox
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install ${{ matrix.packages }}
|
|
|
|
- name: Prepare build
|
|
run: |
|
|
mkdir -p ${GITHUB_WORKSPACE}/build
|
|
|
|
- name: Build json-c
|
|
working-directory: depends/json-c
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_C_COMPILER=${{ matrix.gcc }} \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
-DDISABLE_EXTRA_LIBS=ON \
|
|
-DBUILD_TESTING=OFF \
|
|
--install-prefix ${GITHUB_WORKSPACE}/build \
|
|
-B . -S .
|
|
make
|
|
make install
|
|
|
|
- name: Build lua
|
|
run: |
|
|
mkdir -p depends/lua
|
|
wget -qO- https://www.lua.org/ftp/lua-${{ env.LUA_VERSION }}.tar.gz | \
|
|
tar zxvf - -C depends/lua --strip-components=1
|
|
sed -i '/#define LUA_USE_READLINE/d' depends/lua/src/luaconf.h
|
|
sed -i 's/ -lreadline -lhistory -lncurses//g' depends/lua/src/Makefile
|
|
make -C depends/lua linux install \
|
|
CC=${{ matrix.gcc }} \
|
|
INSTALL_TOP=${GITHUB_WORKSPACE}/build
|
|
|
|
- name: Build libubox
|
|
working-directory: depends/libubox
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_C_COMPILER=${{ matrix.gcc }} \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_LUA=ON \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \
|
|
--install-prefix ${GITHUB_WORKSPACE}/build \
|
|
-B . -S .
|
|
make
|
|
make install
|
|
|
|
- id: basic
|
|
name: Build uci (basic)
|
|
env:
|
|
BUILD_DIR: build/uci-basic
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_C_COMPILER=${{ matrix.gcc }} \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_LUA=OFF \
|
|
-B $BUILD_DIR -S .
|
|
make -C $BUILD_DIR
|
|
echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name uci -printf '%s' )" >> $GITHUB_OUTPUT
|
|
|
|
- id: full
|
|
name: Build uci (full)
|
|
env:
|
|
BUILD_DIR: build/uci-full
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_C_COMPILER=${{ matrix.gcc }} \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_LUA=ON \
|
|
-DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \
|
|
-B $BUILD_DIR -S .
|
|
make -C $BUILD_DIR
|
|
echo "size_${{ matrix.arch }}=$( find $BUILD_DIR -type f -name uci -printf '%s' )" >> $GITHUB_OUTPUT
|
|
|
|
- name: Upload binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: uci-${{ matrix.arch }}-binaries
|
|
path: |
|
|
build/uci-*/uci
|
|
if-no-files-found: error
|
|
|
|
summary:
|
|
name: Sizes
|
|
needs: [build]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Sizes summary
|
|
env:
|
|
size_aarch64_basic: ${{needs.build.outputs.size-aarch64-basic}}
|
|
size_aarch64_full: ${{needs.build.outputs.size-aarch64-full}}
|
|
size_arm_basic: ${{needs.build.outputs.size-arm-basic}}
|
|
size_arm_full: ${{needs.build.outputs.size-arm-full}}
|
|
size_mips_basic: ${{needs.build.outputs.size-mips-basic}}
|
|
size_mips_full: ${{needs.build.outputs.size-mips-full}}
|
|
size_powerpc_basic: ${{needs.build.outputs.size-powerpc-basic}}
|
|
size_powerpc_full: ${{needs.build.outputs.size-powerpc-full}}
|
|
size_x86_64_basic: ${{needs.build.outputs.size-x86_64-basic}}
|
|
size_x86_64_full: ${{needs.build.outputs.size-x86_64-full}}
|
|
run: |
|
|
echo "### ${GITHUB_WORKFLOW} sizes :floppy_disk:" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Variant | aarch64 | arm | mips | powerpc | x86_64 |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| :---: | :---: | :---: | :---: | :---: | :---: |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| basic | ${size_aarch64_basic} | ${size_arm_basic} | ${size_mips_basic} | ${size_powerpc_basic} | ${size_x86_64_basic} |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| full | ${size_aarch64_full} | ${size_arm_full} | ${size_mips_full} | ${size_powerpc_full} | ${size_x86_64_full} |" >> $GITHUB_STEP_SUMMARY
|
|
|
|
tests:
|
|
name: Tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout uci
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Checkout json-c
|
|
uses: actions/checkout@v5
|
|
with:
|
|
repository: json-c/json-c
|
|
path: depends/json-c
|
|
|
|
- name: Checkout libubox
|
|
uses: actions/checkout@v5
|
|
with:
|
|
repository: openwrt/libubox
|
|
path: depends/libubox
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install valgrind
|
|
|
|
- name: Prepare build
|
|
run: |
|
|
mkdir -p ${GITHUB_WORKSPACE}/build
|
|
mkdir -p ${GITHUB_WORKSPACE}/depends/lua
|
|
echo "${GITHUB_WORKSPACE}/build/bin" >> $GITHUB_PATH
|
|
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/build/lib:${{ env.LD_LIBRARY_PATH }}" >> $GITHUB_ENV
|
|
|
|
- name: Build json-c
|
|
working-directory: depends/json-c
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
-DDISABLE_EXTRA_LIBS=ON \
|
|
-DBUILD_TESTING=OFF \
|
|
--install-prefix ${GITHUB_WORKSPACE}/build \
|
|
-B . -S .
|
|
make
|
|
make install
|
|
|
|
- name: Build lua
|
|
working-directory: depends/lua
|
|
run: |
|
|
wget -qO- https://www.lua.org/ftp/lua-${{ env.LUA_VERSION }}.tar.gz | \
|
|
tar zxvf - --strip-components=1
|
|
sed -i '/#define LUA_USE_READLINE/d' src/luaconf.h
|
|
sed -i 's/ -lreadline -lhistory -lncurses//g' src/Makefile
|
|
make linux install \
|
|
INSTALL_TOP=${GITHUB_WORKSPACE}/build
|
|
|
|
- name: Build libubox
|
|
working-directory: depends/libubox
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_LUA=ON \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \
|
|
--install-prefix ${GITHUB_WORKSPACE}/build \
|
|
-B . -S .
|
|
make
|
|
make install
|
|
|
|
- name: Build uci
|
|
run: |
|
|
cmake \
|
|
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
|
|
-DBUILD_LUA=ON \
|
|
-DUNIT_TESTING=ON \
|
|
-DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \
|
|
--install-prefix ${GITHUB_WORKSPACE}/build \
|
|
-B . -S .
|
|
make
|
|
make install
|
|
|
|
- name: Test uci
|
|
run: |
|
|
make test CTEST_OUTPUT_ON_FAILURE=1
|