web-dev-qa-db-fra.com

Fichier de spécifications RPM - Est-il possible de remplir dynamiquement une variable de fichier de spécifications

J'ai un fichier de spécifications. J'ai besoin de% définir une variable de spécification qui tire sa valeur d'un fichier d'une ligne sur le système.

Par exemple

%define path `cat /home/user/path_file`

et dans path_file est une ligne

/var/www/html/hosts

Cela fonctionne partiellement. Je dis que commence dans la sortie RPM BUILD parfois la valeur de ${path} est littéralement ma commande cat /home/user/path_file et parfois la valeur est la ligne du chemin_fichier (/ var/www/html/hosts) comme elle devrait l'être?

30
last_shogun

Vous pouvez définir des variables rpmbuild avec %(cmd) en haut du fichier de spécifications. Notez que la commande est entre parenthèses, pas entre crochets. Un exemple:

%define whoami %(whoami)

Et ailleurs dans le fichier de spécifications, comme un script ou les sections build/install, utilisez la variable comme d'habitude entre crochets comme ceci:

echo "The user that built this is %{whoami}"

cmd peut être n'importe quoi, y compris votre commande cat. Soyez prudent - lorsqu'un autre utilisateur reconstruit le fichier de spécifications, il peut ne pas trouver le fichier. Il sera donc préférable d'utiliser la macro% {sourcedir} comme ceci:

%define path %(cat %{sourcedir}/path_file)

Et assurez-vous que path_file est dans le répertoire source et inclus comme source dans le fichier spec.

42
Corey Henderson