Page 1 sur 1

PB6 sur Raspberry Pi

Publié : sam. 12/mars/2022 22:52
par Ar-S
Salut salut,

Je viens de terminer (enfin) mon serveur de fichier vidéo sur Raspberry Pi 4
Et comme avec la beta 5 de PB6 il y a une version ARM64 qui est sorti, j'ai dit : Pourquoi pas l'installer...

Alors je ne suis pas un expert en Linux du tout (même si j'ai pourtant déjà tâté de Ubuntu 16.xx à 20.xx ainsi que Mint, Manjaro, et Batocera)
J'ai donc cette fois installé la version console pour Raspberry puis j'ai greffé le minimum vitale graphique. Ainsi j'ai un OS léger avec juste ce que je veux dedans (j'ai ajouté vnc, plex, firefox, python).

Donc je partage mon aventure qui fera marrer les pro linuxiens mais qui aidera peut-être les amateurs qui voudraient s'essayer à coder sous Raspberry.

Je me retrouve donc avec un petit système prêt à accueillir PB.
Je le télécharge, je le décompresse avec la commande tar

Dans le dossier, on trouve le fichier checkinstall.sh
Comme c'est un script python, je double clique dessus mais rien... Je farfouille sur le net et je vois que pour lancer un script py du terminal il faut faire précéder le nom du script par ./
Je lance donc un terminal du dossier purebasic et je tape ./checkinstall.sh et là pouf, le script m'affiche la commande sudo avec toutes les libs nécessaires ! :P
Tout heureux, copie colle cette ligne et l’exécute..
ça brasse vite fait et me lance une erreur sur la lib Gnome qui n'existe pas. :?
Je supprime cette lib de la ligne de commande et je relance.
Et là BIM tout s'installe niveau lib.. :P :P

Je lance PB...
Et il s'ouvre

Je fais un premier test avec un code qui permet de lister les fichiers d'un dossier pour voir si je peux utiliser runprogram et la commande ls (équivalente de dir sous windows).

Voilà le script :

Code : Tout sélectionner

InitialPath$ = "/home/pi/"   ; set initial path to display (could also be blank)
mpath$ = PathRequester("Please choose your path", InitialPath$ )
If mpath$
  Debug "You have selected following path:"+mpath$
  
  p=RunProgram("ls",mpath$,"",#PB_Program_Hide|#PB_Program_Open|#PB_Program_Read|#PB_Program_Error)
While ProgramRunning(p)
  If AvailableProgramOutput(p)
    t$ = ReadProgramString(p)
    Debug t$
  EndIf
  Wend

Else
  MessageRequester("Information", "The requester was canceled.", 0) 
EndIf
Et la compilation à marché ! Je suis trop content. 8) 8) 8)

Fin de l'aventure.
Je vais faire des tests plus avancé mais c'est déjà une belle victoire.
P.S : Je déteste linux, c'est un truc de masochiste. Désormais j'appellerai les fan de linux des sudomites ! :mrgreen:

Re: PB6 sur Raspberry Pi

Publié : dim. 13/mars/2022 10:08
par case
:D quelle expérience , merci du partage

Re: PB6 sur Raspberry Pi

Publié : dim. 13/mars/2022 10:50
par falsam
Hello Ar-s. Merci pour ce partage d'expérience.

Re: PB6 sur Raspberry Pi

Publié : dim. 13/mars/2022 21:55
par Marc56
Merci pour le didacticiel.

Ps. checkinstall.sh n'est pas écrit en Python, c'est un simple script shell, l'équivalent d'un batch sous Windows.
La première ligne du script (appelée Shebang indique au système avec quoi le lancer)
C'est la seule ligne d'un script (la première) où le caractère de commentaire (#) est ignoré.
#!/bin/sh indique que le script est interprété par le shell sh, qui est sur les systèmes linux le plus souvent bash, il en existe plein d'autres csh, zsh, ksh etc (tout comme sous windows on a command.com pour win 9x et cmd.exe pour la génération NT)
Pour simplifier les scripts, on met sh qui est un lien symbolique vers le vrai shell (taper: ls -l /bin/sh) et permet de lancer de la même façon quelque soit le shell utilisé.

le ./ qu'on met pour lancer un programme sert à forcer son lancement bien qu'on soit déjà dans le répertoire.
On peut aussi préciser le chemin complet ou relatif ex:
$ /usr/home/purebasic/check _install.sh
$ ~/purebasic/checkinstall.sh
On doit taper l'extension car elle fait partie du nom complet.
C'est une sécurité unix de ne pas permettre de lancer un programme par son simple nom, car comme le système ne s'occupe pas des extensions, si on tapait * alors tous les programmes du répertoire se lancent ensemble...
(on peut modifier ça en ajoutant un . dans la variable PATH, mais ça peut faire des dégâts)
L'autre alternative pour lancer un script est de le lancer en paramètre du shell.
Pareil, on ne tapes que 'sh' quelque soit le shell utilisé.
Ex:
$ sh checkinstall.sh

Pour connaitre le type d'un fichier, on utilise la commande file
$ file <fichier>

Pour voir la page de manuel du shell
$ man bash
Pour chercher quelque chose dans la page
/<mot_à_trouver>
n (next) pour aller a suivant
p (previous) pour aller au précédent
q (quit) pour quitter
(Ce sont les commandes du pager less qui est souvent déclaré par défaut)

:wink:

Re: PB6 sur Raspberry Pi

Publié : lun. 14/mars/2022 15:55
par Ar-S
Merci pour ces précisions Marc56

Re: PB6 sur Raspberry Pi

Publié : mar. 15/mars/2022 0:04
par Ollivier
Je suis resté collé à la qualification de sudomites...
S'il n'y avait pas 25000 morts de faim chaque jour, je te dirais que je suis mort de rire.

En gros, t'as réussi à démarrer une console sous PB sous Linux ?

Re: PB6 sur Raspberry Pi

Publié : mar. 15/mars/2022 0:44
par Ar-S
Ollivier a écrit : mar. 15/mars/2022 0:04 Je suis resté collé à la qualification de sudomites...
S'il n'y avait pas 25000 morts de faim chaque jour, je te dirais que je suis mort de rire.
J'avoue j'en suis assez fier :mrgreen:
Ollivier a écrit : mar. 15/mars/2022 0:04 En gros, t'as réussi à démarrer une console sous PB sous Linux ?
C'est ça, et j'en suis assez fier aussi :mrgreen:

Re: PB6 sur Raspberry Pi

Publié : mar. 15/mars/2022 6:38
par Ollivier
Good. Et ça marche ça ?

Code : Tout sélectionner

define pmccntr.i
!asm volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r" (pmccntr));
Debug pmccntr
C'est sensé donner le nombre de cycles d'horloge CPU par paquets de 64 cycles.

Re: PB6 sur Raspberry Pi

Publié : mar. 15/mars/2022 12:11
par Ar-S
Non,
error: ‘pmccntr’ undeclared (first use in this function); did you mean ‘v_pmccntr’?
317 | asm volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r" (pmccntr));
| ^~~~~~~
| v_pmccntr
purebasic.c:317:52: note: each undeclared identifier is reported only once for each function it appears in
purebasic.c:317:1: error: invalid lvalue in ‘asm’ output 0
317 | asm volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r" (pmccntr));

Re: PB6 sur Raspberry Pi

Publié : mar. 15/mars/2022 21:08
par Ollivier
La manuel gcc est tellement big que je m'y perds. Peut-être un préfixe v_ dans v_pmccntr comme le compilateur suggère. Mais, sans tenter moi-même, je te fais perdre du temps...

Re: PB6 sur Raspberry Pi

Publié : dim. 20/mars/2022 17:31
par Ar-S
Je t'avais anticipé. ça ne passe pas non plus.
De toute façon, pour le moment, le PI fonctionne à merveille pour ce qu'il a à faire, à savoir un serveur multimedia. :mrgreen: