This commit is contained in:
parent
5b4f569312
commit
5aa73f345a
1 changed files with 63 additions and 50 deletions
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Compiler un paquet Postmarket OS
|
title: Compiler un paquet Postmarket OS
|
||||||
description: Installation de pmbootstrap et compilation d'un paquet Postmarket OS
|
description: Installation de pmbootstrap pour la compilation d'un paquet Postmarket OS. OS basé sur Alpine pour téléphone mobile.
|
||||||
slug: pmbootstrap-own-paquet
|
slug: pmbootstrap-own-paquet
|
||||||
date: 2024-02-18 00:00:00+0000
|
date: 2024-02-18 00:00:00+0000
|
||||||
categories:
|
categories:
|
||||||
|
@ -22,11 +22,13 @@ On peut aussi l'utiliser pour compiler son propre paquet et l'installer sur son
|
||||||
Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap).
|
Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap).
|
||||||
|
|
||||||
Une fois installé et configuré, il faut d'abord préparer son environnement de travail.
|
Une fois installé et configuré, il faut d'abord préparer son environnement de travail.
|
||||||
|
Il est parfois nécessaire de mettre à jour le repository pmaports en local.
|
||||||
|
On peut le faire assez facilement avec la commande :
|
||||||
|
|
||||||
_Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._
|
|
||||||
```bash
|
```bash
|
||||||
pmbootstrap pull
|
pmbootstrap pull
|
||||||
```
|
```
|
||||||
|
_Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._
|
||||||
> Le repo pmaports.git stocke tous les paquets Alpine avec le fichier `APKBUILD` utilisé par le serveur de compilation.
|
> Le repo pmaports.git stocke tous les paquets Alpine avec le fichier `APKBUILD` utilisé par le serveur de compilation.
|
||||||
>
|
>
|
||||||
> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/)
|
> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/)
|
||||||
|
@ -35,28 +37,24 @@ pmbootstrap pull
|
||||||
> ainsi que la procédure pour vérifier si le paquet fonctionne correctement.
|
> ainsi que la procédure pour vérifier si le paquet fonctionne correctement.
|
||||||
> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels.
|
> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels.
|
||||||
|
|
||||||
_Met à jour le cache de la commande APK depuis l'environnement de travail_
|
On peut également mettre à jour le cache de la commande `apk` même si c'est pas forcément obligatoire.
|
||||||
```bash
|
```bash
|
||||||
pmbootstrap update
|
pmbootstrap update
|
||||||
```
|
```
|
||||||
|
_Met à jour le cache de la commande APK depuis l'environnement de travail_
|
||||||
> L'environnement de travail se situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/`
|
> L'environnement de travail se situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/`
|
||||||
|
|
||||||
|
Si on a déjà un environnement de travail en cours et qu'il contient du cache ou un travail en cours, on peut le réinitialiser assez facilement avec la commande :
|
||||||
_Supprime le dossier de la commande chroot_
|
|
||||||
```bash
|
```bash
|
||||||
pmbootstrap zap
|
pmbootstrap zap
|
||||||
```
|
```
|
||||||
|
_Supprime le dossier de la commande chroot pour repartir de 0_
|
||||||
> La commande chroot permet de changer la racine Linux.
|
> La commande chroot permet de changer la racine Linux.
|
||||||
> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment-là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel.
|
> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment-là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel.
|
||||||
>
|
>
|
||||||
> C'est très utilisé par pmbootstrap pour configurer le système Alpine.
|
> C'est très utilisé par pmbootstrap pour configurer le système Alpine.
|
||||||
> Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier.
|
|
||||||
>
|
|
||||||
> Dans notre cas, il correspond au système de notre téléphone pour le configuré avant de l'installer ou de le tester sur notre appareil.
|
|
||||||
>
|
|
||||||
> Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/`
|
|
||||||
|
|
||||||
_[Optionnel] Changer la branche du repo [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git)_
|
Pour ceux qui veulent utiliser une autre branche, on peut également changer la branche disponible sur le repository.
|
||||||
```bash
|
```bash
|
||||||
git -C $workdir checkout [branch]
|
git -C $workdir checkout [branch]
|
||||||
```
|
```
|
||||||
|
@ -66,57 +64,72 @@ git -C $workdir checkout [branch]
|
||||||
|
|
||||||
## Compilation de notre paquet Alpine
|
## Compilation de notre paquet Alpine
|
||||||
|
|
||||||
Pour compiler le paquet, on utilise la commande `pmbootstrap build [paquet_name]`.
|
Maintenant, on va pouvoir compiler n'importe quel paquet avec la commande.
|
||||||
> Avant de compiler depuis le repository Nightly, il faut d'abord rajouter la clef de signature
|
```bash
|
||||||
>
|
pmbootstrap build [nom_du_paquet]
|
||||||
> `wget https://nightly.postmarketos.org/plasma-mobile/pmos@local-662fcd2f.rsa.pub`
|
```
|
||||||
>
|
|
||||||
> `mv pmos@local-662fcd2f.rsa.pub $(pmbootstrap config work)/config_apk_keys/`
|
Par exemple, on peut compiler plasma-mobile (Attention le paquet est long à compiler)
|
||||||
>
|
```bash
|
||||||
> Source : https://wiki.postmarketos.org/wiki/Nightly
|
pmbootstrap build plasma-mobile
|
||||||
|
```
|
||||||
|
|
||||||
|
Par défaut, pmbootstrap va recompiler l'intégralité des dépendances du projet pour s'assurer que notre test sera reproductible.
|
||||||
|
Cependant, lorsque l'on souhaite juste tester un truc, ça peut-être ultra long.
|
||||||
|
|
||||||
|
On peut donc utiliser deux options pour nous aider:
|
||||||
|
* `-i` Permet de dire de compiler uniquement les dépendances du paquet défini dans le fichier `APKBUILD`
|
||||||
|
* `-n` Permet d'éviter de compiler les dépendances du paquet défini dans le fichier `APKBUILD`
|
||||||
|
|
||||||
|
Avec le combot des deux options, ça nous évite de tout recompiler.
|
||||||
|
|
||||||
|
On a aussi l'option `-mp` qui peut-être pratique pour changer de mirroir si le téléchargement est lent ou si l'on souhaite télécharger des paquets nightly.
|
||||||
|
> Un mirroir est un serveur utilisé pour télécharger les dépendances
|
||||||
|
|
||||||
|
On utilise cette option de cette manière:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pmbootstrap \
|
||||||
|
-mp https://nightly.postmarketos.org/plasma-mobile/packages/ \
|
||||||
|
-mp http://mirror.postmarketos.org/postmarketos/
|
||||||
|
```
|
||||||
|
|
||||||
|
On a aussi d'autres options comme:
|
||||||
|
|
||||||
|
* `--details-to-stdout` : Affiche le fichier de log dans la console
|
||||||
|
* `-j N` : Défini le nombre de core CPU utilisé pour la compilation
|
||||||
|
* `-t [En seconde]` : Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation
|
||||||
|
* `--src` : Change les sources du paquet. Par défaut ce sont les sources définies dans le fichier `APKBUILD`
|
||||||
|
* `--arch [arch]` : L'architecture CPU du téléphone
|
||||||
|
|
||||||
|
Un exemple concret d'une commande que j'ai utilisé pour recompiler ma version de plasma-mobile avec mes changements.
|
||||||
|
|
||||||
_Exemple de commande_
|
|
||||||
```bash
|
```bash
|
||||||
pmbootstrap \
|
pmbootstrap \
|
||||||
-mp https://nightly.postmarketos.org/plasma-mobile/packages/ \
|
-mp https://nightly.postmarketos.org/plasma-mobile/packages/ \
|
||||||
-mp http://mirror.postmarketos.org/postmarketos/ \
|
-mp http://mirror.postmarketos.org/postmarketos/ \
|
||||||
--details-to-stdout \
|
--details-to-stdout \
|
||||||
-j 32 \
|
-j 32 \ # Pour utiliser toute la puissance de mon CPU
|
||||||
-t 3600 -v \
|
-t 3600 -v \ # La compilation est ultra longue donc pmbootstrap abandonne la build avant la fin de la compilation
|
||||||
build plasma-mobile \
|
build plasma-mobile \
|
||||||
--src $home/plasma-mobile/ \
|
--src $home/plasma-mobile/ \
|
||||||
--arch aarch64 \
|
--arch aarch64 \ # Mon téléphone utilise l'architecture aarch64 (ARM64)
|
||||||
-i \
|
-i \
|
||||||
-n
|
-n
|
||||||
```
|
```
|
||||||
|
|
||||||
Dans cet exemple, j'ai utilisé les arguments suivants:
|
> **Attention**
|
||||||
|
>
|
||||||
|
> Avant de compiler depuis le repository Nightly, il faut d'abord rajouter la clef de signature
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> wget https://nightly.postmarketos.org/plasma-mobile/pmos@local-662fcd2f.rsa.pub
|
||||||
|
> mv pmos@local-662fcd2f.rsa.pub $(pmbootstrap config work)/config_apk_keys/
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> Source : https://wiki.postmarketos.org/wiki/Nightly
|
||||||
|
|
||||||
* `-mp` : Permet de définir un repository Alpine pour installer les paquets.
|
Si vous souhaitez avoir plus d'informations, il suffit de taper la commande
|
||||||
> Dans l'exemple, j'utilise deux repos
|
|
||||||
>
|
|
||||||
> `https://nightly.postmarketos.org/plasma-mobile/packages/` : Contient la version en cours de développement de KDE Plasma Mobile
|
|
||||||
>
|
|
||||||
> `http://mirror.postmarketos.org/postmarketos/` : Le miroir officiel de Postmarket OS
|
|
||||||
|
|
||||||
* `--details-to-stdout` : Affiche les logs stocké dans le fichier dans la console
|
|
||||||
* `-j N` : Défini le nombre core utilisé pour la compilation
|
|
||||||
> Dans mon cas, 32 core sur mon CPU.
|
|
||||||
* `-t [En seconde]` : Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation
|
|
||||||
> Changé par 3600 secondes, car plasma-mobile est assez long à compilé et il ne génère aucun log.
|
|
||||||
* `-v` : Mode verbeux pour les logs dans le fichier
|
|
||||||
* `--src` : Change les sources du paquet. Par défaut ce sont les sources définies dans le fichier `APKBUILD`
|
|
||||||
> Pour ma part, je souhaite utiliser mon propre code pour tester
|
|
||||||
* `--arch [arch]` : L'architecture CPU du téléphone
|
|
||||||
> Pour ma part, mon téléphone est en arm64v8 donc `aarch64`
|
|
||||||
* `-n` : Permet d'éviter de compiler les dépendances du paquet.
|
|
||||||
> En général, ce n'est pas recommandé par Alpine, mais dans mon cas, je souhaite utiliser les dépendances depuis le repo
|
|
||||||
> miroir officiel de Postmarket OS.
|
|
||||||
* `-i` : Permet de dire de compiler uniquement les dépendances du paquet défini dans le fichier `APKBUILD`
|
|
||||||
> Dans mon cas, il vient en complément de l'option `-n`, ça me permet de m'assurer de ne rien build.
|
|
||||||
> Sans cette option, il risque de compiler les sous-dépendances du paquet comme le noyau Linux.
|
|
||||||
|
|
||||||
Pour plus d'informations, il suffit de taper la commande
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pmbootstrap build --help
|
pmbootstrap build --help
|
||||||
|
@ -128,7 +141,7 @@ Et pour avoir les arguments généraux
|
||||||
pmbootstrap --help
|
pmbootstrap --help
|
||||||
```
|
```
|
||||||
|
|
||||||
## Envoie du paquet sur le téléphone
|
## Envoie du paquet compilé sur le téléphone
|
||||||
|
|
||||||
Une fois le paquet compilé, il suffit de demander à `pmbootstrap` de l'envoyer sur notre téléphone via la connexion SSH.
|
Une fois le paquet compilé, il suffit de demander à `pmbootstrap` de l'envoyer sur notre téléphone via la connexion SSH.
|
||||||
Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'exemple ci-dessous.
|
Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'exemple ci-dessous.
|
||||||
|
|
Loading…
Reference in a new issue