Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » GiteaPC : Installer et mettre à jour automatiquement des projets Gitea
Lephenixnoir En ligne Administrateur Points: 25843 Défis: 174 Message

GiteaPC : Installer et mettre à jour automatiquement des projets Gitea

Posté le 01/01/2021 23:19

Ce topic fait partie de la série de topics du fxSDK.

GiteaPC est un programme Python qui automatise l'installation de projets de la la forge Git de Planète Casio. Son usage principal est d'installer et mettre à jour le fxSDK de façon automatique.

Le code source est sur le dépôt Git Lephenixnoir/GiteaPC. Merci notamment à Breizh_craft, Dark Storm et Cakeisalie5 qui m'ont bien aidé à cerner un design plus élégant.

Installation de GiteaPC

Pour Mac OS : GiteaPC fonctionne, mais il y a quelques ajustements à faire. Voyez le guide de Choukas.

Il y a quelques dépendances à installer. Voici la commande pour les distributions les plus communes sur Planète Casio : copiez la commande (la ligne après le %) dans un terminal puis appuyez sur Entrée (votre mot de passe sera demandé).

# Si vous avez Debian, Ubuntu, WSL sous Windows, Linux Mint ou d'autres dérivés de Debian :
% sudo apt install curl git python3 build-essential cmake pkg-config

# Si vous avez Arch Linux, Manjaro, ou d'autres dérivés d'Arch Linux :
% sudo pacman -S curl git python3 gcc make cmake pkgconf

Ensuite vous pouvez installer GiteaPC en une ligne avec la commande suivante :

% curl "https://git.planet-casio.com/Lephenixnoir/GiteaPC/raw/branch/master/install.sh" -o /tmp/giteapc-install.sh && bash /tmp/giteapc-install.sh

Vous pouvez consulter le script ici ou faire l'installation manuelle depuis le dépôt Lephenixnoir/GiteaPC si vous préférez ça.

Vous aurez probablement besoin de mettre à jour votre PATH. Si vous ne connaissez pas le PATH ou avez du mal à le situer, vous pouvez lire le Tutoriel du Mercredi #20 sur ce sujet. Si ça se produit, GiteaPC vous demandera de modifier le PATH en ces termes :

<giteapc> In order to use programs installed by GiteaPC, you will need to add their
<giteapc> install folder to your PATH. This can be done automatically when you log
<giteapc> in by adding the following command to your startup file:
<giteapc>
<giteapc>   export PATH="$PATH:/home/el/.local/bin"
<giteapc>
<giteapc> -> Press Enter to add this command to /home/el/.profile, or
<giteapc> -> Type another file name to add this command to, or
<giteapc> -> Type "-" to skip setting the PATH entirely.
>

Si vous n'utilisez pas votre .profile, .bashrc ou équivalent (ou ne savez pas ce que c'est), appuyez sur Entrée puis fermez et rouvrez votre session (ou redémarrez votre ordinateur). Si vous utilisez .profile ou équivalent, alors vous comprenez certainement la question, faites ce que vous préférez.

Pour vérifier que l'installation a fonctionné, lancez la commande giteapc. Vous devez obtenir un message d'aide coloré avec la liste des commandes. giteapc peut se mettre à jour tout seul donc vous n'aurez plus besoin de refaire ce travail d'installation.

Installation du fxSDK avec GiteaPC

Le fxSDK et toutes les bibliothèques qui vont avec (que je gère, du moins) peuvent être obtenues avec GiteaPC. Le fxSDK dépend de quelques bibliothèques dont vous aurez besoin (même formule que précédemment, attention à bien copier la commande complète d'un coup même si elle s'affiche sur plusieurs lignes) :

# Debian, Ubuntu, WSL sous Windows, Linux Mint, dérivés de Debian :
% sudo apt install python3-pil libusb-1.0-0-dev libudev-dev libsdl2-dev libpng-dev libncurses-dev
# En option pour fxlink -s :
% sudo apt install libudisks2-dev libglib2.0-dev

# ArchLinux, Manjaro, dérivés d'ArchLinux :
% sudo pacman -S python-pillow libusb sdl2 ncurses patch
# En option pour fxlink -s :
% sudo pacman -S udisks2

Avec ces dépendances, vous pouvez obtenir un environnement de développement avec gint et le fxSDK en quelques étapes. Prenez garde aux cas particuliers suivants :

  • Si jamais vous avez déjà une version de binutils/GCC installée après le fxSDK 2.9 et que vous ne voulez pas les recompiler (ce qui prend ~30 minutes), vous pouvez ajouter :any après Lephenixnoir/sh-elf-binutils et Lephenixnoir/sh-elf-gcc.
  • Si votre Linux n'utilise pas UDisks2 comme gestionnaire de périphériques (vous pouvez tester si la commande udisksctl existe), ajoutez :noudisks2 après Lephenixnoir/fxsdk. Cela désactivera l'option -s de fxlink qui utilise UDisks2 pour copier des fichiers vers les Graph 35+E II et Graph 90+E depuis la ligne de commande.
  • Si vous avez déjà une installation du fxSDK installée sans GiteaPC ou avant la version fxSDK 2.9, vous devez la supprimer avant de commencer, sinon tout va interférer et ce sera le chaos !

Cela étant vu, on commence par installer les outils principaux du fxSDK et le cross-compilateur. Pendant qu'on y est, on installe aussi le debugger (optionnel) :

% giteapc install Lephenixnoir/fxsdk Lephenixnoir/sh-elf-binutils Lephenixnoir/sh-elf-gcc
% giteapc install Lephenixnoir/sh-elf-gdb

Ensuite on installe la lib mathématique, la libc, et on repasse sur GCC pour obtenir la lib C++ :

% giteapc install Lephenixnoir/OpenLibm Vhex-Kernel-Core/fxlibc
% giteapc install Lephenixnoir/sh-elf-gcc

Et enfin on installe gint (et si vous le voulez d'autres libs) :

% giteapc install Lephenixnoir/gint # Lephenixnoir/libprof Slyvtt/cZlib1_2_5 ...

À partir de là vous pouvez coder des add-ins.

Vous pouvez toujours consulter les dépôts clonés par GiteaPC avec la commande giteapc show -p :

cd $(giteapc show -p Lephenixnoir/fxsdk)

Si vous voulez juste coder avec le fxSDK, jetez un œil à la section suivante pour les mises à jour puis vous pouvez arrêter de lire. Le reste de ce topic parle des détails de GiteaPC, qui ne sont pas importants pour juste programmer des add-ins.

Enrichir et mettre à jour une installation du fxSDK avec GiteaPC

Pour installer un nouveau dépôt qui supporte GiteaPC, par exemple la bibliothèque libprof, utilisez giteapc install.

giteapc install Lephenixnoir/libprof

Vous pouvez tout mettre à jour avec giteapc install -u. GiteaPC vous autorise à donner les noms des dépôts sans leur propriétaire s'il n'y a pas d'ambiguïté, ce qui est un peu risqué quand il s'agit des dépôts distants (à l'installation) mais pas trop quand il s'agit de dépôts locaux (durant une mise à jour).

giteapc install -u sh-elf-binutils sh-elf-gcc fxsdk gint libprof

Et voilà, tout est à jour.

Instructions d'utilisations plus précises

Lister et rechercher des dépôts

Utilisez giteapc list -r pour lister les dépôts de la forge qui peuvent être installés avec Gitea, et giteapc list pour lister tous les dépôts que vous avez sur votre ordinateur.

Si un argument supplémentaire est donné, il servira à filtrer par nom et par description. Par exemple, giteapc list -r gcc.

Installer et mettre à jour des dépôts

Utilisez giteapc install pour installer un dépôt et giteapc install -u pour mettre à jour un dépôt. La différence c'est qu'avec -u les nouveautés seront téléchargées avant l'installation (git pull).

Installer des versions spécifiques

Les noms des dépôts dans les commandes install et build acceptent deux suffixes : @version et :config (dans cet ordre). Le premier permet de sélectionner (git checkout) une branche ou un tag. Le second permet de modifier les options de compilation si le dépôt en supporte (par exemple binutils et GCC ont une configuration :any discutée précédemment).

Par exemple, pour installer spécifiquement binutils 2.35.1, on peut utiliser la commande ci-dessous. Notez que du coup le dépôt est figé à la version 2.35.1 et ne sera pas mis à jour (même avec -u) tant que vous n'installerez pas explicitement sh-elf-binutils@master pour revenir sur la branche principale.

giteapc install Lephenixnoir/sh-elf-binutils@2.35.1

Pour installer binutils mais utiliser une version déjà installée au bon endroit sans le recompiler, on peut utiliser la configuration :any.

giteapc install Lephenixnoir/sh-elf-binutils:any

Commandes fines

giteapc fetch permet de clôner ou mettre à jour (git fetch) un dépôt sans toucher à rien.
giteapc build permet de configure/build un dépôt sans l'installer ou de recompiler sans reconfigurer.
giteapc show permet de voir les versions disponibles d'un dépôt local ou distant.

Voyez l'aide (giteapc --help) pour le détail des options.

Désinstaller un dépôt

giteapc uninstall désinstalle un dépôt et supprime le clône local, giteapc uninstall -k déinstalle le dépôt mais garde le clône local. Les dépendances ne sont pas vérifiées durant une désinstallation donc gardez un œil dessus.

Créer un projet supportant GiteaPC

Pour pouvoir être installé par GiteaPC, un dépôt doit avoir les choses suivantes :

• Le topic giteapc sur le dépôt (qu'on peut ajouter en cliquant sur le lien "Manage topics" sur la page principale du dépôt) : c'est ce qui permet au dépôt d'apparaître dans giteapc list -r.

• Fournir un giteapc.make qui contient quelques métadonnées, qui inclut optionnellement giteapc-config.make et fournit quatre cibles configure, build, install et uninstall (plus de détails ci-dessous).

• Avoir giteapc-config.make dans le .gitignore. giteapc-config.make sera un lien symbolique pointant vers la configuration courante, laquelle sera nommée giteapc-config-X.make pour :X.

Le giteapc.make doit ressembler à ça :

# giteapc: version=1
# giteapc: depends=Lephenixnoir/sh-elf-gcc

-include giteapc-config.make

configure:
    ...
build:
    ...
install:
    ...
uninstall:
    ...

.PHONY: configure build install uninstall

D'abord les métadonnées ; il y en a deux pour l'instant : version (doit être "1") et depends (liste des dépendances). Ensuite l'inclusion de giteapc-config.make quand une configuration est demandée. Et enfin, les règles configure, build, install et uninstall, dans lesquelles vous pouvez lancer le code qui va bien.

Quelques exemples : sh-elf-gcc, fxsdk, Template-gint-library.


Précédente 1, 2, 3 ··· 10 ··· 13, 14, 15, 16
Dimartino Hors ligne Maître du Puzzle Points: 349 Défis: 2 Message

Citer : Posté le 29/09/2024 18:59 | #


D'accord

Merci beaucoup !
Mon projet du moment : Memen'Casio
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 07/07/2026 20:25 | # | Fichier joint


Coucou par ici !

J'ai eu un souci avec cette ligne de commande :
% giteapc install Lephenixnoir/sh-elf-gcc


qui m'a renvoyé :

<giteapc> Fetching Lephenixnoir/sh-elf-gcc...
<giteapc> Fetching Lephenixnoir/sh-elf-binutils...
<giteapc> Fetching Lephenixnoir/fxsdk...
<giteapc> Will install: Lephenixnoir/fxsdk, Lephenixnoir/sh-elf-binutils, Lephenixnoir/sh-elf-gcc
<giteapc> Is that okay (Y/n)? y
<giteapc> Lephenixnoir/fxsdk: Configuring
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/sha-chan/.local/share/giteapc/Lephenixnoir/fxsdk/build
<giteapc> Lephenixnoir/fxsdk: Building
make[1] : on entre dans le répertoire « /home/sha-chan/.local/share/giteapc/Lephenixnoir/fxsdk/build »
[ 22%] Built target fxgxa
[ 22%] Built target fxg1a
[ 25%] Built target fxsdk
[ 45%] Built target libfxlink
[ 93%] Built target fxlink
[100%] Built target fxsdk-gdb-bridge
make[1] : on quitte le répertoire « /home/sha-chan/.local/share/giteapc/Lephenixnoir/fxsdk/build »
<giteapc> Lephenixnoir/fxsdk: Installing
make[1] : on entre dans le répertoire « /home/sha-chan/.local/share/giteapc/Lephenixnoir/fxsdk/build »
[ 22%] Built target fxgxa
[ 22%] Built target fxg1a
[ 25%] Built target fxsdk
[ 45%] Built target libfxlink
[ 93%] Built target fxlink
[100%] Built target fxsdk-gdb-bridge
Install the project...
-- Install configuration: ""
make[1] : on quitte le répertoire « /home/sha-chan/.local/share/giteapc/Lephenixnoir/fxsdk/build »
<giteapc> Lephenixnoir/fxsdk: Done! :D
<giteapc> Lephenixnoir/sh-elf-binutils: Configuring
<sh-elf-binutils> binutils 2.42 already installed, skipping rebuild
<giteapc> Lephenixnoir/sh-elf-binutils: Building
<giteapc> Lephenixnoir/sh-elf-binutils: Installing
<giteapc> Lephenixnoir/sh-elf-binutils: Done! :D
<giteapc> Lephenixnoir/sh-elf-gcc: Configuring
<sh-elf-gcc> After installing the libc, rebuild here for libstdc++-v3
<sh-elf-gcc> Found gcc-14.1.0.tar.xz, skipping download
<sh-elf-gcc> Found gcc-14.1.0, skipping extraction
gettext-0.22.tar.gz: Réussi
gmp-6.2.1.tar.bz2: Réussi
mpfr-4.1.0.tar.bz2: Réussi
mpc-1.2.1.tar.gz: Réussi
isl-0.24.tar.bz2: Réussi
All prerequisites downloaded successfully.
<sh-elf-gcc> Configuring gcc...
<giteapc> Lephenixnoir/sh-elf-gcc: Building
<sh-elf-gcc> Compiling gcc (usually 10-20 minutes)...
error: build failed, please check /home/sha-chan/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/build/giteapc-build.log o(x_x)o
make: *** [/home/sha-chan/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/giteapc.make:13: build] Error 1
error: error 2 in command: make -f /home/sha-chan/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/giteapc.make build


Le fichier log giteapc-build.log est en pièce jointe à ce message. Je l'ai regardé, mais sans comprendre ce qui n'avait pas fonctionné.

Si quelqu'un a une idée de ce qu'il s'est passé je suis preneur !

Pour info, le GCC de mon PC est plus récent que celui qu'essaye de compiler giteapc (version 16.1.1 sur mon ordi contre 14.1.0). J'ai cmake version 4.3.3 et make version 4.4.1.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Slyvtt Hors ligne Maître du Puzzle Points: 2971 Défis: 17 Message

Citer : Posté le 07/07/2026 20:46 | #


ça vient justement de gcc 16 qui a changé la compilation par défaut de C++17 à C++20 et ça change divers trucs qui passaient creme avant.

Essaye de changer ça : https://git.planet-casio.com/Lephenixnoir/sh-elf-gcc/src/branch/master/configure.sh#L158

par

    --enable-cxx-flags="-fno-exceptions"    \
    CXXFLAGS="-g -O2 -std=c++17"          \
    $EXTRA_ARGS


et de relancer la compilation.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 07/07/2026 21:47 | # | Fichier joint


Aha un vrai petit coquin ce GCC !

Hélas ça n'a rien changé ^^'
J'ai toujours le même message que je lance la compilation par giteapc ou à la main depuis le répertoire de travail

Edit : le nouveau fichier log est en pièce jointe
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Slyvtt Hors ligne Maître du Puzzle Points: 2971 Défis: 17 Message

Citer : Posté le 07/07/2026 22:45 | #


C'est plus la meme erreur, essaye de changer le std=c++17 par std=gnu++17.
Faut virer build/ et relance en manuel.

Visiblement c'est libcody qui essaye de passer un std=c++11 qui rentre en conflit avec le std=c++17 d'avant.
gnu++17 est plus permissif, ca se tente.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 07/07/2026 23:09 | # | Fichier joint


Ok, merci beaucoup de ton aide !

Mais pour l'instant, ça ne semble toujours pas fonctionner…

J'ai cette erreur quand je lance le ./configure manuellement :
<sh-elf-gcc> After installing the libc, rebuild here for libstdc++-v3
<sh-elf-gcc> Cannot build libstdc++-v3 yet; skipping rebuild until next time


Edit
: Le lancement de make -f giteapc.make configure me donne cette sortie :
<sh-elf-gcc> After installing the libc, rebuild here for libstdc++-v3
<sh-elf-gcc> Found gcc-14.1.0.tar.xz, skipping download
<sh-elf-gcc> Found gcc-14.1.0, skipping extraction
gettext-0.22.tar.gz: Réussi
gmp-6.2.1.tar.bz2: Réussi
mpfr-4.1.0.tar.bz2: Réussi
mpc-1.2.1.tar.gz: Réussi
isl-0.24.tar.bz2: Réussi
All prerequisites downloaded successfully.
<sh-elf-gcc> Configuring gcc...
error: build failed, please check /home/sha-chan/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/build/giteapc-configure.log o(x_x)o
make: *** [giteapc.make:10: configure] Error 1


Et le fichier log en question est en fichier joint.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Alice En ligne Maître du Puzzle Points: 1551 Défis: 11 Message

Citer : Posté le 07/07/2026 23:31 | #


de memoire sh-elf-gcc fonctione en deux fois, et la libstdc++ c'est au deuxieme tours après le 1er et l'installation de fxlib et openlibm, donc pas sûre de quoi tu te plains içi
💜
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 07/07/2026 23:44 | #


Que GCC doive être compilé deux fois est une chose, mais c'est censé être compilable quand même ? Là je ne suis qu'à la première passe, le fxsdk et sh-elf-binutils sont bien installés.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Slyvtt Hors ligne Maître du Puzzle Points: 2971 Défis: 17 Message

Citer : Posté le 08/07/2026 07:42 | #


Visiblement c'est la montée en version de GCC qui a cassé des options de compilation, la compilation bloque car GCC 16 est passé à une version plus récente du standard de compilation C++ par défaut, il faut réussi à mettre tout le monde d'accord (c'est la gestion des char_t / char8_t qui pose souci apparemment).

Jusqu'à C++17 la conversion était automatique et Ok, désormais ce n'est plus le cas semble t il.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 25843 Défis: 174 Message

Citer : Posté le 08/07/2026 11:06 | #


Shadow si tu as installé GCC une fois il faut que tu ailles installer fxlibc avant d'essayer une deuxième fois
Mon graphe (28 Juin): (MPM ; v5 ; Azur ; passe gint 3 ; ...) || Rogue Life
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 08/07/2026 12:13 | #


La compilation bloque car GCC 16 est passé à une version plus récente du standard de compilation C++ par défaut

Yup ok !

Je vais tenter de rollback ma version de GCC vers la version 14 je pense, en l'état, c'est ce qui me parait le plus simple. xD

Shadow si tu as installé GCC une fois il faut que tu ailles installer fxlibc avant d'essayer une deuxième fois

Justement non, il s'agit bien de la première compilation. Après, j'ai le GCC de mon système qui me fait des misères, mais le sh-elf-gcc n'est pas compilé ni installé pour l'instant.

Et quand j'essaye d'installer fxlibc, giteapc détecte que sh-elf-gcc n'est pas installé, tente une compilation et échoue.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 08/07/2026 22:39 | #


Bon, c'est un peu trop le bazar pour rollback GCC, j'ai plein de dépendances de partout et un peu la flemme de tout casser ^^'
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Slyvtt Hors ligne Maître du Puzzle Points: 2971 Défis: 17 Message

Citer : Posté le 09/07/2026 13:32 | #


Oui c'est le risque, et je pense qu'il vaudrait mieux regarder où cela coince et apporter un patch ou une modification des options du fxSDK, car tu es juste le premier à avoir le souci, avec le temps, toutes les distributions vont passer sous GCC 16, donc on aura tôt ou tard le problème en cascade.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Shadow15510 Hors ligne Administrateur Points: 5550 Défis: 18 Message

Citer : Posté le 09/07/2026 13:41 | #


Uip, certes, je peux continuer à vous donner des logs, mais je n'ai clairement pas les compétences techniques pour me dépatouiller de ça tout seul ^^'
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Alice En ligne Maître du Puzzle Points: 1551 Défis: 11 Message

Citer : Posté le 09/07/2026 13:51 | #


t'as juste a setup un serveur ssh sur ta machine et on s'occupe de tout 🤭
💜
Précédente 1, 2, 3 ··· 10 ··· 13, 14, 15, 16

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
captcha
Rafraîchissez la page si vous souhaitez obtenir un nouveau CAPTCHA.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2026 | Il y a 65 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd