Planète Casio - Projets de programmation - Flux RSS http://www.planet-casio.com Programmes Casio, Jeux, Cours pour Calculatrices Casio fr-FR https://www.planet-casio.com/images/logo.gif Planète Casio - Projets de programmation - Flux RSS http://www.planet-casio.com 55 50 Programmes Casio, Jeux, Cours pour Calculatrices Casio. Tue, 13 Apr 2021 09:59:44 GMT Tue, 13 Apr 2021 09:59:44 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 [Discussion] Planète Casio Brawl, un jeu de combat pour calculatrices https://www.planet-casio.com/Fr/forums/topic16706--.html Bonjour à toutes et à tous ! Ce topic a pour objectif d'envisager la possibilité de créer un jeu de combat type Super Smash Bros. À l'heure actuelle, aucun jeu/protoype n'existe. massena_brawl1x2.png Ce topic a été créé après la déception engendrée par mon poisson pas frais dans la 203ème Revue des Projets. Idées générales du projet : :here: Le jeu serait développé sur Graph 90+E pour plus de facilités, et avec gint, pour avoir un jeu fluide. :here: Le gameplay consisterait à se bourrer de coups pour augmenter la jauge de dégâts de ses adversaires. Une jauge de dégâts élevée propulse les adversaires plus loin. Pour gagner, vous éjectez tous vos adversaires en dehors de l'écran. :here: Le casting serait composé de personnages issus de jeux plus ou moins emblématiques de Planète Casio, idem pour les arènes. Questions soulevées : :here: Multijoueur local ? Si oui, comment on le gère ? Câble 3-pin ou bien deux joueurs sur le même clavier ? :here: Combien de touches, quels types d'attaques ? Shift > Attaque normale, Alpha > Attaque spéciale. La touche de saut intégrée au pavé directionnel ou sur une touche à part ? :here: Comment on gère les attaques spéciales spécifiques aux personnages ? Comment on programme tout ce bordel ? :here: Les difficultés techniques ? massena_brawl2x2.png massena_brawl3x2.png L'idéal serait aussi d'avoir un support du modding à la fin. Si jamais ce projet est un jour entamé, il ne pourra pas se faire seul (excepté si un dev-graphiste-game-designer d'excellence a une infinité de temps et de volonté :E). Comment éviter de tomber dans un projet-type Odyssée et de sombrer petit à petit ? En espérant que ce topic calme vos ardeurs et serve un jour... Sun, 04 Apr 2021 20:53:10 +0200 SLE, un éditeur de niveau pour les normies https://www.planet-casio.com/Fr/forums/topic16698--.html Bonjour ! Je vous présente aujourd'hui SLE - Simple Level Editor - un éditeur de niveau conçu pour être simple d'utilisation et accessible à tous. => Dépôt de SLE sur sourcehut L'éditeur est séparé en deux fenêtres, voir le README sur le dépôt pour plus d'informations. Vous pouvez l'essayer dès maintenant, en éditant le fichier `sample.kble`. Attention, le programme ne peut pas encore créer de nouveau niveau ! Le but de l'éditeur étant de rester simple, il devrait être terminé d'ici la fin de la semaine ^^ La fenêtre de l'éditeur est de la taille de l'écran de la 90+E par défaut. Pour configurer l'éditeur, lisez README et modifiez include/config.h avant de recompiler. https://www.planet-casio.com/storage/forums/2021-03-25_13-03-1616674101-16698.png Pourquoi SLE ? Le but de ce projet est de remplir un objectif qui n'est pas ciblé par KBLE : je cherchais un éditeur extrêmement simple, léger et rapide pour faire un petit jeu à niveaux de taille fixe et graphique. KBLE est uniquement basé sur des couleurs, SLE utilise un tileset passé en paramètre pour afficher les textures de tuiles. Pour des jeux simples et reposant sur les graphismes, cet éditeur est plus approprié que KBLE. SLE utilise le format de KBLE ! Tout programme utilisant des .kble supporte KBLE et SLE en conséquence. kble2lua pour une conversion simple d'un .kble en fichier Lua, fonctionne évidement très bien avec les niveaux créés par SLE (exactement le même format). Le but ultime est de permettre aux éditeurs et outils liés à KBLE d'être utilisés de manière transparente. SLE devrait être compilable sur tous les systèmes d'exploitation POSIX : Linux, les *BSD, OS X, etc. supportés par raylib. Windows n'étant pas POSIX compliant, ce système d'exploitation n'est pas une cible supportée. Détails techniques SLE est configuré avec cmake, j'aurais préféré utiliser un Makefile mais c'est arrangeant pour les détails X11/wayland. La codebase est écrite en C90, avec pas mal de warnings, `-pedantic` inclut. `-Werror` est activé. Ce projet utilise le format de fichier de KBLE et est compatible avec les outils liés. => KBLE => kble2lua Je développe sous Alpine Linux, avec tcc comme compilateur et raylib-wayland 3.0.0. Si vous avez des problèmes sur d'autres systèmes/versions dites le moi ! Thu, 25 Mar 2021 13:24:20 +0100 Jeu isométrique sans nom https://www.planet-casio.com/Fr/forums/topic16679--.html Salut ! Vacances oblige, je suis en train de développer un jeu. Et comme j'aime avoir des problèmes, je me suis lancé dans un projet de jeu dans une vue isométrique. J'avance doucement sur le projet, mais entièrement à l'aveugle... En effet je ne sais absolument pas quoi faire dessus :E Donc pour le moment j'ai programmé un moteur isométrique, les déplacements sur la carte et un champ de vision autour du joueur... Mais sans aucune idée de jeu utilisant tout ça :E Je vais continuer de travailler dessus jusqu'à trouver une idée de jeu. Si vraiment je ne trouve rien, j'abandonnerai sûrement le projet (mais vous me connaissez, je n'abandonne jamais :lol: ) Voilà une image du "jeu" actuel : https://www.planet-casio.com/storage/forums/DispCap1-16679.bmp En voyant ce type de vue, ça me fait penser à différentes idées de gameplay, notamment un jeu de gestion ? Ou un SimCity ? Je vais bien voir ce que le temps me réserve :E Le dépôt est accessible ici : https://gitea.planet-casio.com/Tituya/isometric_game/src/branch/master Mon, 01 Mar 2021 19:08:46 +0100 KBLE, l'éditeur de niveau que personne n'a demandé. https://www.planet-casio.com/Fr/forums/topic16653--.html Bonjour ! Etant donné que KBLE n'est pas uniquement dédié à JTMM2, j'ai décidé de déplacer les informations ici. KBLE est un éditeur de niveau modal, conçu pour être le plus efficace possible et entièrement utilisable au clavier. Bien qu'étant entièrement utilisable au clavier, il est possible de combiner clavier/souris. Dans l'état actuel, KBLE supporte : :here: Sélection clavier. :here: Sélection souris. :here: Actions. :here: Zoom. :here: Sauvegarde et chargement. :here: Répétition de déplacement et paramètres d'actions. :here: Configuration. Pourquoi apprendre KBLE ? Pour plus d'informations, rendez vous sur la page du projet Sourcehut. Ci-dessous se trouvent les articles des RDP où est apparu KBLE, et des vidéos de démonstration par ordre chronologique. Significations de l'acronyme KBLE, c'est pour Kikoodx Basic Level Editor ? C'est pour péter un KaBLE Revue des Projets RDP 198 Vidéos Jour 8 : démonstration des fonctionnalités souris. Jour 9 : démonstartion des modes au clavier. Liens utiles Parcourir le dépôt Git de KBLE. Ouvrir une issue (report de bug, proposition de fonctionnalité, etc.). Projets utilisant KBLE Painfull Success (GNU/Linux) Painfull Success CG (Casio 90+e) Mon, 01 Feb 2021 15:36:53 +0100 [Linux] Screen receiver kernel module https://www.planet-casio.com/Fr/forums/topic16648--.html Sorry I'm posting in English, I don't know French but this seems to be the best / most active forum I've found on these calculators. I've written a module for the Linux kernel, which detects a casio calculator in screen receiver mode and creates a v4l2 video device for it, making it possible to use it with tools like ffmpeg easily. The source code is availablle here. I've only tested it with an fx-9750GIII but it should work on all fx / Graph calculators. The documentation is yet to come, but the process is fairly simple: download the headers for your kernel, set the path to it in the makefile (replace /usr/src/linux), run make, and finally sudo insmod cgscreen.ko. Feedback is welcome. Fri, 29 Jan 2021 23:35:34 +0100 folia - un moteur 2d personnalisable pour calculatrice https://www.planet-casio.com/Fr/forums/topic16643--.html bonjour ce topic est pour vous informer de la (fin) de la première version de mon moteur de jeu: folia ^^ ce topic servira de lieu de discutions et de change log. :here: version 1: -collisions -gravité configurable -système d'objets a crées et paramétrer ---position x,y ---taille x,y ---point de capture x,y pour la tilemap textures ---gravité ---collisions oui ou non -fonctions pour ajouter des fonctionnalités personnalisés workspace.objects[1].x = 0; //toi du haut workspace.objects[1].y = à; workspace.objects[1].size_x = 250; workspace.objects[1].size_y = 20; workspace.objects[1].tilemap_capture_x = 0; workspace.objects[1].tilemap_capture_y = 25; workspace.objects[0].x = 10; //player workspace.objects[0].y = 30; workspace.objects[0].size_x = 4; workspace.objects[0].size_y = 8; workspace.objects[0].tilemap_capture_x = 0; workspace.objects[0].tilemap_capture_y = 0; workspace.objects[0].gravity = 1; workspace.objects[2].x = 0; //sol workspace.objects[2].y = 0; workspace.objects[2].size_x = 250; workspace.objects[2].size_y = 20; workspace.objects[2].tilemap_capture_x = 0; workspace.objects[2].tilemap_capture_y = 25; :here: version 2: --objets non affectés par le camera oui ou non - ex: boite de dialogue :here: a venir: ... Sun, 24 Jan 2021 21:55:55 +0100 Création programme pour trouver le cours que j’aurai insérer rapidement via une numérotation https://www.planet-casio.com/Fr/forums/topic16638--.html Comment est ce que je peux créer un programme ou je pourrai insérer mon propre cours mais d’une façon comme les programmes du lycée ou faudrait mettre un numéro pour trouver la partie qui nous intéresse ? Sun, 17 Jan 2021 13:58:00 +0100 Adventure of Death - RPG https://www.planet-casio.com/Fr/forums/topic16637--.html Bonjour a tous, Petit topic pour vous présenter un nouveau projet après avoir passé quelques années à faire le mort: Adventure of Death Il s'agit d'un petit RPG classique en BASIC qui se voudra assez complet (une quête principale + quelques petites quêtes annexes) et qui trouvera son originalité dans le scénario du moins j'espère... Le projet avance tranquillement, mais aucune idée de quand il sortira, mais vu qu'il avance bien il est temps d'en parler un peu! Pour le scénario il est simple: vous êtes mort.....Oui bon attendez deux secondes c'est un peu plus compliqué que ça. Vous êtes un jeune homme, tout ce qu'il y a de plus ordinaire avec un rêve: vivre une grande aventure! Malheureusement vous n'êtes pas très dégourdi et à peine parti vous mourez dans des circonstances tragiques. Vous vous réveillez alors dans le royaume des morts, une nouvelle vie s'offre a vous, alors pourquoi ne pas vivre une aventure sur cette nouvelle terre qui s'offre à vous? En terme d'avancement j'ai un moteur qui fonctionne bien et qui sera amélioré pour ajouter de nouvelles mécaniques mais le principal est fait, le scénario est en cours d'écriture et les graphismes sont....en cours...ouais disons que ça avance x). Après il reste encore pas mal de trucs à faire type level design, implémentation de l'histoire, écriture des quêtes annexes, etc... Et il reste tout de même quelques problèmes: - mon générateur de maps qui permet d'optimiser la taille de stockage mais elles sont très lentes a dessiner - le fait que je soit pas très doué pour les graphismes x) (du coup si vous avez de liens pour des sprites en 10x10 je prend :E ) Petite image pour finir parce que ça ne mange pas de pain ^^ https://www.planet-casio.com/storage/forums/invt-181131.pnghttps://www.planet-casio.com/storage/forums/essai1-16637.png Avancement: - Mécaniques - Maps →fonctionnel mais trop lent - Monstres →50% - Interaction →75% - Personnage →50% - Graphisme+Histoire - histoire principale →50% - histoire secondaire →10% - implémentation →0% - graphismes →30% Sat, 16 Jan 2021 23:20:23 +0100 Ajout des threads pour Gint https://www.planet-casio.com/Fr/forums/topic16617--.html Yo, J'ai eu deux semaines durant ces vacances de Noël pour m'amuser un peu et j'ai voulu porter mon prototype de traceur sur la Graph90+E. Comme le temps commence sérieusement à me manquer ces derniers temps j'ai décidé d'utiliser Gint pour aller plus vite. Sauf....que c'est partie en cacahouète très vite et je me suis retrouvé à implémenter un système de "contexte chargeable à la volé" pour pouvoir tracer plusieurs choses en parallèle. Outre le fait de faire un truc complètement overkill, je me suis dit que Gint aura besoin d'un système de threading un jour ou l'autre pour pouvoir faire des trucs incroyablement pétés si on le couple avec, je ne sais moi...le port 3-pins pour lire de la musique en même temps que dessiner des frames ou avec un driver USB/UBC pour envoyer des infos en temps réel sur nos laptop pour recevoir des logs de debug (qu'on pourra coupler avec GDB, Gidra ou tout autre joyeuseté), ... J'ai donc décidé de mettre ça au propre. À la base, je voulais en faire une librairie à part car déboguer un truc concurrentiel au bas-niveau...heuuu...chiant. Malheureusement, ça s'intègre trop profondément dans Gint pour pouvoir faire ça proprement. J'ai donc créer une branche "thread" sur le repo de Gint et j'ai commencé à pondre un truc. J'aurais aimé pouvoir vous donnez quelque chose de finis, utilisable et documenté mais entre Noël et le nouvel an, j'arrive à la fin des "vacances" sans avoir finis mes carabistouilles. Donc j'ai poussé ce que j'ai sur un fork du dépôt de Gint (https://gitea.planet-casio.com/Yatis/gint-with-thread) et j'écrit ce topic pour laisser une trace de cette aventure ma foi fort sympatoche. Et aussi dans l'espoir de pouvoir reprendre ce truc a un moment. 'fin bref, qu'est-ce que c'est quoi les threads ? Et à quoi ça sert ? Pour faire super simple, les threads sont des "mini-processus" qui exécute du code chacun de leur côté en se partageant le même adressage mémoire. En gros, dans note cas, ça donne un semblant de parallélisme (on a l'impression qu'on exécute du code en parallèle). Alors que non ! Que nenni ! C'est une grosse entourloupe, je donne juste un petit temps de CPU a chaque thread pour qu'il s'amuse avec après PAF je le retire et j'en mets un autre puis PAF je le retire et j'en mets un autre, .... (vous pouvez aller voir la page qui donne des explications le Round-robin, c'est ce que j'ai mis en place). Qu'est-ce que tu as fait du coup ? * j'ai mis en place un ordonnanceur pour permettre l'exécution de plusieurs thread. * j'ai mis en place d'une interface grandement inspirée de celle d'UNIX pour les processus. * j'ai mis en place d'une notion de signaux pour contrôler finement les threads. * j'ai mis en place d'interface "utilitaire" pour, plus tard, pouvoir configurer le fonctionnement des threads plus finement. Pour l'instant c'est...utilisable MAIS Gint n'est pas prêt pour assuré une stabilité avec le code qu'il propose car il n'a pas été pensé pour que plusieurs threads exécute le code, il faudra le sécuriser avant. Au-delà de ça, il me reste à corriger un crash qui se produit avec une feature de mon cru qui permet, quand un thread meurt, d'effectuer un "saut non-local" et de revenir au moment de sa création, ce qui est méga pratique pour revenir au niveau du "bootstrap" de Gint (la partie du code ou Gint appelle la fonction "main()") ça permet, en quelque sorte, de threader le kernel. (Je sais que vous vous demandez "mais...heuu...dans quel but ? Pourquoi tu fais ça ? "......bah c'est méga S-W-A-G tavu ! ; puis ça permettra de faire tourner des drivers en fond même lorsqu'on revient dans "le côté obscur" de Gint....ce qui est parfaitement inutile ! :D Et les pertes de performance dans tous ça ? Bien sur, il y a des pertes de performance. Ceci-dit, je n'ai pas encore fait de tests pour avoir un comparatif concret sur les pertes de performance entre un addins avec le support des threads et un addin "classique". En théorie, l'ordonnanceur ne fonctionne pas continuellement ce qui devrai apporter des pertes négligeable pour la gestion des interruptions. La ou ça risque de ralentir, c'est lorsqu'on devra sécuriser la plupart du des API de Gint avec des mutex pour qu'elles deviennent stable avec plusieurs threads. En gros, ça rajoute encore quelque ligne de code à exécuter en plus et on risque d'être limité par la rapidité de l'ordonnanceur. Cependant, une interface est déjà en place pour "piloté" l'ordonnanceur donc on pourra "l'éteindre" lors de moment critique (genre le dessin). Pour ce qui est des prévisions pour ceux qui aimerai participer au développement de ce "trucs": * voir comment séparer la partie "thread" de Gint pour en faire une lib(?) * revoir comment j'ai installé la partie "threads" (j'ai tous mis dans la ILRAM pour certaines raisons qui ne sont plus valable depuis le dernier commit) * corrigé les problèmes actuels (bugs, crash, performance, ...) * sécuriser 6000% du code de Gint pour le rendre thread-compatible. * écrire une documentation complète des API mis en place (wiki) * faire un MAXIMUM de tests et de retour pour fignoler les interfaces. * support des SH3 (en théorie il manque juste à modifier le gestionnaire d'interruption des SH3 pour appeler l'ordonnanceur mais comme j'ai rien pour tester...complexe) Conclusions de mes vacances: https://www.planet-casio.com/storage/forums/envie_dkernel-16617.png Sun, 03 Jan 2021 21:14:19 +0100 GiteaPC : Installer et mettre à jour automatiquement des projets Gitea https://www.planet-casio.com/Fr/forums/topic16614--.html 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. Vous pouvez obtenir un environnement de développement avec gint et le fxSDK avec la commande ci-dessous. 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. Le fxSDK dépend aussi de la bibliothèque Python PIL (pour manipuler des images) : # Debian, Ubuntu, Ubuntu dans WSL, Linux Mint, dérivés de Debian : % sudo apt install python3-pil # ArchLinux, Manjaro, dérivés d'ArchLinux : % sudo apt install python-pillow Une fois l'installation réalisée avec GiteaPC, vous pouvez supprimer vos anciens clônes des dépôts. Vous pouvez toujours consulter les clônes 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 ! ^^ Fri, 01 Jan 2021 23:19:34 +0100