Compilare Kxstitch con Docker

Non c’e’ cosa piu bella che poter compilare un software, attraverso dei tools che ci mettono a disposizione le varie piattaforme. In particolare tools per Linux.

Soprattutto i software opensource sono speciali perche’ possono essere valutati e crescere attraverso le comunita’ che li usano.

Ho preso il tools kxstitch per provare a compilarlo attraverso un contenitore Docker.

Creazione Dockerfile

La prima cosa da fare e’ creare il Dockerfile con tutti i tools utili per la compilazione.

FROM ubuntu:25.04

ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /app
RUN apt-get update && apt-get install -y git && \
    git clone https://github.com/KDE/kxstitch

RUN apt-get install -y software-properties-common && \
    apt-get update

RUN apt-get update && apt-get install -y \
    # Compilatore e strumenti base
    build-essential \
    cmake \
    extra-cmake-modules \
    gettext \
    pkg-config \
    shared-mime-info \
    doxygen \
    # Qt6 Base
    qt6-base-dev \
    qt6-tools-dev \
    # KDE Frameworks 6 (KF6) - Corrispondenti al tuo CMakeLists
    libkf6config-dev \
    libkf6configwidgets-dev \
    libkf6completion-dev \
    libkf6guiaddons-dev \
    libkf6i18n-dev \
    libkf6kio-dev \
    libkf6textwidgets-dev \
    libkf6widgetsaddons-dev \
    libkf6xmlgui-dev \
    libkf6doctools-dev \
    # ImageMagick (richiesto da pkg_check_modules)
    libmagick++-7.q16-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app/kxstitch/build

RUN cmake -DCMAKE_INSTALL_PREFIX=/app/dist -DQT_NO_CREATE_VERSIONLESS_TARGETS=ON ..
RUN make -j$(nproc)
RUN make install

CMD ["echo", "L'eseguibile è in: /app/dist"]

Questo pezzo di codice che chiameremo Dockerfile ci servira’ per creare l’immagine di builder.

Creazione Makefile

Il Makefile e’ una chicca che deve esserci per automatizzare tutto il procedimento di compilazione.

all: build install

build:
	docker build -t kxstitch-builder .

install:
	mkdir -p ./output_kxstitch
	docker run --rm -t \
		-v $(PWD):/tools \
  		-v $(PWD)/output_kxstitch:/app/dist \
    		kxstitch-builder \
    		/bin/bash -c "make install & /tools/collect.sh"

Come vedi si compone di un build e di un install. Basta scrivere make e abbiamo il nostro tools compilato e pronto.

Salvare Tutte le Librerie In File Unico

Kxstitch si esegue principalmente su sistemi operativi Linux che hanno interfaccia grafica KDE.

Con collect.sh si salvano tutte le librerie grafiche vicino al sorgente bin/kxstitch.

#!/bin/bash

# 1. Entra nella cartella di build e compila
mkdir -p /app/build
cd /app/build

# 2. Crea la cartella per le librerie dentro la cartella di output
mkdir -p /app/dist/lib
mkdir -p /app/dist/lib/platforms

# 3. Trova tutte le dipendenze (.so) e copiale
echo "Raccolta librerie in corso..."
ldd /app/dist/bin/kxstitch | grep "=> /" | grep -v "libc.so\|libdl.so\|libm.so\|libpthread.so" | awk '{print $3}' | xargs -I '{}' cp '{}' /app/dist/lib/

# 4. Copia il plugin fondamentale per il display (XCB)
cp /usr/lib/x86_64-linux-gnu/qt6/plugins/platforms/libqxcb.so /app/dist/lib/platforms/

echo "Compilazione e raccolta completate in /app/dist"

Esecuzione Kxstitch

Ora passiamo all’esecuzione di kxstitch. Si crea un file run_kxstitch.sh.

!/bin/bash

# Ottiene il percorso assoluto della cartella dove si trova questo script
HERE="$(dirname "$(readlink -f "$0")")"

# 1. Comunica al sistema di cercare le librerie nella cartella 'lib' locale
export LD_LIBRARY_PATH="$HERE/lib:$LD_LIBRARY_PATH"

# 2. Indica a Qt dove trovare i plugin (come xcb per lo schermo)
export QT_QPA_PLATFORM_PLUGIN_PATH="$HERE/lib/platforms"

# 3. Indica a KDE/Qt dove trovare icone, traduzioni e dati in 'share'
export XDG_DATA_DIRS="$HERE/share:$XDG_DATA_DIRS"

# 4. Opzionale: migliora l'integrazione delle icone su GNOME
export QT_QPA_PLATFORMTHEME=kde

# Avvia l'eseguibile passando eventuali argomenti (es. il nome di un file da aprire)
echo "Avvio di KXStitch da $HERE..."
"$HERE/bin/kxstitch" "$@"

Tutti i file vanno messi nella stessa cartella.

bbiamo quindi visto come compilare un tools come kxstitch con le librerie grafiche KDE.

Kxstitch compilato con immagine di maria montessori

Lascia un commento