Quelle est la différence entre les versions de GNU Make in Cygwin

2

Je dois ajouter GNU Make à mon installation Cygwin, mais le programme d’installation m’offre deux versions:

  • 3.82.90-1 (1.254k)
  • 3,82-3 (473k)

Je n'ai aucune idée de la différence, et toutes mes tentatives pour le savoir via Google ont été vaines. Ni l'un ni l'autre ne montre comme incluant le code source (ce qui expliquerait l'énorme différence de taille).

Quelqu'un peut-il m'éclairer sur la différence entre les deux versions et / ou suggérer quelle pourrait être la meilleure option?

(Éditer) Par souci de clarté, ce que je demande vraiment ici est la suivante: quelle est la différence entre une version x.yy.zz de Make an x.yy-n? Pourquoi les différents modèles de numérotation?

Rob Gilliam
la source

Réponses:

3

Cygwin 32bit

Si vous regardez le référentiel lui-même, c'est-à-dire l'un des miroirs ( http://mirror.switch.ch/ftp/mirror/cygwin/x86/release/make/ ), vous trouverez quatre fichiers pertinents:

make-3.81-2-src.tar.bz2     09-Feb-2008 20:50   1.1M     
make-3.81-2.tar.bz2         09-Feb-2008 20:50   350K     
make-3.82.90-1-src.tar.bz2  02-Dec-2011 18:05   1.3M     
make-3.82.90-1.tar.bz2      02-Dec-2011 18:05   442K     

Il existe deux versions, 3.82.90-1 et une version plus ancienne, 3.81-2, qui ont approximativement la même taille (ordre de grandeur). Les plus gros paquets correspondants (1 Mo) sont les sources.

C’est exactement ce que me propose l’ outil de configuration de cygwin .

Cygwin 64bit

Ici, les fichiers proposés sont ( http://mirror.switch.ch/ftp/mirror/cygwin/x86_64/release/make/ ):

make-3.82-3-src.tar.bz2     14-Mar-2013 11:26   1.6M     
make-3.82-3.tar.bz2         14-Mar-2013 11:26   473K     
make-3.82.90-1-src.tar.bz2  30-Mar-2013 12:12   1.9M     
make-3.82.90-1.tar.bz2      30-Mar-2013 12:12   1.2M    

Cela correspond à votre scénario décrit.


Généralement, pour étudier les différences entre ces deux versions, consultez l’ Changelogarchive la plus récente.

Pour en dire un peu plus: Habituellement ( Debian utilise un schéma similaire ), le numéro de version précédant le trait d'union est le numéro de version du paquet original, tel que publié par l'auteur du logiciel (c'est-à-dire l' équipe de mise à jour GNU ). Le nombre après le mot-clé donne une sorte de niveau de patch, appliqué par le mainteneur du paquet (c'est-à-dire l' équipe cygwin ).

Pour prouver regarder make.cygportdans les paquets sources (par exemple make-3.82-3-src.tar.bz2)

NAME="make"
VERSION="3.82"
RELEASE=3

Les correctifs appliqués (par cygwin) sont classés dans make-3.82-3.src.patch.

Ainsi, il a été décidé d’inclure un port de cygwin make 3.82et make 3.82.90dans la distribution cygwin à 64 bits. (Pourquoi l'équipe de création de GNU a décidé que la version 3.82.90 devrait suivre la version 3.82, je ne sais vraiment pas ...)

Quelle est la différence entre ces versions (en amont)? NEWSdans l'archive source d'origine à l'intérieur de l'archive source cygwin nous dit:

Version 3.82.90

Une liste complète des bogues corrigés dans cette version est disponible ici: http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom

  • AVERTISSEMENT: incompatibilité avec les versions antérieures! Cette version de make adhère à la gestion de la barre oblique inversée / nouvelle ligne, en introduisant les différences suivantes:

    • Chaque barre oblique inverse / nouvelle ligne dans une valeur de variable est remplacée par un espace;
      plusieurs barres obliques inverses / nouvelles lignes consécutives ne se condensent pas dans un seul espace.
    • Dans les recettes, un préfixe de recette après une barre oblique inverse-nouvelles lignes est supprimé.
  • Nouvelle fonctionnalité: la fonctionnalité "serveur de travaux" est désormais prise en charge sous Windows.
    Mise en œuvre contribué par Troy Runkel

  • Nouvelle fonctionnalité: "! =" Opérateur d’affectation du shell comme alternative à la fonction $ (shell ...). Implémenté pour la compatibilité avec les makefiles BSD.
    AVERTISSEMENT: incompatibilité avec les versions antérieures!
    Variables se terminant par "!" précédemment défini comme "variable! = valeur" sera maintenant
    interprété comme une assignation de shell. Modifiez votre affectation pour ajouter des espaces
    entre les "!" et "=": "variable! = valeur"

  • Nouvelle option de ligne de commande: --trace active le traçage des cibles. Lorsqu'elle est activée,
    la recette à invoquer est imprimée même si elle serait sinon supprimée
    par .SILENT ou par un préfixe "@". De plus, avant que chaque recette ne soit exécutée, le
    nom du makefile et le numéro de répertoire où elle a été définie sont affichés, ainsi que les
    conditions préalables qui ont amené la cible à être considérée comme périmée.

  • En cas d'échec, le nom du makefile et le numéro de la recette ayant échoué sont
    affichés.

  • Un paramètre .RECIPEPREFIX est mémorisé par recette et les variables développées
    dans cette recette utilisent également ce paramètre de préfixe de recette.

  • Dans la sortie -p, les paramètres .RECIPEPREFIX sont affichés et toutes les
    variables spécifiques à la cible sont sorties comme si elles étaient dans un fichier makefile, et non comme des commentaires.

Donc, cette incompatibilité avec les versions antérieures est probablement la raison pour laquelle les deux versions sont fournies par cygwin.

mpy
la source
J'utilise Cygwin 64 bits, ce qui explique probablement pourquoi vous avez des pkgs différents. Cependant, ma question est vraiment quelle est la différence entre une version x.yy.zz de Make an x.yy-n? Pourquoi les différents modèles de numérotation?
Rob Gilliam
@RobGilliam: J'ai étendu ma réponse pour aborder le schéma de nommage.
Mpy