Un script qui permet de lister tous les fichiers

Un script qui permet de lister tous les fichiers - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-04-2008 à 14:20:28    

Bonjour,
 
je suis en train d'étudier la possibilité de créer des RPM à partir du code source ( je suis sous Mandriva 2007.1 )
 
et apparemment il faut créer un fichier SPEC et dans ce fichier SPEC il faut préciser quels sont les fichiers à empaqueter pour le RPM
 
il s'agit de la section %files et là j'aimerai mettre un script qui permet de lister automatiquement les fichiers présents dans le %Buildroot et ses sous-répertoires,
 
le script doit pouvoir donner le chemin complet des fichiers
 
quelqu'un connait un script qui permet de faire cela et qui serait compatible pour le fichier SPEC ?
 
merci  :jap:


Message édité par elbarto le 16-04-2008 à 14:21:45
Reply

Marsh Posté le 16-04-2008 à 14:20:28   

Reply

Marsh Posté le 16-04-2008 à 19:09:53    

de mémoire, il y a des macros qui font ça avec rpm.
 
Par exemple, dans un des specs que j'ai sous la main, il y a ça :
 
%files -f %{name}.lang
%defattr(-,root,root)
%doc AUTHORS README ChangeLog
%{_bindir}/%{name}*
%{_datadir}/applications/*.desktop
%{_iconsdir}/hicolor/*/apps/*.png
%{_iconsdir}/hicolor/scalable/apps/*.svg


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 16-04-2008 à 20:26:40    

Ok mais à quoi correspond le "%{name}.lang " ?
 
ça va chercher les fichiers qui ont une extension "lang" ?
 

Reply

Marsh Posté le 16-04-2008 à 21:01:31    

elbarto a écrit :

Ok mais à quoi correspond le "%{name}.lang " ?
 
ça va chercher les fichiers qui ont une extension "lang" ?
 


cela va prendre ceux qui matchent %{name}.lang , %{name} étant défini ailleurs dans le spec.
Ceci étant dit tu as pris le temps de lire car ce que tu songes faire est déconseillé :)
 
http://wiki.mandriva.com/en/Development/Howto/RPM  
 

Citation :

Note that you should never use find to build a list of files to includebut explicitly list all files (this will show up bugs in new versions).The only exceptions is for locales for which you should use %find_lang %{name}  in the %install section and replace %files by %files -f %{name}.lang (see Appendix B).
 


http://wiki.mandriva.com/en/Develo [...] M_Advanced
http://wiki.mandriva.com/en/Develo [...] /skel.spec  
http://wiki.mandriva.com/en/Develo [...] bskel.spec
 
 
Bref le but est de savoir ce que tu veux récupérer (donc savoir ce qui sera compilé et où il sera compilé) et au départ tu risques de fonctionner a coup de essai/echec :)


---------------
Intermittent du GNU
Reply

Marsh Posté le 16-04-2008 à 21:19:13    

Ok mais c'est toujours pas très clair tout ça :D

 

normalement l'utilitaire rpmbuild devrait savoir automatiquement quels sont les fichiers à empaqueter puisqu'il simule l'installation dans le buildroot, il devrait donc pouvoir tracker les fichiers qui se créent durant l'installation lorsqu'il lance la commande "make install",

 

donc pourquoi donc l'utilisateur qui veut créer son RPM doit-il s'embeter à donner une liste de fichiers à empaqueter ?

 

bizarre tout ça

Message cité 1 fois
Message édité par elbarto le 16-04-2008 à 21:19:32
Reply

Marsh Posté le 16-04-2008 à 22:28:53    

elbarto a écrit :

Ok mais c'est toujours pas très clair tout ça :D
 
normalement l'utilitaire rpmbuild devrait savoir automatiquement quels sont les fichiers à empaqueter puisqu'il simule l'installation dans le buildroot, il devrait donc pouvoir tracker les fichiers qui se créent durant l'installation lorsqu'il lance la commande "make install",
 
donc pourquoi donc l'utilisateur qui veut créer son RPM doit-il s'embeter à donner une liste de fichiers à empaqueter ?
 
bizarre tout ça


car dans ton environnement de construction tu as des fichiers sources notamment. tu ne vas pas les inclures tout de même ?


---------------
Intermittent du GNU
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed