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 Hors ligne Administrateur Points: 24574 Défis: 170 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, 4, 5, 6 ··· 10 ··· 13, 14, 15 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 14/02/2021 15:10 | #


Wow c'est super en retard donc. Bon c'est noté, je regarderai ce que je peux faire.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kamrade Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/02/2021 15:12 | #


Ok il me reste juste a recompiler Gravity duck pour graph 35+e2
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 15/03/2021 16:23 | #


Bonjour ! L'installation se passe bien, mais giteapc me renvoie giteapc: command not found ...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 15/03/2021 16:25 | #


Si tu as modifié le PATH dans .profile (le truc par défaut) il faut relancer ta session.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 15/03/2021 16:26 | #


Réinitialiser mon ordi ou WSL ? Si c'est WSL c'est déjà fait !
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 15/03/2021 16:29 | #


Je ne sais pas pour WSL ; il faut que tu te reconnectes and Ubuntu. Regarde aussi si ton PATH contient le dossier d'installation de GiteaPC (normalement ~/.local/bin). Il y a un tutoriel entier à ce sujet.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 15/03/2021 16:31 | #


J'avais eu un problème similaire avec WSL quand j'avais installé gint dessus à l'époque, j'avais réussi à le faire fonctionner en ajoutant la ligne destinée au .profile dans .bashrc
ouais ouais
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 15/03/2021 16:37 | #


Quelle est cette ligne ?
Globalement, coder. Mal, mais coder.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 15/03/2021 16:44 | #


Ce n'est pas exactement ce qui est dans le script d'installation, mais je suppose que ça devrait fonctionner pour toi si t'as pas bidouillé.
Avant de modifier ton .bashrc, essaye cette commande :
$HOME/.local/bin/giteapc
Si ça fonctionne comme prévu, tu peux exécuter cette commande et relancer WSL :
echo 'export PATH=$HOME/.local/bin:$PATH' >> .bashrc
ouais ouais
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 15/03/2021 16:45 | #


La 1ère commande renvoie : bash: /.local/bin/giteapc: No such file or directory
Globalement, coder. Mal, mais coder.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 15/03/2021 16:48 | #


Potter360 a écrit :
La 1ère commande renvoie : bash: /.local/bin/giteapc: No such file or directory

Tu as bien entré $HOME/.local/bin/giteapc ?
Si oui, c'est chelou. Tu pourras remplacer les $HOME des commandes par le chemin de ton dossier utilisateur (c'est crade mais bon).

Ajouté le 17/03/2021 à 23:33 :
Salut ! J'ai installé GiteaPC sous un OpenBSD tout frais aujourd'hui, si ça t'intéresse voici les paquets que j'ai dû installer :
curl git python3 gcc cmake bash
Pour la dépendance Pillow du fxsdk, le paquet est py3-Pillow.
GiteaPC est installé, c'est ici que ça commence à se gater.

J'ai une erreur à l'installation de gcc et binutils (je ne montre que celle de gcc ici, elles sont identiques) :
> giteapc install Lephenixnoir/sh-elf-gcc
<giteapc> Fetching Lephenixnoir/sh-elf-gcc...
<giteapc> Fetching Lephenixnoir/sh-elf-binutils...
<giteapc> Will install: Lephenixnoir/sh-elf-binutils, Lephenixnoir/sh-elf-gcc
<giteapc> Is that okay (Y/n)?
<giteapc> Lephenixnoir/sh-elf-binutils: Configuring
*** Parse error in /home/kdx/.local/share/giteapc/Lephenixnoir/sh-elf-binutils: Need an operator in 'ACCEPT_ANY' (giteapc-config.make:4)
error: error 1 in command: make -f giteapc.make configure

J'ai eu beaucoup d'autres erreurs de toutes les couleurs en essayant depuis bash, avec d'autres paquets, etc.

Si tu veux faire en sorte que GiteaPC soit universel, je pense que tu ferais mieux d'installer un *BSD dans une VM et voir par toi même.
Voici un exemple d'erreur difficile à trouver sous GNU/Linux : tu fais appel à un flag de tar non standard : -J non supporté par le tar d'OpenBSD. Il y en a probablement d'autres, les coreutils de GNU sont connus pour avoir de nombreux flags non standards.

Si tu ne comptes pas supporter les *BSD, ce serait bien dommage. Je me souviens avoir installé la toolchain gint sans accroc sur FreeBSD avant la phase GiteaPC
Si au contraire c'est prévu, je te dis « merci » et bon courage


Edit : Ce sera problématique si je ne peux pas utiliser GiteaPC, il n'y a plus la méthode manuelle. Pas les moyens de bootstrap un Debian sur mon portable.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 18/03/2021 09:49 | #


Merci ! Je tiens à pouvoir supporter au mieux les OS des utilisateurs, et ça devrait pas être trop dur ici, donc je m'en occupe. J'ai pu installer tout ce qu'il fallait dans la VM et reproduire le problème.

Pour ACCEPT_ANY, c'est parce que BSD utilise sa propre version de make qui n'a rien à voir avec GNU make ou presque. Ici pas le choix, il faut installer GNU make. pkg_add gmake est bon, mais la commande s'apelle gmake. Je suis en train de chercher ce qu'on peut faire. Je me demande comment tu t'y étais pris pour tout installer avant sans rencontrer ce problème.

J'ai trouvé pour -J, j'ai aussi vu un truc avec $(nproc) que je peux remplacer (je testerai quand make sera au point).

(Pour information il y a toujours la méthode manuelle, ça faisait partie du cahier des charges. Je serais stupide si j'obligeais tout le monde à utiliser GiteaPC.)

Ajouté le 18/03/2021 à 09:57 :
Pour gmake je vais me débrouiller pour le détecter et l'appeler. La difficulté c'est que du coup si quelqu'un développe un programme qui appelle "make" explicitement tu devrais intervenir pour le compiler, sauf si tu trouves un moyen de rediriger ton make vers gmake (mais je ne suis même pas sûr que ce soit une bonne idée pour ton système). Après c'est pas trop un problème quand on utilise CMake, je pense qu'il se débrouille (hey un autre avantage de CMake!).

Ajouté le 18/03/2021 à 11:08 :
Installer :
• En général: curl git python3 gcc cmake bash gmake bison gmp
• Pour le fxSDK: py3-Pillow

binutils plante assez violemment sur la compilation sur le système Vanilla que j'ai dans la VM, ce qui est un peu casse pieds. Pour référence future (et moteur de recherche) :

yacc: unrecognized flag -- -
usage: yacc (...)

Pour celui-là j'ai installé bison, en supposant qu'autoconf allait le trouver et l'utiliser (correctement) à la place du yacc de base.

Ensuite on tombe sur plein de problèmes avec libintl_gettextparse() et autres éléments de plural.c. Ce fichier est généré par bison à partir de plural.y mais pour des raisons connues (bug #22941, bug #92008) ça ne marche pas.

Le meilleur "fix" pour l'instant est de toucher intl/plural.c pour qu'il soit à jour et donc pas recompilé. Mais j'arrive pas encore à le faire. Ça vient (peut-être).

Ajouté le 18/03/2021 à 11:42 :
@KikooDX J'aurais besoin de ton aide pour tester si tu peux installer binutils (juste binutils) quand tu auras un moment.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 18/03/2021 13:46 | # | Fichier joint


Super merci !

J'ai mis à jour GiteaPC à la main, installé gmake et bison puis lancé > giteapc install -u Lephenixnoir/sh-elf-binutils.
J'ai des erreurs, mais elles sont différentes de la dernière fois et le process a l'air d'être allé un peu plus loin
> giteapc install -u Lephenixnoir/sh-elf-binutils
[...]
<giteapc> Is that okay (Y/n)?
<giteapc> Lephenixnoir/sh-elf-binutils: Configuring
[...]
<sh-elf-binutils> Configuring binutils...
<giteapc> Lephenixnoir/sh-elf-binutils: Building
<sh-elf-binutils> Compiling binutils (usually 5-10 minutes)...
error: build failed, please check [chemin du log] o(x_x)o
gmake: *** [giteapc.make:12: build] Error 1
error: error 2 in command: gmake -f giteapc.make build


J'ai attaché le log à ce message.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 18/03/2021 13:48 | #


Dammit c'est le même problème que celui que j'ai dans ma VM. En fait ce bug dépend vaguement de la vitesse du système de fichiers donc il se produit surtout dans Cygwin ou dans des machines virtuelles. J'espérais que tu y arriverais.

Bon je retourne chercher... pendant que j'y suis essaie sh-elf-binutils@openbsd, j'y ai poussé un autre commit avec une petite idée de fix.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 18/03/2021 13:55 | # | Fichier joint


J'ai la même erreur sur la branche openbsd, log en pièce jointe.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 18/03/2021 14:05 | #


Pour information s'il y a all: all-yes dans build/intl/Makefile alors il recompile intl et les problèmes commencent.

En forçant la main à la compilation (d'une façon qui n'a pas abouti malheureusement) j'ai eu un autre problème qui me rappelle qu'il faut absolument utiliser gmake pour ça (autotools ne semble pas se débrouiller autrement), donc j'ai mis à jour la branche openbsd avec ça. Par pur hasard je crois, ça compile maintenant de mon côté. Est-ce que tu peux tester ?

% giteapc install -u sh-elf-binutils@openbsd
# tu le sais déjà je suis sûr mais on sait jamais

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 18/03/2021 14:19 | #


J'avais toujours des erreurs étranges, après reboot « magie » sh-elf-binutils s'installe correctement
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 18/03/2021 19:09 | #


Bon donc c'est un peu le bordel pour GCC (sans surprise). Je note ici ce que j'ai rencontré cet après-midi.

Si on compile naïvement, on se retrouve avec « g++: unrecognized option -no-pie » et des « relocation R_X86_64_32 can not be used » de la part du linker. Pour la première moitié, on peut toujours remplacer bourrinnement tous les flags par -fno-PIE (qui lui est supporté) dans gcc/Makefile.in. (Je suis sûr qu'on peut modifier ces variables autoconf proprement mais ça ira pour l'instant.)

NO_PIE_CFLAGS = -fno-PIE # @NO_PIE_CFLAGS@
NO_PIE_FLAG = -fno-PIE # @NO_PIE_FLAG@
(...)
NO_PIE_CFLAGS_FOR_BUILD = -fno-PIE # @NO_PIE_CFLAGS_FOR_BUILD@
NO_PIE_FLAG_FOR_BUILD = -fno-PIE # @NO_PIE_FLAG_FOR_BUILD@
(...)
BUILD_NO_PIE_CFLAGS = -fno-PIE # @BUILD_NO_PIE_CFLAGS@
(...)
BUILD_NO_PIE_FLAG = -fno-PIE # @BUILD_NO_PIE_FLAG@

Mais ça ne change pas grand-chose parce que les erreurs de ld traînent quand même (et demandent, de surcroît, d'utiliser -fPIC qui est plus ou moins l'opposé de -fno-PIE). Peut-être qu'on peut modifier le comportement d'autoconf pour compiler en PIC.

Liens liés :
https://bugs.ruby-lang.org/issues/7606
http://openbsd-archive.7691.n7.nabble.com/Recent-version-of-gcc-for-amd64-td234809.html#a234890
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 20/03/2021 23:52 | #


Salut ! Je reviens t'embêter Lephé, cette fois-ci sous (Alpine) Linux, avec un autre problème (de rien, c'est tout naturel ).
L'installation de GiteaPC, gcc-sh-elf, binutils-sh-elf, fxsdk et gint s'est déroulée sans problème génant. J'ai installé mkg3a à la main. Ce dernier produit une erreur pour le moins étrange au linking, voici le log :
kdx@owo ~/p/painfull-success-cg (main)> fxsdk build-cg
-- The C compiler identification is GNU 10.2.0
-- The CXX compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/kdx/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/kdx/.local/bin/sh-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Gint: TRUE (found suitable version "2.3.1", minimum required is "2.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kdx/projects/painfull-success-cg/build-cg
Scanning dependencies of target myaddin
[ 12%] Building C object CMakeFiles/myaddin.dir/src/main.c.obj
[ 25%] Building C object CMakeFiles/myaddin.dir/src/input.c.obj
[ 37%] Building C object CMakeFiles/myaddin.dir/src/level.c.obj
[ 50%] Building C object CMakeFiles/myaddin.dir/src/player.c.obj
[ 62%] Building C object CMakeFiles/myaddin.dir/src/tiles.c.obj
[ 75%] Building C object CMakeFiles/myaddin.dir/src/gen_levels.c.obj
[ 87%] Linking C executable myaddin

Usage: mkg3a [OPTION] input-file [output-file]

  -i (uns|sel):file
     Load unselected/selected icon from file
  -n lc:name
     Set localized name for language code
  -V ver
     Set version string
  -v
     Show version and license information then exit

Valid values for lc are basic, internal, en, es, de, fr, pt and zh.
Empty lc is an alias for basic.  Unset names will be derived from
basic, which defaults to output file name.

Multiple -n or -i options will all be applied, with the last
specified option overriding previous ones with the same key.
make[2]: *** [CMakeFiles/myaddin.dir/build.make:196: myaddin] Error 1
make[2]: *** Deleting file 'myaddin'
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/myaddin.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

J'ai essayé de rollback vers des versions plus anciennes de mkg3a, sans résultat. Voici la sortie de mkg3a -v :
kdx@owo ~/p/painfull-success-cg (main)> mkg3a -v
mkg3a 0.5.0-3-g84ac914 (Mar 20 2021 23:42:21)
Copyright (c) 2011 Peter Marheine <peter@taricorp.net>

This is free software; see the source for copying conditions.  There
is NO warranty; in no event will the authors be held liable for any
damages arising from the use of this software.

See http://www.taricorp.net/projects/mkg3a/ for updates.

Je trouve ça très étrange, ça vient peut-être de moi mais malgrès de multiples réinstallations de mkg3a j'ai toujours le même problème. Merci pour votre attention.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 21/03/2021 08:25 | #


Compile avec fxsdk build-cg -B VERBOSE=1 et regarde la commande qui appelle mkg3a. Il y a un problème, soit dans ton appel à generate_g3a(), soit dans son code, qui produit une commande mkg3a invalide.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 21/03/2021 10:27 | #


Bonjour ! J'ai exécuté ta commande, la commande mkg3a a l'air correcte. mkg3a fait une crise d'adolescence.
kdx@owo ~/p/painfull-success-cg (main)> fxsdk build-cg -B VERBOSE=1
/usr/bin/cmake -S/home/kdx/projects/painfull-success-cg -B/home/kdx/projects/painfull-success-cg/build-cg --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/kdx/projects/painfull-success-cg/build-cg/CMakeFiles /home/kdx/projects/painfull-success-cg/build-cg//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make  -f CMakeFiles/myaddin.dir/build.make CMakeFiles/myaddin.dir/depend
[ 12%] Generate src/gen_levels.c from KBLE files.
cd /home/kdx/projects/painfull-success-cg && python3 kble.py
cd /home/kdx/projects/painfull-success-cg/build-cg && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/kdx/projects/painfull-success-cg /home/kdx/projects/painfull-success-cg /home/kdx/projects/painfull-success-cg/build-cg /home/kdx/projects/painfull-success-cg/build-cg /home/kdx/projects/painfull-success-cg/build-cg/CMakeFiles/myaddin.dir/DependInfo.cmake --color=
Dependee "/home/kdx/projects/painfull-success-cg/src/gen_levels.c" is newer than depender "CMakeFiles/myaddin.dir/src/gen_levels.c.obj".
Clearing dependencies in "/home/kdx/projects/painfull-success-cg/build-cg/CMakeFiles/myaddin.dir/depend.make".
Scanning dependencies of target myaddin
make  -f CMakeFiles/myaddin.dir/build.make CMakeFiles/myaddin.dir/build
[ 25%] Building C object CMakeFiles/myaddin.dir/src/main.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/main.c.obj -c /home/kdx/projects/painfull-success-cg/src/main.c
[ 37%] Building C object CMakeFiles/myaddin.dir/src/input.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/input.c.obj -c /home/kdx/projects/painfull-success-cg/src/input.c
[ 50%] Building C object CMakeFiles/myaddin.dir/src/level.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/level.c.obj -c /home/kdx/projects/painfull-success-cg/src/level.c
[ 62%] Building C object CMakeFiles/myaddin.dir/src/player.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/player.c.obj -c /home/kdx/projects/painfull-success-cg/src/player.c
[ 75%] Building C object CMakeFiles/myaddin.dir/src/tiles.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/tiles.c.obj -c /home/kdx/projects/painfull-success-cg/src/tiles.c
[ 75%] Generate src/gen_levels.c from KBLE files.
cd /home/kdx/projects/painfull-success-cg && python3 kble.py
[ 87%] Building C object CMakeFiles/myaddin.dir/src/gen_levels.c.obj
/home/kdx/.local/bin/sh-elf-gcc -DFXCG50 -DTARGET_FXCG50 -I/home/kdx/projects/painfull-success-cg/include -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/gen_levels.c.obj -c /home/kdx/projects/painfull-success-cg/src/gen_levels.c
[100%] Linking C executable myaddin
/usr/bin/cmake -E cmake_link_script CMakeFiles/myaddin.dir/link.txt --verbose=1
/home/kdx/.local/bin/sh-elf-gcc -nostdlib -T fxcg50.ld CMakeFiles/myaddin.dir/src/main.c.obj CMakeFiles/myaddin.dir/src/input.c.obj CMakeFiles/myaddin.dir/src/level.c.obj CMakeFiles/myaddin.dir/src/player.c.obj CMakeFiles/myaddin.dir/src/tiles.c.obj CMakeFiles/myaddin.dir/src/gen_levels.c.obj -o myaddin  -lgcc /home/kdx/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/10.2.0/libgint-cg.a -lgcc
/home/kdx/.local/bin/sh-elf-objcopy -O binary -R .bss -R .gint_bss myaddin myaddin.bin
mkg3a myaddin.bin -n basic:PainSuccess -i uns:/home/kdx/projects/painfull-success-cg/assets-cg/icon-uns.png -i sel:/home/kdx/projects/painfull-success-cg/assets-cg/icon-sel.png /home/kdx/projects/painfull-success-cg/PainfullSuccess.g3a

Usage: mkg3a [OPTION] input-file [output-file]

  -i (uns|sel):file
     Load unselected/selected icon from file
  -n lc:name
     Set localized name for language code
  -V ver
     Set version string
  -v
     Show version and license information then exit

Valid values for lc are basic, internal, en, es, de, fr, pt and zh.
Empty lc is an alias for basic.  Unset names will be derived from
basic, which defaults to output file name.

Multiple -n or -i options will all be applied, with the last
specified option overriding previous ones with the same key.
make[2]: *** [CMakeFiles/myaddin.dir/build.make:196: myaddin] Error 1
make[2]: *** Deleting file 'myaddin'
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/myaddin.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

Je suis confucius.
ouais ouais
Précédente 1, 2, 3, 4, 5, 6 ··· 10 ··· 13, 14, 15 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 259 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