diff --git a/.github/workflows/kuiperbuild.yml b/.github/workflows/kuiperbuild.yml new file mode 100644 index 0000000000..a35afba0f0 --- /dev/null +++ b/.github/workflows/kuiperbuild.yml @@ -0,0 +1,42 @@ +name: Kuiper Scopy Build + +on: [push, pull_request] + +env: + BUILD_HOST: ubuntu-20.04 + USERNAME: runner + +jobs: + + build_scopy_for_kuiper: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v4 + with: + set-safe-directory: 'true' + + - name: Pull the Docker Image + run: docker pull cristianbindea/scopy2-kuiper:latest + + - name: Build Scopy + shell: bash + run: | + sudo chown -R 1000:1000 $GITHUB_WORKSPACE + docker run \ + --mount type=bind,source="$GITHUB_WORKSPACE",target=/home/runner/scopy \ + cristianbindea/scopy2-kuiper:latest /bin/bash -c 'id && cd /home/runner/scopy && ./ci/kuiper/kuiper_build_process.sh install_packages download_cmake download_crosscompiler move_sysroot build_scopy build_iio-emu create_appdir create_appimage move_appimage' + + - name: Set short git commit SHA + shell: bash + run: echo "commit_sha=$(git rev-parse --short ${{ github.sha }})" >> "$GITHUB_ENV" + + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ github.workspace }}/Scopy.AppImage + asset_name: scopy-linux-armhf-${{ env.commit_sha }} + tag: ${{ github.ref }} + overwrite: true + body: "Scopy armhf" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7e72fec662..b778afe7cb 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,9 @@ build/* .vscode/* ci/ubuntu/staging ci/macOS/staging +ci/kuiper/staging +ci/kuiper/docker/sysroot* +ci/kuiper/scopy.AppDir windows/* core/include/scopy-core_config.h core/include/scopy-core_export.h diff --git a/ci/kuiper/AppRun b/ci/kuiper/AppRun new file mode 100755 index 0000000000..9a575a5c17 --- /dev/null +++ b/ci/kuiper/AppRun @@ -0,0 +1,10 @@ +#!/bin/bash +set -e +SELF=$(readlink -f "$0") +HERE=${SELF%/*} + +export QT_PLUGIN_PATH=$HERE/usr/plugins +export QT_QPA_PLATFORM_PLUGIN_PATH=$HERE/usr/plugins/platforms +export LD_LIBRARY_PATH=$HERE/usr/lib + +exec $HERE/usr/bin/scopy diff --git a/ci/kuiper/AppRun-armhf b/ci/kuiper/AppRun-armhf new file mode 100644 index 0000000000..dc56706aad Binary files /dev/null and b/ci/kuiper/AppRun-armhf differ diff --git a/ci/kuiper/cmake_toolchain.cmake b/ci/kuiper/cmake_toolchain.cmake index 8122187471..2f53210307 100644 --- a/ci/kuiper/cmake_toolchain.cmake +++ b/ci/kuiper/cmake_toolchain.cmake @@ -7,7 +7,7 @@ set(CMAKE_LIBRARY_ARCHITECTURE arm-linux-gnueabihf) # In this case the variables CMAKE_SYSROOT and STAGING_AREA are defined as parameters to the cmake command set(TOOLCHAIN_FILE ${STAGING_AREA}/cross-pi-gcc) set(TOOLCHAIN_BIN ${TOOLCHAIN_FILE}/bin) -set(CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/local/qt5.15") +set(CMAKE_PREFIX_PATH ${QT_LOCATION}) list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf") list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/lib") set(CMAKE_VERBOSE ON) @@ -45,6 +45,8 @@ set(CMAKE_CXX_FLAGS_RELEASE "-Os -DNDEBUG" ) set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,-O1 -Wl,--hash-style=gnu -mthumb -lpthread -pthread") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/lib") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${QT_LOCATION}/lib") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${TOOLCHAIN_FILE}/arm-linux-gnueabihf/lib") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${TOOLCHAIN_FILE}/arm-linux-gnueabihf/libc/lib") set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) @@ -56,7 +58,7 @@ set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # Perform compiler test with static library set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -set(CMAKE_INSTALL_RPATH "$ORIGIN" "$ORIGIN/../lib" "/lib/arm-linux-gnueabihf" "/lib") +set(CMAKE_INSTALL_RPATH "$ORIGIN" "$ORIGIN/../lib" "/lib/arm-linux-gnueabihf" "/lib" "/usr/local/qt5.15/lib") set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/ci/kuiper/copy-deps.sh b/ci/kuiper/copy-deps.sh new file mode 100755 index 0000000000..8d235bc017 --- /dev/null +++ b/ci/kuiper/copy-deps.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e +SRC_DIR=$(git rev-parse --show-toplevel) +source $SRC_DIR/ci/kuiper/kuiper_build_config.sh + +BINARY=$1 +LOCATION=$2 + + +if [ ! -f "${SRC_DIR}"/ci/kuiper/ldd-mod ]; then + sed 's|.*RTLDLIST=.*|RTLDLIST="/usr/arm-linux-gnueabihf/lib/ld-2.31.so /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3"|' /usr/bin/ldd | tee "${SRC_DIR}"/ci/kuiper/ldd-mod + chmod +x "${SRC_DIR}"/ci/kuiper/ldd-mod +fi + +export LD_LIBRARY_PATH="${APP_DIR}/usr/lib:${SYSROOT}/lib:${SYSROOT}/lib/arm-linux-gnueabihf:${SYSROOT}/usr/arm-linux-gnueabihf/lib:${SYSROOT}/usr/local/qt5.15/lib:${SYSROOT}/usr/local/lib:${SRC_DIR}/build" +LIBS_ARRAY=() +run_ldd(){ + + if [ ! -z "$(${SRC_DIR}/ci/kuiper/ldd-mod $1 | grep "not found")" ]; then + echo "--- LIB NOT FOUND" + ${SRC_DIR}/ci/kuiper/ldd-mod $1 + exit 1 + fi + + for library in $("${SRC_DIR}"/ci/kuiper/ldd-mod "$1" | cut -d '>' -f 2 | awk '{print $1}') + do + # check if the library exists at that path and if it was processed already + if [ -f "${library}" ] && ! [[ "${LIBS_ARRAY[*]}" =~ "${library}" ]]; then + LIBS_ARRAY+=("${library}") + echo "---NEW: ${library}" + if [ ! -f "${LOCATION}"/"${library##*/}" ]; then + cp --verbose "${library}" "${LOCATION}" + [ -L "${library}" ] && cp --verbose "$(realpath "${library}")" "${LOCATION}" + fi + run_ldd "${library}" + fi + done +} + +for arg in $BINARY; do + run_ldd "${arg}" +done diff --git a/ci/kuiper/create_docker_image.sh b/ci/kuiper/create_docker_image.sh new file mode 100755 index 0000000000..7d7207e388 --- /dev/null +++ b/ci/kuiper/create_docker_image.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -ex +SRC_DIR=$(git rev-parse --show-toplevel) +source $SRC_DIR/ci/kuiper/kuiper_build_config.sh + +install_packages(){ + sudo apt-get update + sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" + sudo apt-get update + sudo apt-get -y install containerd.io docker-ce docker-ce-cli docker-buildx-plugin +} + +create_sysroot(){ + $SRC_DIR/ci/kuiper/create_sysroot.sh \ + install_packages \ + download_kuiper \ + install_qemu \ + extract_sysroot \ + configure_sysroot +} + +tar_and_move_sysroot(){ + pushd $STAGING_AREA + sudo tar -czvf "${SYSROOT_TAR##*/}" sysroot + + # move the sysroot next to Dockerfile in order to use copy the tar in the docker image + sudo mv $SYSROOT_TAR $SYSROOT_DOCKER + popd +} + +create_image(){ + pushd ${SRC_DIR}/ci/kuiper/docker + sudo DOCKER_BUILDKIT=0 docker build --tag cristianbindea/scopy2-kuiper . + # sudo docker build --load --tag cristianbindea/scopy2-kuiper . + popd +} + +install_packages +create_sysroot +tar_and_move_sysroot +create_image diff --git a/ci/kuiper/create_sysroot.sh b/ci/kuiper/create_sysroot.sh index 7bbe4452f1..6ed4d939de 100755 --- a/ci/kuiper/create_sysroot.sh +++ b/ci/kuiper/create_sysroot.sh @@ -35,13 +35,16 @@ extract_sysroot(){ sudo umount /mnt/kuiper sudo rm -rf /mnt/kuiper rm -rf ${STAGING_AREA:?}/${IMAGE_FILE} - rm ${STAGING_AREA}/image*.zip + rm -rf ${STAGING_AREA}/image*.zip } configure_sysroot(){ cat << EOF | sudo chroot ${SYSROOT} export DEBIAN_FRONTEND=noninteractive ln -snf /usr/share/zoneinfo/Europe/Bucharest /etc/localtime && echo "Europe/Bucharest" > /etc/timezone +echo "LC_ALL=en_US.UTF-8" | tee -a /etc/environment +echo "LANG=en_US.UTF-8" | tee -a /etc/locale.conf +locale-gen en_US.UTF-8 sed -i 's/#deb-src/deb-src/' /etc/apt/sources.list @@ -73,15 +76,15 @@ rm -rf /usr/lib/arm-linux-gnueabihf/libad9361.so* \ /usr/lib/libad9166.so* \ /usr/lib/pkgconfig/libad9166.pc -apt -y build-dep qt5-qmake libqt5gui5 libqt5webengine-data libqt5webkit5 +apt -y build-dep qtbase5-dev || true apt -y install build-essential gcc g++ gdb-multiarch cmake autoconf automake bison flex git wget pkg-config figlet gawk unzip libsndfile1-dev \ - libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver \ + libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver libspeechd-dev perl \ libgl1-mesa-dev libxcb-composite0-dev libxcb-cursor-dev libxcb-damage0-dev libxcb-xv0-dev \ libxcb-dpms0-dev libxcb-dri2-0-dev libxcb-ewmh-dev libxcb-imdkit-dev libxcb-xvmc0-dev \ libxcb-present-dev libxcb-record0-dev libxcb-res0-dev libxcb-xrm-dev libx11-xcb-dev libxcb-glx0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-xkb-dev libxkbcommon-x11-dev \ libxcb-screensaver0-dev libxcb-util0-dev libxcb-xf86dri0-dev libxcb-xtest0-dev -apt -y install libunwind-dev libsndfile1-dev mesa-utils* mesa-common-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev python libopenal-dev -apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev +apt -y install libunwind-dev libsndfile1-dev mesa-utils* mesa-common-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev python libopenal-dev || true +apt -y install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev || true wget https://raw.githubusercontent.com/abhiTronix/raspberry-pi-cross-compilers/master/utils/SSymlinker sed -i 's/sudo//g' SSymlinker @@ -94,7 +97,17 @@ chmod +x SSymlinker ./SSymlinker -s /usr/lib/arm-linux-gnueabihf/crt1.o -d /usr/lib/crt1.o ./SSymlinker -s /usr/lib/arm-linux-gnueabihf/crti.o -d /usr/lib/crti.o EOF +} + +move_and_extract_sysroot(){ + if [ -f $HOME/sysroot.tar.gz ]; then + mkdir -p $STAGING_AREA + sudo tar -xf $HOME/sysroot.tar.gz --directory $STAGING_AREA + rm $HOME/sysroot.tar.gz + fi +} +fix_relativelinks(){ pushd ${STAGING_AREA} wget $SYSROOT_RELATIVE_LINKS chmod +x sysroot-relativelinks.py diff --git a/ci/kuiper/docker/Dockerfile b/ci/kuiper/docker/Dockerfile new file mode 100644 index 0000000000..748bbed5d9 --- /dev/null +++ b/ci/kuiper/docker/Dockerfile @@ -0,0 +1,59 @@ +FROM --platform=linux/amd64 ubuntu:20.04 AS start +SHELL ["/bin/bash", "-c"] +ARG USER=runner +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Bucharest +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN apt-get update && \ + apt-get -y upgrade && \ + apt-get install -y apt-utils sudo git wget flex bison pkg-config make python3 pip vim +RUN groupadd -g 1000 -r $USER && \ + useradd -u 1000 -g 1000 --create-home -r $USER + +#Change password +RUN echo "$USER:$USER" | chpasswd + +#Make sudo passwordless +RUN echo "${USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-$USER && \ + usermod -aG sudo $USER && \ + usermod -aG plugdev $USER + +USER $USER +WORKDIR /home/${USER} + + + +FROM start AS sysroot_builder +ARG USER=runner +ENV DEBIAN_FRONTEND=noninteractive +COPY sysroot.tar.gz /home/${USER} +RUN git clone https://github.com/analogdevicesinc/scopy -b kuiper-worflow +WORKDIR /home/${USER}/scopy +RUN ./ci/kuiper/create_sysroot.sh \ + install_packages \ + move_and_extract_sysroot \ + fix_relativelinks +RUN ./ci/kuiper/build_qt.sh \ + install_packages \ + download_qt \ + download_crosscompiler \ + build_qt5.15.2 +RUN ./ci/kuiper/kuiper_build_process.sh \ + install_packages \ + download_cmake \ + download_crosscompiler \ + clone \ + build_deps + + + +FROM start +ARG USER=runner +ENV DEBIAN_FRONTEND=noninteractive +RUN mkdir -p /home/${USER}/sysroot +COPY --from=sysroot_builder /home/${USER}/scopy/ci/kuiper/staging/sysroot/usr /home/${USER}/sysroot/usr +COPY --from=sysroot_builder /home/${USER}/scopy/ci/kuiper/staging/sysroot/share /home/${USER}/sysroot/share +COPY --from=sysroot_builder /home/${USER}/scopy/ci/kuiper/staging/sysroot/include /home/${USER}/sysroot/include +WORKDIR /home/${USER}/sysroot +RUN ln -s usr/bin bin && ln -s usr/lib lib && ln -s usr/sbin sbin +WORKDIR /home/${USER} \ No newline at end of file diff --git a/ci/kuiper/kuiper_build_config.sh b/ci/kuiper/kuiper_build_config.sh index dcc49eade6..8926d3b04a 100644 --- a/ci/kuiper/kuiper_build_config.sh +++ b/ci/kuiper/kuiper_build_config.sh @@ -16,7 +16,8 @@ IIOEMU_BRANCH=master STAGING_AREA=$SRC_DIR/ci/kuiper/staging SYSROOT=$STAGING_AREA/sysroot -SYSROOT_DOCKER=$SRC_DIR/ci/kuiper/docker/sysroot +SYSROOT_TAR=$STAGING_AREA/sysroot.tar.gz +SYSROOT_DOCKER=$SRC_DIR/ci/kuiper/docker/sysroot.tar.gz TOOLCHAIN=$STAGING_AREA/cross-pi-gcc TOOLCHAIN_BIN=$TOOLCHAIN/bin TOOLCHAIN_HOST="arm-linux-gnueabihf" @@ -36,6 +37,7 @@ RUNTIME_ARMHF=$SRC_DIR/ci/kuiper/runtime-armhf CMAKE_OPTS=(\ -DCMAKE_SYSROOT="$SYSROOT" \ + -DQT_LOCATION="$QT_LOCATION" -DSTAGING_AREA="$STAGING_AREA" \ -DCMAKE_INSTALL_PREFIX="$SYSROOT" \ -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE" \ @@ -45,7 +47,7 @@ CMAKE_OPTS=(\ CMAKE="$CMAKE_BIN ${CMAKE_OPTS[*]}" -QT_BUILD_LOCATION=$SYSROOT/usr/local/qt5.15 +QT_BUILD_LOCATION=$QT_LOCATION QT_SYSTEM_LOCATION=/usr/local/qt5.15 CROSS_COMPILER=$STAGING_AREA/cross-pi-gcc diff --git a/ci/kuiper/kuiper_build_process.sh b/ci/kuiper/kuiper_build_process.sh index 45ea02c1cb..9a724804c5 100755 --- a/ci/kuiper/kuiper_build_process.sh +++ b/ci/kuiper/kuiper_build_process.sh @@ -1,6 +1,7 @@ #!/bin/bash set -ex +git config --global --add safe.directory $HOME/scopy SRC_DIR=$(git rev-parse --show-toplevel) source $SRC_DIR/ci/kuiper/kuiper_build_config.sh @@ -101,7 +102,6 @@ clone() { [ -d 'qwt' ] || git clone --recursive https://github.com/cseci/qwt.git -b $QWT_BRANCH qwt [ -d 'libsigrokdecode' ] || git clone --recursive https://github.com/sigrokproject/libsigrokdecode.git -b $LIBSIGROKDECODE_BRANCH libsigrokdecode [ -d 'libtinyiiod' ] || git clone --recursive https://github.com/analogdevicesinc/libtinyiiod.git -b $LIBTINYIIOD_BRANCH libtinyiiod - [ -d 'iio-emu' ] || git clone --recursive https://github.com/analogdevicesinc/iio-emu -b $IIOEMU_BRANCH iio-emu popd } @@ -240,10 +240,13 @@ build_libtinyiiod() { build_iio-emu(){ echo "### Building iio-emu - branch $IIOEMU_BRANCH" + pushd $STAGING_AREA + [ -d 'iio-emu' ] || git clone --recursive https://github.com/analogdevicesinc/iio-emu -b $IIOEMU_BRANCH iio-emu pushd $STAGING_AREA/iio-emu build_with_cmake sudo make install popd + popd } build_scopy() { @@ -269,7 +272,6 @@ build_deps(){ build_qwt build_libsigrokdecode build_libtinyiiod - build_iio-emu } create_appdir(){ @@ -278,18 +280,14 @@ create_appdir(){ EMU_BUILD_FOLDER=$STAGING_AREA/iio-emu/build - PLUGINBASE_DLL=$BUILD_FOLDER/pluginbase - CORE_DLL=$BUILD_FOLDER/core - GUI_DLL=$BUILD_FOLDER/gui - GR_UTIL_DLL=$BUILD_FOLDER/gr-util - IIOUTIL_DLL=$BUILD_FOLDER/iioutil - IIOWIDGETS_DLL=$BUILD_FOLDER/iio-widgets - COMMON_DLL=$BUILD_FOLDER/common + SCOPY_DLL=$(find $BUILD_FOLDER -maxdepth 2 -type f -name "libscopy*") PLUGINS=$BUILD_FOLDER/plugins/plugins REGMAP_XMLS=$BUILD_FOLDER/plugins/regmap/xmls TRANSLATIONS_QM=$(find $BUILD_FOLDER/translations -type f -name "*.qm") + COPY_DEPS=$SRC_DIR/ci/kuiper/copy-deps.sh + rm -rf $APP_DIR mkdir $APP_DIR mkdir -p $APP_DIR/usr/bin @@ -306,15 +304,7 @@ create_appdir(){ cp $EMU_BUILD_FOLDER/iio-emu $APP_DIR/usr/bin cp $BUILD_FOLDER/scopy $APP_DIR/usr/bin - cp $PLUGINBASE_DLL/libscopy-pluginbase.so $APP_DIR/usr/lib - cp $CORE_DLL/libscopy-core.so $APP_DIR/usr/lib - cp $IIOUTIL_DLL/libscopy-iioutil.so $APP_DIR/usr/lib - cp $IIOWIDGETS_DLL/libscopy-iio-widgets.so $APP_DIR/usr/lib - cp $GUI_DLL/libscopy-gui.so $APP_DIR/usr/lib - cp $GUI_DLL/libscopy-gr-gui.so $APP_DIR/usr/lib - cp $GUI_DLL/libscopy-sigrok-gui.so $APP_DIR/usr/lib - cp $GR_UTIL_DLL/libscopy-gr-util.so $APP_DIR/usr/lib - cp $COMMON_DLL/libscopy-common.so $APP_DIR/usr/lib + cp $SCOPY_DLL $APP_DIR/usr/lib cp -r $PLUGINS $APP_DIR/usr/share mkdir $APP_DIR/usr/share/translations @@ -324,17 +314,15 @@ create_appdir(){ cp -r $REGMAP_XMLS $APP_DIR/usr/share/plugins fi - - ./copy-deps.sh $APP_DIR/usr/bin/scopy $APP_DIR/usr/lib - ./copy-deps.sh $APP_DIR/usr/bin/iio-emu $APP_DIR/usr/lib - ./copy-deps.sh $APP_DIR/usr/bin/scopy $APP_DIR/usr/lib - ./copy-deps.sh "$APP_DIR/usr/share/plugins/*.so" $APP_DIR/usr/lib + $COPY_DEPS $APP_DIR/usr/bin/scopy $APP_DIR/usr/lib + $COPY_DEPS $APP_DIR/usr/bin/iio-emu $APP_DIR/usr/lib + $COPY_DEPS $APP_DIR/usr/bin/scopy $APP_DIR/usr/lib + $COPY_DEPS "$APP_DIR/usr/share/plugins/*.so" $APP_DIR/usr/lib cp -r $QT_LOCATION/plugins $APP_DIR/usr cp -r $SYSROOT/lib/python3.9 $APP_DIR/usr/lib cp -r $SYSROOT/share/libsigrokdecode/decoders $APP_DIR/usr/lib - # cp $SYSROOT/usr/local/lib/libqwt.so* $APP_DIR/usr/lib # cp $SYSROOT/lib/libiio.so* $APP_DIR/usr/lib # cp $SYSROOT/lib/libm2k.so* $APP_DIR/usr/lib @@ -428,6 +416,14 @@ create_appimage(){ chmod a+x $APP_IMAGE } +move_sysroot(){ + mkdir -p $STAGING_AREA + [ -d /home/runner/sysroot ] && sudo mv /home/runner/sysroot $SYSROOT +} + +move_appimage(){ + mv $APP_IMAGE $SRC_DIR/ +} for arg in $@; do $arg diff --git a/ci/kuiper/runtime-armhf b/ci/kuiper/runtime-armhf new file mode 100644 index 0000000000..d094f36552 Binary files /dev/null and b/ci/kuiper/runtime-armhf differ diff --git a/ci/kuiper/scopy.desktop b/ci/kuiper/scopy.desktop new file mode 100644 index 0000000000..705923d28c --- /dev/null +++ b/ci/kuiper/scopy.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Icon=scopy +Exec=scopy +Terminal=false +Type=Application +Categories=Science +Name=Scopy +GenericName=Oscilloscope +Comment=A software oscilloscope diff --git a/gui/res/scopy.png b/gui/res/scopy.png new file mode 100644 index 0000000000..e1fdb0e4e8 Binary files /dev/null and b/gui/res/scopy.png differ