Compiler gtk3sermo 1.0.0 (GTK 3)

Dépendances requises

# Debian, Ubuntu et dérivées
sudo apt-get install \
  libgtk-3-dev libvte-2.91-dev \
  flex bison \
  autoconf automake \
  pkg-config gcc

# Arch Linux
sudo pacman -S gtk3 vte3 flex bison autoconf automake pkgconf gcc

Compilation standard

cd gtk3sermo_1.1.4/
./autogen.sh
./configure
make -j$(nproc)
sudo make install

Options de compilation

Mode debug (active DEBUG_TRANSITS, DEBUG_CONTENT, PIP_DEBUG)

./configure --enable-debug
make -j$(nproc)
# Puis activer les messages g_debug() à l'exécution :
G_MESSAGES_DEBUG=all ./src/gtk3sermo --debug --file=mon_dialog.xml

Sans support terminal VTE

./configure --without-vte
make -j$(nproc)

Construire un paquet .deb (Debian)

Dépendances supplémentaires pour le packaging

sudo apt-get install dpkg-dev debhelper devscripts

Méthode rapide (make deb)

cd gtk3sermo_1.1.4/
./autogen.sh    # génère configure
make deb        # appelle dpkg-buildpackage -us -uc -b

Le paquet .deb est créé dans le répertoire parent (../) :

../gtk3sermo_1.1.4-1_amd64.deb

Installation du paquet

sudo dpkg -i ../gtk3sermo_1.1.4-1_amd64.deb
# ou avec gestion des dépendances manquantes :
sudo apt-get install -f ../gtk3sermo_1.1.4-1_amd64.deb

Méthode complète (dpkg-buildpackage)

cd gtk3sermo_1.1.4/
NOCONFIGURE=1 ./autogen.sh    # ne lance pas ./configure
dpkg-buildpackage -us -uc -b  # -us/-uc = pas de signature GPG

Nettoyage des artefacts de build

make deb-clean
# lance debian/rules clean, puis supprime
# ../gtk3sermo_*.deb .changes .buildinfo .dsc .tar.*

Vérification de la sécurité du binaire

# Après make install (ou dans src/ après make)
checksec --file=/usr/bin/gtk3sermo
# Résultat attendu :
# RELRO: Full | Stack: Canary | NX: Enabled | PIE: Enabled

Test rapide

echo '<window><vbox><text><label>Hello GTK3!</label></text>
<button><label>Quitter</label><action>EXIT:ok</action></button>
</vbox></window>' | gtkdialog --stdin

En cas d'erreur de compilation résiduelle

  1. GtkBuilder signal connectgtk_builder_connect_signals_full() a une signature différente de glade_xml_signal_autoconnect_full() → Voir src/glade_support.c

  2. vte_terminal_spawn_sync(), prend un paramètre GCancellable* supplémentaire → Voir src/widget_terminal.c

  3. autoreconf introuvable, installer autoconf automake : bash sudo apt-get install autoconf automake