Question

sera porté volontaire pour maintenir un paquet CPAN stagnant (GnuPG) Je voudrais améliorer les fichiers d'installation de telle sorte qu'ils sortent gracieusement si le binaire gpg (qui GnuPG est une enveloppe pour) ne peut être trouvé. Après un peu de recherche d'inspiration d'autres paquets, je suis venu avec l'ajout de ce à Makefile.PL:

my @paths = grep { -x "$_/gpg" } split /:/, $ENV{PATH}, $ENV{PGP_PATH};

unless ( scalar @paths ) {
    print <<EOD;
I can't find the gpg binary on your system. If it's not installed in your usual PATH, set $ENV{PGP_PATH} to include where it can be found and try installing again.
EOD

    exit(0);
}

WriteMakefile(
    'NAME'        => 'GnuPG',
    'VERSION_FROM' => 'GnuPG.pm',
    'EXE_FILES'    => [ gpgmailtunl ],
    'LICENSE'      => 'GPL',
    'LIBS'         => [ @paths ],
);

Est-ce que ce regard sain d'esprit?

Était-ce utile?

La solution

Le concept général est très bien - si ce que vous avez besoin de travailler n'est pas présent, ne crée pas le makefile. Les testeurs CPAN ont des règles de sortir d'un état zéro en cas d'échec (ce qui me contrarie beaucoup, mais jamais l'esprit, je déteste ne pas avec un statut de succès!)

.

Question: Avez-vous un registre où PGP a été trouvé lors de l'installation, de sorte que si quelqu'un d'autre utilise le module Perl sans l'emplacement sur leur chemin, le module peut encore fonctionner?

Pour DBD :: Informix, je dépendances rigides sans lesquelles le module ne peut être calculée; le Makefile.PL est une production importante en elle-même à cause de cela. Il essaie également de gérer les versions du logiciel couvrant plus de 15 ans; qui complique sa vie, aussi. Si les pré-requis (certains modules Perl, certains logiciels non-Perl). Ne sont pas disponibles, il ne sera pas installé

Autres conseils

Si vous utilisez le module :: Installer ou d'une partie de cette famille, vous pouvez utiliser le faire

requires_external_bin 'gpg';

Module :: :: Installation externe pour plus de détails.

Aucune bonne raison de réinventer la roue.

Ne serait-il plus judicieux de simplement imprimer un avertissement? GPG nécessaire pour l'installation elle-même?

Le code lui-même semble bien pour moi. Mais peut-être il y a un haut- « qui » fonctionnalité. :).

Pour une meilleure précision que vous devriez regarder Fichier :: Qui ou au moins fichier d'utilisation :: spec-> chemin ().

Fichier :: Quelle serait une solution multi-plateforme. Vous devrez soit regrouper dans inc / répertoire ou d'exiger qu'il soit installé avec configure_requires. Pour l'UE :: MM il peut être fait avec

    META_MERGE => {
        configure_requires => {
            'File::Which' => 0,

Module :: Install est aussi une bonne solution, mais vous aurez besoin de libérer une nouvelle version de la distribution à chaque nouvelle version du module :: Install est libéré et les changements sont importants.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top