J'avais l'habitude de construire des paquets Debian (quilt), il supporte l'application de correctifs lors du processus de construction. Les correctifs sont stockés dans le dossier debian/patches
et sont généralement utilisés pour ajouter des correctifs non encore validés à la source en amont ou pour ajouter un réglage de plate-forme spécifique.
Mon cas est un paquet qui nécessite une commande de construction personnalisée:
make build; make install_api; make install_desktop
au lieu de manière standard:
make; make install
La solution proposée actuellement consiste à:
Makefile
et ajoutez les entrées default:
& install:
.L'erreur rencontrée lors de l'exécution de snapcraft --no-parallel-build
sans modifier la source:
make install DESTDIR=/home/username/Desktop/sandbox/alfanous-snap/parts/alfanous-git/install
make: *** No rule to make target 'install'. Stop.
Command '['/bin/sh', '/tmp/tmp_f_u1ktl', 'make', 'install',
'DESTDIR=/home/username/Desktop/sandbox/alfanous-snap/parts/alfanous-git/install']'
returned non-zero exit status 2
Alors, y a-t-il un moyen d'ajouter un patch à la construction de snapcraft? Je suis ouvert à toute autre solution/solution de contournement.
Cela semble être un bon cas pour "scriptlets" snapcraft . La strophe build:
vous permettra de remplacer l'étape de construction par vos propres commandes Shell (make build; make install_api; make install_desktop
).
Dans le cas idéal, l'accrochage est maintenu en amont, il est donc dans leur intérêt d'accepter les correctifs en amont, en les ajustant peut-être pour qu'ils soient plus généraux.
Si en amont ne veut pas maintenir l'accrochage et que vous le faites en tant que contributeur à la communauté, je suggérerais de créer un fork du projet original et d'appliquer vos correctifs à cet emplacement. Pour moi, une fourchette semble plus claire que de garder un ensemble de correctifs autour. C'est la méthode github, et je la préfère à la méthode debian.
Mais bien sûr, il s’agit d’un avis subjectif, et snapcraft doit être suffisamment souple pour vous permettre de suivre le processus que vous jugez le mieux pour votre projet. Donc, avec le snap bitcoin, nous avons un peu exploré avec les correctifs. Vous pouvez trouver les métadonnées de capture ici: https://github.com/elopio/blockchain-snaps/tree/master/bitcoin/snap
Dans le fichier snapcraft.yaml, vous trouverez une partie pour correctifs . Celui-ci copie simplement le répertoire patches dans le répertoire stage et veille à ce que ces fichiers ne se retrouvent pas dans le cliché. Si vous vérifiez ce répertoire, vous trouverez un fichier .patch généré avec git diff.
Ensuite, dans le fichier snapcraft.yaml, vous constaterez que la partie bitcoin applique le correctif dans le script de préparation .
Parties importantes de snapcraft.yaml
:
parts:
bitcoin:
source: https://github.com/bitcoin/bitcoin
source-type: git
prepare: git apply $SNAPCRAFT_STAGE/default_data_dir.patch
patches:
source: snap/patches
plugin: dump
prime:
- -*
Structure de dossier de capture:
.
├── patches
│ └── default_data_dir.patch
└── snapcraft.yaml
Cela fonctionne bien dans le cas de Bitcoin. Mais ce n'est qu'une expérience, pas encore une des meilleures pratiques documentées. Donc, les commentaires et les idées pour le rendre plus agréable sont les bienvenus.