2016-08-04 2 views
0

Contexte: Automake fournit différents types of distributions. Après avoir lu les documents "What Goes in a Distribution" je sais comment inclure répertoires supplémentaires en général. Mais je ne suis pas sûr de la meilleure façon de exclure répertoires dans cette liste pour une seule règle.Comment exclure des répertoires spécifiques pour dist-gzip/dist-zip?

Ceci est la partie du courant configure.ac qui ajoute aux répertoires dist

AC_CONFIG_MACRO_DIR([m4]) 
AC_CONFIG_AUX_DIR([build_aux]) 

Et ceci est la partie du courant Makefile.am qui ajoute aux répertoires dist

SUBDIRS = sources po doc tests 
EXTRA_DIST = build_windows 

De plus Makefile.am a

AUTOMAKE_OPTIONS = dist-zip 

Pour enabler la distribution zip.

Résultat: les deux package.tar.gz et package.zip ont le même contenu. Par conséquent, les répertoires suivants sont inclus:

  • build_aux
  • build_windows
  • doc
  • m4
  • po
  • sources
  • essais

Ques: Comment comment exclurebuild_windows dans package.tar.gz et m4 dans package.zip?

Répondre

0

Réponse longue:

Différents types de distributions ne signifient format différent, mais le contenu de ceux-ci est conçu pour être exactement la même chose.

Par conséquent, la solution pour l'objectif est:

  • enlever build_windows de EXTRA_DIST pour avoir seulement le contenu nécessaire dans la distribution tar.gz
  • enlever dist-zip de AUTOMAKE_OPTIONS pour empêcher la génération automatique du paquet.zip
  • add (ou dans ce modifier cas) la règle dist-hook manuellement:
    • vérifier si build_windows existe (il ne sera pas exister si la construction de package.tar.gz)
    • copier le dist contenu dans un répertoire temporaire
    • supprimer/ajouter des fichiers/dossiers, il faut que
    • créer un package_win.zip de ce dossier (un autre nom pour éviter une possible package.zip pour remplacer le fichier)

Edit: enlever quoi que ce soit à partir du dossier dist créé manuellement cassera make dist (ou au moins make distcheck), donc ce n'est une bonne idée si vous voulez supprimer tout ce qui a à voir avec autoconf/automake/Makfiles en général

1

La version courte n'est pas. Différents types de distributions ne signifient que des formats différents, mais le contenu de ceux-ci est conçu pour être exactement le même.