1 #!/bin/bash 2 3 set -euxo pipefail 4 cd "${0%/*}" 5 cd .. 6 7 # Sanity checks 8 if [ ! -e "CMakeLists.txt" ] || [ ! -e "libubus.c" ]; then 9 echo "ubus checkout not found" >&2 10 exit 1 11 fi 12 13 if [ $# -eq 0 ]; then 14 BUILD_ARGS="-DBUILD_LUA=ON -DUNIT_TESTING=ON" 15 else 16 BUILD_ARGS="$@" 17 fi 18 19 # Create build dirs 20 UBUSDIR="$(pwd)" 21 BUILDDIR="${UBUSDIR}/build" 22 DEPSDIR="${BUILDDIR}/depends" 23 [ -e "${BUILDDIR}" ] || mkdir "${BUILDDIR}" 24 [ -e "${DEPSDIR}" ] || mkdir "${DEPSDIR}" 25 26 # Prepare env 27 export LD_LIBRARY_PATH="${BUILDDIR}/lib:${LD_LIBRARY_PATH:-}" 28 export PATH="${BUILDDIR}/bin:${PATH:-}" 29 30 # Download deps 31 cd "${DEPSDIR}" 32 [ -e "json-c" ] || git clone https://github.com/json-c/json-c.git 33 [ -e "libubox" ] || git clone https://github.com/openwrt/libubox.git 34 if [ ! -e "lua" ]; then 35 mkdir -p lua 36 wget -qO- https://www.lua.org/ftp/lua-5.1.5.tar.gz | \ 37 tar zxvf - -C lua --strip-components=1 38 sed -i '/#define LUA_USE_READLINE/d' ./lua/src/luaconf.h 39 sed -i 's/ -lreadline -lhistory -lncurses//g' ./lua/src/Makefile 40 fi 41 42 # Build lua 43 cd "${DEPSDIR}/lua" 44 make linux install \ 45 INSTALL_TOP="${BUILDDIR}" 46 47 # Build json-c 48 cd "${DEPSDIR}/json-c" 49 cmake \ 50 -S . \ 51 -B . \ 52 -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ 53 -DBUILD_SHARED_LIBS=OFF \ 54 -DDISABLE_EXTRA_LIBS=ON \ 55 -DBUILD_TESTING=OFF \ 56 --install-prefix "${BUILDDIR}" 57 make 58 make install 59 60 # Build libubox 61 cd "${DEPSDIR}/libubox" 62 cmake \ 63 -S . \ 64 -B . \ 65 -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ 66 -DBUILD_LUA=ON \ 67 -DBUILD_EXAMPLES=OFF \ 68 -DLUAPATH=${BUILDDIR}/lib/lua \ 69 --install-prefix "${BUILDDIR}" 70 make 71 make install 72 73 # Build ubus 74 cd "${UBUSDIR}" 75 cmake \ 76 -S . \ 77 -B "${BUILDDIR}" \ 78 -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ 79 -DLUAPATH=${BUILDDIR}/lib/lua \ 80 --install-prefix "${BUILDDIR}" \ 81 ${BUILD_ARGS} 82 make -C "${BUILDDIR}" 83 make -C "${BUILDDIR}" install 84 85 # Test ubus 86 make -C "${BUILDDIR}" test CTEST_OUTPUT_ON_FAILURE=1 87 88 set +x 89 echo "✅ Success - ubus is available at ${BUILDDIR}" 90 echo "👷 You can rebuild ubus by running 'make -C build'" 91 92 exit 0
This page was automatically generated by LXR 0.3.1. • OpenWrt