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 En ligne Administrateur Points: 20113 Défis: 143 Message

GiteaPC : Installer et mettre à jour automatiquement des projets Gitea

Posté le 01/01/2021 23:19

Pour pallier aux difficultés d'installation du fxSDK sous Linux, j'ai réfléchi à créer un outil pour automatiquement installer et mettre à jour des projets depuis le dépôt Gitea. L'outil est encore jeune donc les tests sont bienvenus, mais le développement est a priori complet.

» Code source : dépôt Lephenixnoir/GiteaPC «

Qu'est-ce que GiteaPC fait ?
• Clôner, configurer, compiler et installer en une ligne des projets depuis le dépôt Gitea.
• Dans une certaine mesure, installer aussi les dépendances (les versions ne sont pas suivies).
• Metre à jour en une ligne une installation du fxSDK avec des bibliothèques.

Quels projets peuvent bénéficier de GiteaPC ?
• Le compilateur GCC pour la calculatrice, le fxSDK avec ses outils, gint.
• Toutes les bibliothèques de programmation d'add-ins, gint ou pas, écrites par n'importe qui.
• De façon générale, tout outil mis à la disposition de la communauté : p7, des utilitaires de conversion, des éditeurs de maps...

Qu'est-ce qu'on y gagne ?
• C'est plus rapide de laisser le script automatique tourner que de faire le tutoriel.
• Pour les débutants, c'est plus simple de prendre des valeurs par défaut sensibles sans se casser la tête.
• Pour les experts, vous gardez le contrôle de tout les dépôts pour faire des manigances (voir ci-dessous).

Merci pour les conversations avec notamment Breizh_craft, Dark Storm et Cakeisalie5 qui m'ont bien aidé à cerner un design plus élégant.

Installation

Il y a des dépendances à installer évidemment. Voici la commande pour les distributions les plus communes sur PC ; cmake est nécessaire pour gint et les bibliothèques qui vont avec, et conseillé pour utiliser le fxSDK.

# Debian, Ubuntu, Ubuntu dans WSL, Linux Mint, dérivés de Debian :
% sudo apt install curl git python3 build-essential cmake

# ArchLinux, Manjaro, dérivés d'ArchLinux :
% sudo pacman -S curl git python3 gcc make cmake

L'installation en une ligne de GiteaPC se fait 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.

Obtenir ou migrer une installation du fxSDK avec GiteaPC

Le fxSDK et toutes les libs qui vont avec (que je gère, du moins) peuvent être distribuées avec GiteaPC. Le fxSDK dépend de quelques bibliothèques dont vous aurez besoin :

# Debian, Ubuntu, Ubuntu dans WSL, Linux Mint, dérivés de Debian :
% sudo apt install python3-pil libusb
# En option pour fxlink -s :
% sudo apt install libudisks2-dev

# ArchLinux, Manjaro, dérivés d'ArchLinux :
% sudo pacman -S python-pillow libusb
# 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 avec la commande ci-dessous (ne la lancez pas tout de suite, et lisez la fin du paragraphe d'abord, car il y a des options et variations).

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

Cela installera un cross-compilateur GCC à jour, sauf si vous en avez déjà un, auquel cas celui que vous avez est utilisé. Ensuite ça installera le fxSDK et gint, c'est-à-dire tout ce qu'il vous faut pour commencer à coder des add-ins.

Si vous avez déjà une installation du fxSDK, vous avez deux choix.
• Ou bien vous gardez votre compilateur et vous gardez les :any dans la commande.
• Ou bien vous recompilez GCC, pour ça enlevez les :any et supprimez votre ancien GCC après avoir fini l'installation.

À court terme à ça revient au même, à long terme (1-2 ans) tout le monde devra probablement recompiler GCC à cause des évolutions.

fxlink utilise UDisks2 pour monter les Graph 35+E II et Graph 90+E et y copier des fichiers depuis la ligne de commande (fxlink -w). UDisks2 est un outil important dans le système d'exploitation, qui gère les disques durs, périphériques USB, et d'autres. Si votre Linux utilise déjà UDisks2 (ce que vous pouvez tester en lançant la commande udisksctl), je vous invite à installer la dépendance. Sinon, c'est plus raisonnable de ne pas l'installer pour ne pas perturber votre OS. Dans ce cas, dans la commande GiteaPC, installez Lephenixnoir/fxsdk:noudisks2 à la place de Lephenixnoir/fxsdk (ça désactivera la fonctionnalité correspondante de fxlink).

Une fois l'installation réalisée avec GiteaPC, vous pouvez supprimer vos anciens clones des dépôts. Vous pouvez toujours consulter les clones de GiteaPC avec la commande suivante (par exemple pour le fxSDK) :

cd $(giteapc show -p Lephenixnoir/fxsdk)

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 » qui accepte tout GCC déjà installé et ne compile pas s'ils en trouvent un).

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 l'an dernier 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 et giteapc-config-*.make dans le .gitignore.

giteapc-config.make sera un lien symbolique pointant vers la configuration courante et giteapc-config-*.make sont les configurations à proprement parler. Si vous en fournissez par défaut, retirez-les explicitement (!giteapc-config-myconf.make). Tous les autres noms doivent être ignorés pour que l'utilisateur puisse ajouter ses propres configurations sans que le dépôt casse à chaque pull à cause des fichiers non traqués.

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 optionnelle de giteapc-config.make. 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.

Usage et intérêt pour les experts

Pour pas mal de dépôts et situations, les paramètres par défaut conviennent, donc l'usage de GiteaPC a (je pense) un intérêt pour tout le monde. J'espère pouvoir délivrer un maximum de contenu par un minimum de canaux pour simplifier la complexité des projets qu'on a aujourd'hui sous Linux.

La vision de GiteaPC est uniquement d'accélérer les choses qu'on aurait faites de toute façon. C'est donc conçu pour qu'on puisse prendre la main à tout moment. Concrètement :

• GiteaPC ne fait qu'exécuter des commandes git et make (et quelques requêtes à la forge Gitea).
• L'outil ne stocke et ne cache aucune information externe, donc si vous jouez avec les dépôts entre deux utilisations il suivra sans se poser de questions.
• Vous pouvez checkout, compiler, bisect, trifouiller, manipuler les dépôts à votre guise. (Il n'y a que le risque habituel de décorréler la version checked-out du dépôt et la version installée.)
• Vous pouvez aussi créer des liens symboliques du dossier de stockage de GiteaPC vers vos dossiers de projet pour tester des outils sans avoir à les pousser constamment sur la forge.

Comme vous pouvez le voir, c'est plein de possibilités !


Kikoodx Hors ligne Labélisateur Points: 2652 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.
Je devrais dormir, et pourtant me voilà.
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 11:22 | #


En vérifiant dans le code de mkg3a, a priori la seule façon dont il peut terminer sur ce message à partir d'une commande valide et sans autre erreur serait une erreur un peu obscure sur le PNG. Je sais que mkg3a ne supporte pas les PNG qui ont un canal alpha (mais pour ça il y a un message, "unsupported depth"). Je te suggère de vérifier qu'il n'y a pas de subtilités sur tes PNG ; une bonne façon est de les exporter en BMP puis de nouveau en PNG, puisque la plupart des informations disparaissent durant le passage en BMP.
Kikoodx Hors ligne Labélisateur Points: 2652 Défis: 11 Message

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


Resalut ! J'ai bataillé avec mkg3a et j'ai réussi à le faire fonctionner ! J'ai ajouté des guillemets pour éviter des erreurs étranges, et ai changé l'emplacement de myadd.bin dans la commande.
mkg3a -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" myaddin.bin /home/kdx/projects/painfull-success-cg/PainfullSuccess.g3a

Je devrais dormir, et pourtant me voilà.
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 12:55 | #


C'est bien que ça marche, mais honnêtement je ne vois pas pourquoi ça change. L'ordre marche très bien chez moi, d'ailleurs.

mkg3a gintctl.bin -n basic: -i uns:/home/el/Projects/gintctl/assets-cg/icon-uns.png -i sel:/home/el/Projects/gintctl/assets-cg/icon-sel.png /home/el/Projects/gintctl/gintctl.g3a

J'ai deux hypothèses ; ou bien fish a quelque chose à faire avec les :, ou bien sur ton système mkg3a n'a pas réussi à trouver getopt() durant la compilation, et du coup il utilise le getopt() intégré (qui malgré la description n'est pas conforme à la description moderne de POSIX).

Si tu as encore les logs de compilation de mkg3a, j'aimerais bien comprendre. Merci pour la PR, je mergerai sans hésiter, j'attends juste de comprendre.
Kikoodx Hors ligne Labélisateur Points: 2652 Défis: 11 Message

Citer : Posté le 21/03/2021 13:31 | #


Lephenixnoir a écrit :
C'est bien que ça marche, mais honnêtement je ne vois pas pourquoi ça change. L'ordre marche très bien chez moi, d'ailleurs.

[...]

J'ai deux hypothèses ; ou bien fish a quelque chose à faire avec les :,

J'ai testé dans bash et ash, j'avais les mêmes problèmes d'ordre.

Lephenixnoir a écrit :
ou bien sur ton système mkg3a n'a pas réussi à trouver getopt() durant la compilation, et du coup il utilise le getopt() intégré (qui malgré la description n'est pas conforme à la description moderne de POSIX).

Si tu as encore les logs de compilation de mkg3a, j'aimerais bien comprendre. Merci pour la PR, je mergerai sans hésiter, j'attends juste de comprendre.

La théorie du getopt me semble crédible, Alpine est basé sur musl.
J'ai recompilé mkg3a de zéro, voici les logs. Je ne vois aucun problème, mais on ne sait jamais.
cmake .. :
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - 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: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at src/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Searching 16 bit integer - Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- libpng icon loading support enabled.
-- Found ZLIB: /lib/libz.so (found version "1.2.11")
-- Found PNG: /usr/lib/libpng.so (found version "1.6.37")
-- Version: 0.5.0-3-g84ac914
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kdx/opt/mkg3a/build

make :
Scanning dependencies of target doc
[  7%] Generating mkg3a.1.gz
[  7%] Built target doc
Scanning dependencies of target images
[ 14%] Building C object src/CMakeFiles/images.dir/images.c.o
[ 21%] Linking C static library libimages.a
[ 21%] Built target images
Scanning dependencies of target g3a-util
[ 28%] Building C object src/CMakeFiles/g3a-util.dir/g3a.c.o
/home/kdx/opt/mkg3a/src/g3a.c: In function 'g3a_mkHeader':
/home/kdx/opt/mkg3a/src/g3a.c:131:37: warning: unused parameter 'type' [-Wunused-parameter]
  131 | struct g3a_header *g3a_mkHeader(int type) {
      |                                 ~~~~^~~~
[ 35%] Building C object src/CMakeFiles/g3a-util.dir/util.c.o
[ 42%] Linking C static library libg3a-util.a
[ 42%] Built target g3a-util
Scanning dependencies of target g3a-updateicon
[ 50%] Building C object src/CMakeFiles/g3a-updateicon.dir/g3a-updateicon.c.o
[ 57%] Linking C executable g3a-updateicon
[ 57%] Built target g3a-updateicon
Scanning dependencies of target g3a-icondump
[ 64%] Building C object src/CMakeFiles/g3a-icondump.dir/g3a-icondump.c.o
[ 71%] Linking C executable g3a-icondump
[ 71%] Built target g3a-icondump
Scanning dependencies of target convert565
[ 78%] Building C object src/CMakeFiles/convert565.dir/convert565.c.o
[ 85%] Linking C executable convert565
[ 85%] Built target convert565
Scanning dependencies of target mkg3a
[ 92%] Building C object src/CMakeFiles/mkg3a.dir/mkg3a.c.o
[100%] Linking C executable mkg3a
[100%] Built target mkg3a

doas make install :
[  7%] Built target doc
[ 21%] Built target images
[ 42%] Built target g3a-util
[ 57%] Built target g3a-updateicon
[ 71%] Built target g3a-icondump
[ 85%] Built target convert565
[100%] Built target mkg3a
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/share/man/man1/mkg3a.1.gz
-- Installing: /usr/local/bin/mkg3a
-- Installing: /usr/local/bin/g3a-updateicon

Je devrais dormir, et pourtant me voilà.
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 14:12 | #


Merci, il n'a donc pas utilisé le getopt intégré. En fait musl en fournit bien un, mais sans le comportement utile d'autoriser le mélange options/arguments. Vois ce bout de la documentation pour l'explication.

Je vais donc fusionner ta PR, merci. Il faudrait faire pareil avec les arguments de fxg1a, qui utilise aussi getopt. Bienvenue dans le monde merveilleux de la distribution de logiciels sur des plateformes utilisant différents OS, différentes libs standard, différents noyaux. x3

Est-ce que tu préfères nettoyer ta PR (le commit de merge ne va pas vraiment passer) ou que je pousse directement ?
Kikoodx Hors ligne Labélisateur Points: 2652 Défis: 11 Message

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


Ah merci ! Je n'ai pas touché à fxg1a, j'ai mis à jour ma PR pour qu'elle soit moins sale. Tu peux la merge ou faire ton propre commit, tant que c'est fixé
Intéressant comme lien, GNU est vraiment parti dans tous les sens avec leurs implémentations.
Je devrais dormir, et pourtant me voilà.
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 14:28 | #


Parfait. getopt n'a pas été inventé dans sa forme POSIX, ça a sans doute dérivé avant d'être normalisé.
Kamrade Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 21/03/2021 19:49 | #


Bonsoir j’essaye d'installer libprof avec giteapc, mais j'ai une erreur comme quoi le fichier giteapc.make n'existe pas, alors que j'ai bien installer le fxsdk avec giteapc (PS je suis sous Ubuntu WSL)
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 20:26 | #


Est-ce que je peux avoir une copie plus précise des messages affichés par GiteaPC ?
Kamrade Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 21/03/2021 20:32 | #


Traceback (most recent call last):                                                                                        File "/home/kamarade/.local/bin/giteapc", line 150, in <module>                                                           sys.exit(main(sys.argv[1:], commands))                                                                                File "/home/kamarade/.local/bin/giteapc", line 145, in main                                                               return commands[argv[0]]["function"](*data, **options)                                                                File "/home/kamarade/.local/lib/giteapc/giteapc/repo.py", line 339, in install                                            search_dependencies(args, set(), basic_plan, use_https=use_https,                                                     File "/home/kamarade/.local/lib/giteapc/giteapc/repo.py", line 325, in search_dependencies                                search_dependencies(r.dependencies(), fetched, plan, **kwargs)                                                        File "/home/kamarade/.local/lib/giteapc/giteapc/repo.py", line 325, in search_dependencies                                search_dependencies(r.dependencies(), fetched, plan, **kwargs)                                                        File "/home/kamarade/.local/lib/giteapc/giteapc/repos.py", line 176, in dependencies                                      metadata = self.metadata()                                                                                            File "/home/kamarade/.local/lib/giteapc/giteapc/repos.py", line 158, in metadata                                          with open(self.folder + "/giteapc.make", "r") as fp:                                                                FileNotFoundError: [Errno 2] No such file or directory: '/home/kamarade/.local/share/giteapc/Lephenixnoir/gint/giteapc.make'


Ajouté le 21/03/2021 à 20:34 :
Voila le message d erreur
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 21/03/2021 20:41 | #


J'ai du mal à voir comment le fichier peut ne pas être là, puisqu'il est bien présent sur la branche master du dépôt gint.

Tu peux essayer de demander la dernière version master, sans faute :

% giteapc install -u Lephenixnoir/gint@master

Si ça ne marche pas, tu peux aussi supprimer et re-clôner le dépôt.

% giteapc uninstall Lephenixnoir/gint
% giteapc install -u Lephenixnoir/gint@master

Dans tous les cas tu devrais avoir ce fichier.
Kamrade Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 21/03/2021 20:54 | #


Merci ! la première option a marché
Potter360 Hors ligne Rédacteur Points: 779 Défis: 0 Message

Citer : Posté le 16/04/2021 17:16 | #


Kikoodx a écrit :
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).


J'ai bien mis cela oui.

Je ne trouve /.local ni dans /home ni dans /home/mon_nom_dutilisateur ...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 16/04/2021 17:20 | #


Le . dans .local en fait un dossier caché ; pour l'afficher dans le terminal, utilise ls -a ; pour l'afficher dans ton gestionnaire de fichiers, tu peux chercher Affichage » Fichiers cachés, ou Ctrl-H, ou autre mécanisme classique.
Potter360 Hors ligne Rédacteur Points: 779 Défis: 0 Message

Citer : Posté le 16/04/2021 17:22 | #


Voici mes fichiers cachés dans le dossier utilisateur :

.
..
.bash_history
.bash_logout
.bashrc
.bashsrc
.cache
.dbus
.hushlogin
.landscape
.motd_shown
.nvm
.profile
.ssh
.sudo_as_admin_successful
.viminfo


Donc pas de .local...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Dark storm Hors ligne Labélisateur Points: 11468 Défis: 176 Message

Citer : Posté le 16/04/2021 17:25 | #


Tu peux le créer : mkdir -p ~/.local/bin
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 779 Défis: 0 Message

Citer : Posté le 16/04/2021 17:26 | #


Mais heuuuu :
mkdir: cannot create directory ‘/root/.local/bin’: File exists

Du coup je peux m'y mettre ? C'est la meme chose ?

Ajouté le 16/04/2021 à 17:27 :
Non c'est bon...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 16/04/2021 17:28 | #


Arrête d'utiliser sudo, ce n'est vraiment pas comme ça que GiteaPC doit marcher.
Dark storm Hors ligne Labélisateur Points: 11468 Défis: 176 Message

Citer : Posté le 16/04/2021 17:31 | #




On va reprendre du début. Tu es connecté en tant que quel utilisateur sur WSL ? Giteapc est fait pour être utilisé en tant que user, pas en tant que root.
De plus, le fait que $HOME soit setup sur /root mais que tu n'a pas les droits d'écriture dessus me laisse penser que t'as fait un truc crado entre session user et root.

Comme dit Lephe, arrête d'utiliser sudo. Et tu peux faire echo "alias sudo=/bin/false" >> .bashrc histoire de pas céder à la tentation.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 779 Défis: 0 Message

Citer : Posté le 16/04/2021 17:32 | #


Je suis connecté sur l'utilisateur principal...
Mais
giteapc install Lephenixnoir/sh-elf-binutils:any Lephenixnoir/sh-elf-gcc:any Lephenixnoir/fxsdk Lephenixnoir/gint
marche, donc c'est bon je pense !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !

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 - 2021 | Il y a 54 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