UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    flare - need help - package did not install

    Scheduled Pinned Locked Moved Other Projects
    3 Posts 1 Posters 69 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • D Online
        ds2k5
        last edited by

        Using Linux Mint 22.2 amd64

        wanna get flare on ubuntu touch
        was able to build a package but can not install it

        here is what I did:

        git clone https://gitlab.com/schmiddi-on-mobile/flare

        modify and files

        sudo apt-get install librust-gsk4-sys-dev
        sudo apt-get install protobuf-compiler
        sudo apt-get install librust-libadwaita-sys-dev
        sudo apt-get install librust-libadwaita-sys-de
        sudo apt-get install librust-libadwaita-sys-dev
        sudo apt install pkg-config libgtksourceview-5-dev
        sudo apt install pkg-config libadwaita-1-dev

        sudo apt-get install libxml2-utils
        sudo apt install python3-pip

        pip3 install --user clickable-ut pip3 install --user clickable-ut

        sudo apt install -y
        meson ninja-build cargo rustc
        libgtk-4-dev libadwaita-1-dev
        libglib2.0-dev libsqlite3-dev
        libssl-dev libdbus-1-dev
        gettext blueprint-compiler
        pkg-config

        ./build-click-package.sh armhf

        ./build-click-package.sh arm64

        ./build-click-package.sh aarch64

        Copy to device

        scp build/armhf/*.click phablet@device-ip:~/

        SSH to device and install

        ssh phablet@device-ip
        pkcon install-local --allow-untrusted *.click

        example:

        pkcon install-local --allow-untrusted flare.schmidhuberj_0.17.2_arm64.click

        at this point the install hang

        4c0a1d3b-b488-4b13-bb10-9f06dfd840b1-image.png

        here is the hole folder as zip

        https://gitlab.com/-/project/37464215/uploads/e1d86ce5da7c42508c1fee6e007d7a83/flare.tar.gz

        D 1 Reply Last reply Reply Quote 0
        • D Online
          ds2k5 @ds2k5
          last edited by

          I could cross-build now before it was amd64 insted of aarch64

          but did not start because lib: libgtksourceview-5.so.0 missing

          D 1 Reply Last reply Reply Quote 0
          • CiberSheepC CiberSheep moved this topic from General
          • D Online
            ds2k5 @ds2k5
            last edited by ds2k5

            could compile it
            installed it

            but when run direct on the smartphone it hang

            if login ssh -CY phablet@10.42.0.1

            and run then, gut the GUI

            Dockerfile

            FROM ubuntu:24.04
            
            ENV DEBIAN_FRONTEND=noninteractive
            
            # First, update and install basic tools
            RUN apt-get update && apt-get install -y \
                curl \
                ca-certificates \
                && rm -rf /var/lib/apt/lists/*
            
            # Configure repositories properly
            RUN rm /etc/apt/sources.list.d/ubuntu.sources && \
                echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse" > /etc/apt/sources.list && \
                echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ noble-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
                echo "deb [arch=amd64] http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse" >> /etc/apt/sources.list && \
                echo "" >> /etc/apt/sources.list && \
                echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble main restricted universe multiverse" >> /etc/apt/sources.list && \
                echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
                echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main restricted universe multiverse" >> /etc/apt/sources.list
            
            # Enable arm64 architecture
            RUN dpkg --add-architecture arm64
            
            # Update and install dependencies
            RUN apt-get update && apt-get install -y \
                build-essential \
                crossbuild-essential-arm64 \
                git \
                meson \
                ninja-build \
                pkg-config \
                blueprint-compiler \
                desktop-file-utils \
                gobject-introspection \
                libgirepository1.0-dev \
                gir1.2-gtk-4.0 \
                gir1.2-adw-1 \
                gir1.2-gtksource-5 \
                libglib2.0-bin \
                libglib2.0-dev \
                protobuf-compiler \
                libglib2.0-dev:arm64 \
                libgtk-4-dev:arm64 \
                libadwaita-1-dev:arm64 \
                libpango1.0-dev:arm64 \
                libgdk-pixbuf-2.0-dev:arm64 \
                libcairo2-dev:arm64 \
                libgtksourceview-5-dev:arm64 \
                gettext \
                python3-pip \
                && rm -rf /var/lib/apt/lists/*
            
            # Fix: Replace ARM64 glib-compile-schemas with wrapper to native version
            RUN if [ -f /usr/lib/aarch64-linux-gnu/glib-2.0/glib-compile-schemas ]; then \
                    mv /usr/lib/aarch64-linux-gnu/glib-2.0/glib-compile-schemas \
                       /usr/lib/aarch64-linux-gnu/glib-2.0/glib-compile-schemas.arm64 && \
                    echo '#!/bin/bash\nexec /usr/lib/x86_64-linux-gnu/glib-2.0/glib-compile-schemas "$@"' \
                    > /usr/lib/aarch64-linux-gnu/glib-2.0/glib-compile-schemas && \
                    chmod +x /usr/lib/aarch64-linux-gnu/glib-2.0/glib-compile-schemas; \
                fi
            
            
            # Add this near the end of your Dockerfile, before WORKDIR
            RUN pip3 install --break-system-packages clickable-ut
            
            # Install Rust
            RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
            ENV PATH="/root/.cargo/bin:${PATH}"
            
            # Add aarch64 Rust target
            RUN rustup target add aarch64-unknown-linux-gnu
            
            # Configure Cargo
            RUN mkdir -p /root/.cargo && \
                echo '[target.aarch64-unknown-linux-gnu]' >> /root/.cargo/config.toml && \
                echo 'linker = "aarch64-linux-gnu-gcc"' >> /root/.cargo/config.toml
            
            # Set pkg-config paths for Cargo
            ENV PKG_CONFIG_SYSROOT_DIR=/
            ENV PKG_CONFIG_PATH=
            ENV PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig
            ENV PKG_CONFIG_ALLOW_CROSS=1
            
            # CRITICAL: Force Cargo to build for aarch64
            ENV CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu
            
            # Create simpler cargo wrapper
            RUN mv /root/.cargo/bin/cargo /root/.cargo/bin/cargo-real && \
                cat > /root/.cargo/bin/cargo << 'EOFWRAPPER'
            #!/bin/bash
            case "$1" in
                build)
                    if [[ "$*" != *"--target"* ]]; then
                        /root/.cargo/bin/cargo-real "$@" --target aarch64-unknown-linux-gnu
                        result=$?
                        if [ $result -eq 0 ] && [ -n "$CARGO_TARGET_DIR" ] && [ -f "$CARGO_TARGET_DIR/aarch64-unknown-linux-gnu/release/flare" ]; then
                            mkdir -p "$CARGO_TARGET_DIR/release"
                            cp "$CARGO_TARGET_DIR/aarch64-unknown-linux-gnu/release/flare" "$CARGO_TARGET_DIR/release/flare"
                        fi
                        exit $result
                    fi
                    ;;
            esac
            exec /root/.cargo/bin/cargo-real "$@"
            EOFWRAPPER
            
            RUN chmod +x /root/.cargo/bin/cargo
            
            # Create pkg-config wrapper
            RUN echo '#!/bin/bash\n\
            export PKG_CONFIG_PATH=\n\
            export PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig\n\
            export PKG_CONFIG_SYSROOT_DIR=/\n\
            exec pkg-config "$@"' > /usr/local/bin/aarch64-linux-gnu-pkg-config && \
                chmod +x /usr/local/bin/aarch64-linux-gnu-pkg-config
            
            WORKDIR /build
            

            aarch64-cross.txt

            [binaries]
            c = 'aarch64-linux-gnu-gcc'
            cpp = 'aarch64-linux-gnu-g++'
            ar = 'aarch64-linux-gnu-ar'
            strip = 'aarch64-linux-gnu-strip'
            pkg-config = 'aarch64-linux-gnu-pkg-config'
            rust = ['rustc', '--target', 'aarch64-unknown-linux-gnu']
            
            [properties]
            sys_root = '/usr/aarch64-linux-gnu'
            
            [built-in options]
            pkg_config_path = '/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig'
            
            [host_machine]
            system = 'linux'
            cpu_family = 'aarch64'
            cpu = 'aarch64'
            endian = 'little'
            
            [build_machine]
            system = 'linux'
            cpu_family = 'x86_64'
            cpu = 'x86_64'
            endian = 'little'
            

            docker build -t flare-builder .

            [docker run --rm -v $(pwd):/build flare-builder bash -c "
            # Install clickable in the container
            pip3 install clickable-ut

            # Build the click package
            cd /build
            clickable build --arch arm64
            clickable click-build --arch arm64
            

            "

            docker run --rm -v $(pwd):/build flare-builder bash -c "
            cd /build

            apt-get update && apt-get install -y click patchelf
            
            rm -rf click-package
            mkdir -p click-package/usr/bin
            mkdir -p click-package/lib/aarch64-linux-gnu
            
            # Copy binary
            cp builddir/src/flare click-package/usr/bin/flare-bin
            chmod +x click-package/usr/bin/flare-bin
            
            # Explicitly copy ALL required GTK4/Libadwaita libraries
            echo 'Copying libraries explicitly...'
            
            # Copy each library with all its versions
            cp -v /usr/lib/aarch64-linux-gnu/libgtksourceview-5.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || echo 'libgtksourceview-5 not found'
            cp -v /usr/lib/aarch64-linux-gnu/libgtk-4.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || echo 'libgtk-4 not found'
            cp -v /usr/lib/aarch64-linux-gnu/libadwaita-1.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || echo 'libadwaita-1 not found'
            cp -v /usr/lib/aarch64-linux-gnu/libgraphene-1.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || echo 'libgraphene not found'
            cp -v /usr/lib/aarch64-linux-gnu/libpangocairo-1.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libpango-1.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libharfbuzz.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libgdk_pixbuf-2.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libcairo-gobject.so.2* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libcairo.so.2* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libvulkan.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libgio-2.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libfribidi.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libfontconfig.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libfreetype.so.6* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libpixman-1.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libpng16.so.16* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libxcb.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libxcb-render.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libxcb-shm.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libX11.so.6* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libXrender.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libXext.so.6* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libwayland-client.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libwayland-cursor.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libwayland-egl.so.1* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            cp -v /usr/lib/aarch64-linux-gnu/libepoxy.so.0* click-package/lib/aarch64-linux-gnu/ 2>/dev/null || true
            
            # Set RPATH
            patchelf --set-rpath '\$ORIGIN/../../lib/aarch64-linux-gnu' click-package/usr/bin/flare-bin
            
            # Create wrapper
            cat > click-package/usr/bin/flare << 'WRAPPER'
            

            #!/bin/bash
            SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
            APP_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"

            export LD_LIBRARY_PATH="$APP_ROOT/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH"
            export QT_QPA_PLATFORM=ubuntumirclient
            export MIR_SOCKET="${MIR_SOCKET:-/run/user/$(id -u)/mir_socket}"

            if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
            export $(dbus-launch)
            fi

            exec "$SCRIPT_DIR/flare-bin" "$@"
            WRAPPER

            chmod +x click-package/usr/bin/flare
            
            # Copy icon
            find data -name '*Flare*.svg' -exec cp {} click-package/flare.svg \; -quit
            
            # Create desktop file
            cat > click-package/flare.desktop << 'DESKTOP'
            

            [Desktop Entry]
            Name=Flare
            Comment=Signal messaging client
            Exec=usr/bin/flare
            Icon=flare.svg
            Terminal=false
            Type=Application
            Categories=Network;InstantMessaging;
            X-Ubuntu-Touch=true
            DESKTOP

            # Create manifest
            cat > click-package/manifest.json << 'MANIFEST'
            

            {
            "name": "flare.dennisschweiger",
            "title": "Flare",
            "version": "0.18.6",
            "maintainer": "Dennis Schweiger dennis@example.com",
            "architecture": "arm64",
            "description": "Signal messaging client",
            "framework": "ubuntu-sdk-20.04",
            "hooks": {
            "flare": {
            "apparmor": "flare.apparmor",
            "desktop": "flare.desktop"
            }
            }
            }
            MANIFEST

            # Create apparmor
            cat > click-package/flare.apparmor << 'APPARMOR'
            

            {
            "template": "unconfined",
            "policy_groups": [
            "networking",
            "audio"
            ]
            }
            APPARMOR](link url)

            cd click-package
            
            ```
            

            echo ''
            echo '=== Bundled libraries (first 30) ==='
            ls -lah lib/aarch64-linux-gnu/ | head -30
            echo ''
            echo 'Total library files:'
            ls -1 lib/aarch64-linux-gnu/ | wc -l
            echo ''
            echo 'Verifying libgtksourceview-5:'
            ls -la lib/aarch64-linux-gnu/libgtksourceview* || echo 'NOT FOUND!'

            # Build
            click build . --no-validate
            
            mv *.click ../
            cd ..
            
            echo ''
            echo '=== Package created ==='
            ls -lh *.click
            

            "

            
            sudo click unregister --user=phablet flare.dennisschweiger 2>/dev/null || true
            sudo click install --user=phablet --allow-unauthenticated /home/phablet/flare.dennisschweiger_0.18.6_arm64
            1 Reply Last reply Reply Quote 0
            • First post
              Last post