Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » GiteaPC : Installer et mettre à jour automatiquement des projets Gitea
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 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 Gitea 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 Gitea 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://gitea.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) :

# 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
# 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
# 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 :

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

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 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 ··· 5, 6, 7, 8, 9, 10 Suivante
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 16/02/2022 23:47 | #


Mais j'ai une petite question, est-ce que je pourrais pas simplement faire un giteapc install Lephenixnoir/fxsdk ? J'ai entré la commande et ça marche. Par contre j'ai une erreur lorsque j'essaye de créer un nouveau projet avec fxsdk new Machin :
/usr/local/bin/fxsdk: line 77: ${2^^}: bad substitution
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 16/02/2022 23:51 | # | Fichier joint


Tu peux mais tu n'iras pas loin, sans les libs tu ne pourras quasiment rien compiler.

Il me semble que ça c'est un problème de version de bash. Ninestars avait laissé des notes, que je joins. Ne te précipite pas sur toutes les commandes, il y a pas mal de trucs que tu as déjà faits ou fait différemment, et ce serait bête de tout casser.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 00:07 | #


Effectivement c'était la version, j'ai update et j'ai une autre erreur x)
mkdir: illegal option -- l
usage: mkdir [-pv] [-m mode] directory ...
cp: -l is not a directory
cp: -l is not a directory
cp: -l/.gitignore: Not a directory
cp: -l/src: Not a directory
cp: -l/assets-fx/icon.png: Not a directory
cp: -l/assets-cg/icon-uns.png: Not a directory
cp: -l/assets-cg/icon-sel.png: Not a directory
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 17/02/2022 00:11 | #


J'ai vérifié, nulle part dans le fxSDK n'est une hypothétique option mkdir -l utilisée. Un truc a dû mal se passer qui a fini par nommer un fichier -l, d'ailleurs tu peux voir "-l is not a directory" ça c'est le signe que c'est interprété comme un nom de fichier.

Regarde bien ce qu'il y a comme fichiers dans ton dossier. Attention fxsdk new -l ça ne marche pas.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 00:13 | #


Yep c'est ce que je me suis dit aussi, j'ai debug $1 dans le script et ça me donne "-l" quel que soit le nom que j'entre dans le fxsdk new
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 17/02/2022 00:15 | #


Aha c'est peut-être getopt qui en fait aussi des siennes. T'as quelle version de bash encore une fois ?
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 00:16 | #


Bash v5.1.16, c'est la version la plus récente

Ajouté le 17/02/2022 à 00:17 :
Si on se sort un jour de ce foutoir je jure d'écrire un document complet pour l'installation sur mac
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 17/02/2022 00:19 | #


Ha ha désolé c'est toujours limite parce que c'est pas beaucoup testé. Mais tu sais ce que tu fais donc ça va. x)

Vois autour de cet endroit si tu peux afficher un peu ce qui se passe. Vois "$@" en particulier (la liste des arguments), c'est là-dedans que le nom du dossier est pris. Je soupçonne que le -l passé à getopt pour désigner les commandes longues (--cmake, --makefile) finit par se retrouver être le nom du dossier.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 00:26 | #


Tout juste ! Je crois que bash interprétait mal les options longues comme getopt n'est pas fourni. J'ai du installé un package subsidiaire, update le PATH et c'est good ! Je tenterai de compiler un programme demain et on verra ce qui se passera x) En tout cas, pas d'erreur jusqu'ici.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 16:08 | # | Fichier joint


Re !
Du coup j'ai réussi à modifier mon CPATH pour qu'il puisse aller chercher la sdl, mais maintenant j'ai un nouveau problème lorsque je tente de build gint. L'erreur est en pièce jointe.
Possible qu'il y ai un lien avec mon archi (64 bits) ?
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 17/02/2022 16:31 | #


Là le problème c'est que le chemin /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/ est mentionné, c'est-à-dire qu'il prend les headers de son système et pas du tout ceux du cross-compilateur. La modification des paramètres CMake c'est que pour le fxSDK (qui est compilé nativement), si tu la gardes pour le reste des libs (qui sont cross-compilées) tu t'exposes à des surprises. Je pense que c'est la cause ici.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 17/02/2022 16:40 | #


Le problème c'est que j'ai une erreur d'include si je l'omets :
fatal error: sys/types.h: No such file or directory
   17 | #include <sys/types.h>
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 17/02/2022 16:46 | #


Cet include est fourni par la fxlibc, que normalement GiteaPC installe automatiquement comme dépendance. Regarde de ce côté-là. La commande précédente marche toujours pour tester si un en-tête existe :

ls -l $(sh-elf-gcc -print-file-name=include/sys/types.h)

Oui il y a beaucoup de dépôts, c'est pour ça que GiteaPC existe. Je ferais différemment aujourd'hui, mais bon c'est là maintenant.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 18/02/2022 01:05 | #


Yop !
Juste pour revenir à l'installation de sh-elf-gcc. Je crois qu'il y a un petit problème dans ton script de build au niveau du calcul du nombre de coeurs. Tu n'utilises sysctl -n hw.ncpu que pour OpenBSD. Il faudrait aussi que tu l'ajoutes pour Darwin (mon système d'exploitation) parce que nproc ne marche pas non plus pour moi. Du coup la machine rame un max lors du build et tout crash
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 18/02/2022 08:58 | #


Ok ! J'ai ajouté ça. Entre nous ça me paraît bizarre que ça panique simplement parce qu'on met un seul cœur ; à bien y regarder je ne comprends pas du tout pourquoi ça crasherait aussi violemment.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 18/02/2022 10:42 | #


Je t'avoue que je sais pas trop pourquoi non plus :/ Quoiqu'il en soit ça marche nickel maintenant.
Il reste un petit problème au niveau du script fxsdk qui avait déjà été reporté dans le guide d'installation sous mac (problème au niveau du guillemet simple dans don't, ligne 29). Peux tu push un patch ? Pour le coup on ne peut pas faire la modification manuellement car le script est écrasé à chaque installation.
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 18/02/2022 10:47 | #


Pas de souci, c'est sur dev. Merci de ton aide !
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 18/02/2022 11:27 | #


Super merci ! Tout semble marcher (en tout cas je peux créer un projet et il compile ) J'ai relevé toutes les erreurs qu'on pouvait rencontrer dans l'installation mais tu en as globalement résolu une grosse partie ! J'essaye d'écrire un commentaire dessus dans la journée.
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 18/02/2022 12:38 | #


Génial, merci encore <3

Si tu peux croiser avec le document de Ninestars pour me dire les parties que tu as dû ou pas faire, je suis preneur.
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 18/02/2022 13:23 | #


Guide d'installation de fxlib et gint sous MacOS avec GiteaPC

Lors de l'installation de Gitea sous MacOS, il se peut que vous rencontriez quelques difficultés. Voici un petit guide pour éviter les problèmes les plus courants.

Introduction

En premier lieu et si ça n'est pas déjà fait, il va falloir installer les outils en ligne de commande Xcode. Si vous avez déjà développé sur votre ordinateur, il est très probable que tout soit déjà installé. Pour vérifier leur présence, entrez la commande suivante dans votre terminal :

xcode-select -p


Si les outils sont déjà installés, vous devriez voir apparaître :

/Library/Developer/CommandLineTools


Si ça n'est pas le cas, installez les en tapant simplement cette commande :

xcode-select --install


Dépendances

Il va maintenant falloir installer quelques packages (dépendances) nécessaires au bon fonctionnement de Gitea.

Le gestionnaire de package apt n'existe pas sous MacOS. Son équivalent est Homebrew. Si vous ne l'avez pas, vous pouvez l'installer en tapant :

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


L'installation d'un package avec Homebrew se fait de la manière suivante :

brew install <nom-package>


Voici la liste des packages à installer :

pck-config

libpng

libusb

gnu-getopt

Note : Comme getopt est une commande déjà intégrée dans le système, il va falloir lui spécifier que vous voulez désormais qu'il utilise la version que vous venez d'installer. Entrez :

export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"


sdl2

Note : Afin que Gitea puisse trouver SDL2, il faut indiquer à gcc son répertoire d'installation. Entrez :

export CPATH=/usr/local/include


Note : Toutes les modifications faites sur PATH sont écrasées à chaque nouvelle ouverture d'un terminal. Pour les conserver, il suffit d'ajouter les lignes export dans le fichier de configuration exécuté lors du lancement d'un nouveau shell. Il se trouve à la racine et se nomme généralement .zshrc (ou .bash_profile selon la version de votre OS).

Installez pillow en tapant :

python3 -m pip install --upgrade Pillow


Dernier petit point, il se peut que votre version de bash ne soit pas à jour et ne supporte pas toutes les fonctionnalités utilisées dans Gitea. En cas de doute, installez la dernière version avec Homebrew.

Installation

À ce stade, toutes les dépendances sont installées. Vous pouvez désormais entrer la commande finale d'installation :

giteapc install Lephenixnoir/sh-elf-binutils:any Lephenixnoir/sh-elf-gcc:any Lephenixnoir/fxsdk Lephenixnoir/gint


Si Gitea vous propose d'installer des packages manquants, ne le faites pas. En réalité, tout est déjà prêt.

Et créer un nouveau projet avec :

fxsdk new MonAddin
Lephenixnoir Hors ligne Administrateur Points: 22599 Défis: 149 Message

Citer : Posté le 24/02/2022 13:19 | #


Merci. J'ai ajouté un lien vers ce post tout en haut du tutoriel. Je peux difficilement faire plus formel vu que je ne teste/maintiens pas cette cible. Merci beaucoup de t'être prêté au jeu, sans ça (et le document initial de Ninestars) il n'y aurait pas de support du tout
Précédente 1, 2, 3 ··· 5, 6, 7, 8, 9, 10 Suivante

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:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 58 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