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.
Citer : Posté le 22/08/2022 16:37 | #
Tutoriel mis à jour.
Phn Invité
Citer : Posté le 04/09/2022 14:44 | #
Tout marche bien (sur Ubuntu mate 20.04), merci pour ce tutoriel très bien rédigé. Une suggestion: placer le paragraphe sur udisks plus haut, avant la commande concernée!
Citer : Posté le 04/09/2022 14:55 | #
Content que ça marche ! J'ai suivi la suggestion, et également rafraîchi quelques détails.
tt_thoma Invité
Citer : Posté le 10/09/2022 11:31 | #
GiteaPC semble avoir un problème avec "libpng16". Après vérification, le module s'appelle en fait "libpng16-16"... Comment faire ?
Citer : Posté le 10/09/2022 11:38 | #
Le seul moment où GiteaPC te propose d'installer libpng c'est durant l'installation de binutils. Tu peux interrompre le programme (Ctrl+C), ensuite installer libpng16-16 toi-même, et si GiteaPC continue de proposer libpng16, décline. Ça devrait fonctionner. Je mettrai aussi à jour le nom du paquet.
tt_thoma Invité
Citer : Posté le 13/09/2022 17:41 | #
Pourtant, j'ai bien installé libpng16-16:
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
libpng16-16 est déjà la version la plus récente (1.6.37-3build5).
libpng16-16 passé en « installé manuellement ».
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Citer : Posté le 13/09/2022 17:43 | #
Dans ce cas c'est bon. GiteaPC ne t'oblige pas à installer de dépendances en plus. Quand il te le demande ("based on apt, some dependencies are missing... do you want to run (...) to install them?") tape juste "n" et continue
tt_thoma Invité
Citer : Posté le 13/09/2022 19:53 | #
Je ne trouve aucune option se référençant à ce problème...
<giteapc> Fetching Lephenixnoir/sh-elf-binutils...
<giteapc> Fetching Lephenixnoir/sh-elf-gcc...
<giteapc> Will install: Lephenixnoir/fxsdk, Lephenixnoir/sh-elf-binutils, Lephenixnoir/sh-elf-gcc
<giteapc> Is that okay (Y/n)? y
<giteapc> Lephenixnoir/fxsdk: Configuring
-- Checking for module 'libpng16'
-- No package 'libpng16' found
CMake Error at /usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:603 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:825 (_pkg_check_modules_internal)
CMakeLists.txt:10 (pkg_check_modules)
-- Configuring incomplete, errors occurred!
See also "/home/tt_thoma/.local/share/giteapc/Lephenixnoir/fxsdk/build/CMakeFiles/CMakeOutput.log".
gmake: *** [giteapc.make:12 : configure] Erreur 1
error: error 2 in command: gmake -f giteapc.make configure
Citer : Posté le 13/09/2022 20:19 | #
Ah ! Il fallait mettre ça tout de suite. J'ai dû deviner et je suis parti sur autre chose.
Le paquet qui te manque du coup ça doit être libpng-dev.
Note que le module CMake "libpng16" ne correspond pas forcément à un paquet apt du même nom.
tt_thoma Invité
Citer : Posté le 13/09/2022 21:00 | #
Oups... Moi-même je suis tombé dans le panneau. Enfin maintenant tout fonctionne normalement ! Merci
Citer : Posté le 16/10/2022 12:56 | #
Salut ! J'ai une erreur lors de l'installation du fxSDK quand j'exécute cette commande :
J'obtiens ça (avec d'autres trucs avant) :
-- No package 'libpng16' found
CMake Error at /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:463 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:643 (_pkg_check_modules_internal)
CMakeLists.txt:10 (pkg_check_modules)
-- Configuring incomplete, errors occurred!
See also "/home/ulysses/.local/share/giteapc/Lephenixnoir/fxsdk/build/CMakeFiles/CMakeOutput.log".
make: *** [giteapc.make:12: configure] Error 1
error: error 2 in command: make -f giteapc.make configure
Je suis sur WSL 2 sous Windows 11
- Java
- Basic Casio
- C
- OCaml
J'ai une Casio Graph 90+E.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique :
Rien ne fonctionne... et personne ne sait pourquoi ! »
- Albert Einstein
Remerciemembres
Citer : Posté le 16/10/2022 12:57 | #
Juste au-dessus : apt install libpng-dev ?
Citer : Posté le 16/10/2022 13:04 | #
Ok je me doutais que ça allait être un truc simple comme ça merci !
Au passage juste après ça m'as dit que il manquait des packages et ça m'a demandé si je voulais les installer, et j'ai dit oui.
- Java
- Basic Casio
- C
- OCaml
J'ai une Casio Graph 90+E.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique :
Rien ne fonctionne... et personne ne sait pourquoi ! »
- Albert Einstein
Remerciemembres
Citer : Posté le 16/10/2022 13:36 | #
Arf mais oui c'est parce que le test est dans binutils depuis toujours, parce qu'à l'origine c'est ça qu'on installait en premier, mais depuis quelques temps le fxSDK est avant et donc ses dépendances doivent être présentes avant qu'on puisse atteindre binutils... x)
Citer : Posté le 28/04/2023 16:38 | #
Bonjour bonjour, it's been a while...
J'ai bien suivi la démarche pour installer WSL2 et giteapc mais après redémarrage du pc je saisi la commande "giteapc" dans le cmd ou j'ai lancé Ubuntu et j'ai ceci:
antoine@PCAntoine:~$ giteapc install Lephenixnoir/sh-elf-gcc Lephenixnoir/fxsdk Lephenixnoir/gint
giteapc: command not found
Pour info, après ce message là:
<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.
>
J'ai juste tapé Entrée comme indiqué par Lephe.
Je ne vois pas pourquoi il ne connait pas la commande "giteapc"...?
-Planétarium 2
Citer : Posté le 28/04/2023 16:40 | #
Tu t’es déconnecté et reconnecté (dans le cas de WSL, relancer WSL suffit ptêt) ?
Citer : Posté le 28/04/2023 16:43 | #
Oui j'ai redémarré l'ordi carrément et après:
(c) Microsoft Corporation. Tous droits réservés.
C:\Users\chass>wsl.exe
antoine@PCAntoine:/mnt/c/Users/chass$ giteapc
giteapc: command not found
antoine@PCAntoine:/mnt/c/Users/chass$
Ya un truc que j'ai du zapper.
-Planétarium 2
Citer : Posté le 28/04/2023 16:46 | #
tu as du zapper le
C'est ça qui install l'outil Giteapc
Citer : Posté le 28/04/2023 16:50 | #
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1653 100 1653 0 0 6836 0 --:--:-- --:--:-- --:--:-- 6830
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13476 100 13476 0 0 30270 0 --:--:-- --:--:-- --:--:-- 30351
<giteapc> Fetching Lephenixnoir/GiteaPC...
<giteapc> Will install: Lephenixnoir/GiteaPC
<giteapc> Is that okay (Y/n)? Y
<giteapc> Lephenixnoir/GiteaPC: Configuring
Traceback (most recent call last):
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc.py", line 150, in <module>
sys.exit(main(sys.argv[1:], commands))
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc.py", line 145, in main
return commands[argv[0]]["function"](*data, **options)
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc/repo.py", line 374, in install
build(*plan, install=True)
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc/repo.py", line 296, in build
r.make("configure", env)
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc/repos.py", line 148, in make
return run([command, "-f", "giteapc.make", target], env=env)
File "/tmp/tmp.Mox6rBmuNp/giteapc/giteapc/util.py", line 154, in run
proc = subprocess.run(process, *args, **kwargs)
File "/usr/lib/python3.10/subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.10/subprocess.py", line 969, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1845, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'make'
<giteapc> /home/antoine/.local/bin is already in your PATH, we're good to go!
antoine@PCAntoine:/mnt/c/Users/chass$ giteapc
giteapc: command not found
Bruh
-Planétarium 2
Citer : Posté le 28/04/2023 16:52 | #
Visiblement, c’est cette ligne que tu as loupé (ou qui a échoué, mais il nous faudra l’erreur dans ce cas) :
% sudo apt install curl git python3 build-essential cmake pkg-config
Et après faudra relancer l’installation de GiteaPC du coup, vu qu’elle a échoué.
Citer : Posté le 28/04/2023 16:55 | #
Désolé de tout mettre mais je pense que c'est mieux que des bouts mdrr:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
curl is already the newest version (7.81.0-1ubuntu1.10).
curl set to manually installed.
git is already the newest version (1:2.34.1-1ubuntu1.8).
git set to manually installed.
python3 is already the newest version (3.10.6-1~22.04).
python3 set to manually installed.
The following additional packages will be installed:
bzip2 cmake-data cpp cpp-11 dh-elpa-helper dpkg-dev emacsen-common fakeroot fontconfig-config fonts-dejavu-core g++
g++-11 gcc gcc-11 gcc-11-base libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive13
libasan6 libatomic1 libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libdeflate0 libdpkg-perl libfakeroot
libfile-fcntllock-perl libfontconfig1 libfreetype6 libgcc-11-dev libgd3 libgomp1 libisl23 libitm1 libjbig0
libjpeg-turbo8 libjpeg8 libjsoncpp25 liblsan0 libmpc3 libnsl-dev libquadmath0 librhash0 libstdc++-11-dev libtiff5
libtirpc-dev libtsan0 libubsan1 libwebp7 libxpm4 linux-libc-dev lto-disabled-list make manpages-dev rpcsvc-proto
Suggested packages:
bzip2-doc cmake-doc ninja-build cmake-format cpp-doc gcc-11-locales debian-keyring g++-multilib g++-11-multilib
gcc-11-doc gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-11-multilib lrzip glibc-doc bzr
libgd-tools libstdc++-11-doc make-doc
The following NEW packages will be installed:
build-essential bzip2 cmake cmake-data cpp cpp-11 dh-elpa-helper dpkg-dev emacsen-common fakeroot fontconfig-config
fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base libalgorithm-diff-perl libalgorithm-diff-xs-perl
libalgorithm-merge-perl libarchive13 libasan6 libatomic1 libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev
libdeflate0 libdpkg-perl libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6 libgcc-11-dev libgd3
libgomp1 libisl23 libitm1 libjbig0 libjpeg-turbo8 libjpeg8 libjsoncpp25 liblsan0 libmpc3 libnsl-dev libquadmath0
librhash0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1 libwebp7 libxpm4 linux-libc-dev
lto-disabled-list make manpages-dev pkg-config rpcsvc-proto
0 upgraded, 61 newly installed, 0 to remove and 0 not upgraded.
Need to get 1339 kB/71.6 MB of archives.
After this operation, 241 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Err:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 linux-libc-dev amd64 5.15.0-70.77
404 Not Found [IP: 91.189.91.38 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_5.15.0-70.77_amd64.deb 404 Not Found [IP: 91.189.91.38 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Erreur 404 à la fin
-Planétarium 2