Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 5745d4f427915b50890b1922d3d00f5a2abfb638
  • master par défaut protégée
  • nodejs
3 résultats

main.py

Blame
  • package_appimages.bash 2,61 Kio
    #!/usr/bin/env bash
    set -xe
    [ ! -f /build/.gitignore ] && {
        echo "The appimage folder is not mounted in the docker"
        exit 1
    }
    [ ! -d squashfs-root ] && {
        echo "The appimage utilities where not deployed..."
        exit 1
    }
    
    export ARCH=$(arch)
    export PATH="$PWD/squashfs-root/usr/bin:$PATH"
    export LD_LIBRARY_PATH="$PWD/squashfs-root/usr/lib:$LD_LIBRARY_PATH"
    export QMAKE=/usr/lib/qt6/bin/qmake6
    
    function join_by() {
        local d=${1-} f=${2-}
        if shift 2; then
            printf %s "$f" "${@/#/$d}"
        fi
    }
    
    function deploy() {
        local EXEC=${1,,}
        local WITHQTPLUGIN="$2"
    
        local  EXTRA_PLATFORM_PLUGINS="libqxcb.so;libqwayland-egl.so;libqwayland-generic.so;"
        export EXTRA_PLATFORM_PLUGINS
    
        local EXCLUDE_LIBS="libgdk_pixbuf libpango libcairo libgio libglib libgmodule libgobject libgthread libX11-xcb libxcb-"
        local EXCLUDE_LIBS="-name *$(join_by "* -or -name *" $EXCLUDE_LIBS)*"
    
        local qtPlugin=()
        if [[ "x$WITHQTPLUGIN" == "x1" ]]; then
            qtPlugin+=(--plugin qt)
        fi
    
        # Will do most of the work
        linuxdeploy -v1 --appdir ${EXEC^} -e target/release/${EXEC} \
            -i ${EXEC}/${EXEC}.png -d ${EXEC}/${EXEC}.desktop "${qtPlugin[@]}"
    
        # Handle aftermath things here, we force copy the qt plugins for wayland and remove unwanted
        # libs... NOTE: For now we force the xcb platform because of troubles with wayland...
        mkdir -p ${EXEC^}/apprun-hooks/
        find ${EXEC^}/usr/lib/ -type f -and \( ${EXCLUDE_LIBS} \) -delete
        cp LICENSE CHANGELOG.md CONTRIBUTING.md ${EXEC^}/
        install -Dm644 ${EXEC}/${EXEC}.appdata.xml ${EXEC^}/usr/share/metainfo/${EXEC}.appdata.xml
        case ${*:2} in
            *qt*)
                cp -rf /usr/lib/x86_64-linux-gnu/qt6/plugins/wayland-shell-integration ${EXEC^}/usr/plugins/wayland-shell-integration
                for SHELL in ${EXEC^}/usr/plugins/wayland-shell-integration/*; do
                    patchelf --force-rpath --set-rpath \$ORIGIN/../../lib:\$ORIGIN ${SHELL}
                done
                ;;
            *);;
        esac
    
        # Custom AppRun script!
        unlink ${EXEC^}/AppRun \
            && touch ${EXEC^}/AppRun \
            && chmod +x ${EXEC^}/AppRun
    cat > ${EXEC^}/AppRun <<EOF
    #!/usr/bin/env bash
    set -e
    this_dir="\$(readlink -f "\$(dirname "\$0")")"
    [ ! -n "\$(find "\$this_dir"/apprun-hooks/ -maxdepth 0 -type d -empty 2>/dev/null)" ] \
        && [ -d "\$this_dir"/apprun-hooks/ ] \
        && {
            for HOOK in "\$this_dir"/apprun-hooks/*; do
                source "\$HOOK"
            done
    }
    exec "\$this_dir/usr/bin/${EXEC}" \$@
    EOF
    
        # Pack the AppImage
        appimagetool -v --comp xz ${EXEC^}
        mv ${EXEC^}-$(arch).AppImage /build/
    }
    
    deploy lkt
    deploy amadeus
    deploy lektord 1