Bonjour,

je suis en train d'essayer de voir pour faire un rpm pour packmol mais je tombe sur un problème que je ne comprends pas pour l'instant...

Fichier spec:
Summary: Packing Optimization for Molecular Dynamics Simulations
Name: packmol
Version: 02Sep09
Release: 1%{?dist}
License: GPLv3
Group: Applications/Education 
Source0: http://packmol.googlecode.com/files/%{name}.%{version}.tar.gz

URL: http://www.ime.unicamp.br/~martinez/packmol/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

#BuildRequires: 
#Requires: 


%description
Packmol creates an initial point for molecular dynamics simulations by packing m
olecules in defined regions of space. The packing guarantees that short range re
pulsive interactions do not disrupt the simulations.

The great variety of types of spatial constraints that can be attributed to the 
molecules, or atoms within the molecules, makes it easy to create ordered system
s, such as lamellar, spherical or tubular lipid layers.

The user must provide only the coordinates of one molecule of each type, the num
ber of molecules of each type and the spatial constraints that each type of mole
cule must satisfy.

The package is compatible with input files of PDB, TINKER, XYZ and MOLDY formats
.

%prep
%setup -q -n %{name}

%build
%configure
make %{?_smp_mflags} 

%install
rm -rf %{buildroot}

%clean
rm -rf %{buildroot}

%changelog
* Wed Oct 14 2009 Fabien A. <marbolangos@gmail.com> - 02Sep09-1
-Creation of package
$ rpmbuild -bp packmol.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.sr5NoX
+ umask 022
+ cd /home/builder/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/builder/rpmbuild/BUILD
+ rm -rf packmol
+ /usr/bin/gzip -dc /home/builder/rpmbuild/SOURCES/packmol.02Sep09.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd packmol
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
$ rpmbuild -bc --short-circuit packmol.spec 
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.aokyuJ
+ umask 022
+ cd /home/builder/rpmbuild/BUILD
+ cd packmol
+ LANG=C
+ export LANG
+ unset DISPLAY
+ CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
+ export CFLAGS
+ CXXFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
+ export CXXFLAGS
+ FFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
+ export FFLAGS
+ ./configure --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info
which: unrecognized option '--build=x86_64-unknown-linux-gnu'
Usage: which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

  --version, -[vV] Print version and exit successfully.
  --help,          Print this help and exit successfully.
  --skip-dot       Skip directories in PATH that start with a dot.
  --skip-tilde     Skip directories in PATH that start with a tilde.
  --show-dot       Don't expand a dot to current directory in output.
  --show-tilde     Output a tilde for HOME directory for non-root.
  --tty-only       Stop processing options on the right if not on tty.
  --all, -a        Print all matches in PATH, not just the first
  --read-alias, -i Read list of aliases from stdin.
  --skip-alias     Ignore option --read-alias; don't read stdin.
  --read-functions Read shell functions from stdin.
  --skip-functions Ignore option --read-functions; don't read stdin.

Recommended use is to write the output of (alias; declare -f) to standard
input, so that which can show aliases and shell functions. See which(1) for
examples.

If the options --read-alias and/or --read-functions are specified then the
output can be a full alias or function definition, optionally followed by
the full path of each command used inside of those.

Report bugs to <which-bugs@gnu.org>.
Setting compiler to /usr/bin/gfortran
+ make -j3
 ------------------------------------------------------ 
 Compiling packmol with /usr/bin/gfortran 
 Flags: -O3 -ffast-math  
 ------------------------------------------------------ 
 Packmol succesfully built.
 ------------------------------------------------------ 
+ exit 0
Il semblerait y avoir un problème avec le configure mais je vois pas quoi à part ce qui est dit mais je vois pas pourquoi...

Merci
10 jours plus tard
Petit up.

J'ai essayé de mettre :
%build
./configure
qui semble passer mais après ça bug au make install..
Bonsoir,

après un rapide coup d'œil aux sources, le souci viendrait en fait du script ./configure. Celui-ci n'est pas un script généré par les Autotools, contrairement à ce que suppose la macro %configure.
Ce script sert simplement ici à détecter (ou à définir par passage de paramètre) le compilateur Fortran à utiliser (ici gfortran), puis à générer (de façon horrible !!!) un Makefile appelant le compilateur Fortran détecté/défini. Ceci en lisant et copiant ligne par ligne un patron de Makefile (fichier Makefile.default) pour au final n'en modifier qu'une, celle définissant le compilateur (sic).

Je te suggère ainsi les corrections suivantes :

1) dans ta section %build, vire l'appel au script configure. Ce que j'ai dit plus haut suffit comme justification ^^.

2) Puisque que l'on se passe du configure, on ne génère plus de Makefile. On utilisera donc le patron Makefile.default comme fichier Makefile. Pour pouvoir compiler ce programme avec les flags de compilation par défaut du projet Fedora, il faut fixer la valeur de la variable SERIALFLAGS, utilisée dans le Makefile, aux options de compilation du projet : invoque donc make ainsi dans ta section %build :
make %{?_smp_mflags} -f Makefile.default FORTRAN=gfortran SERIALFLAGS="$RPM_OPT_FLAGS -ffast-math"
(les flags utilisés par défaut dans ce Makefile sont « -O3 -ffast-math », j'ai désactivé l'optimisation à 3 car le projet la fixe à 2, mais j'ai laissé « -ffast-math »).
Au passage, je note qu'il y a un support OpenMP de ce programme... un tel support t'intéresserait-il ? Auquel cas, il va falloir modifier les options de compilation...


3) Quant à l'installation, le Makefile ne la gère pas. À vue de nez, un exécutable, packmol, est généré. Et il n'y a pas d'autre fichier utile à installer (pas de page de doc. entre autres). Tu pourras donc gérer l'installation manuellement ainsi :
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_bindir}
install -m 755 packmol %{buildroot}%{_bindir}
Au passage, ajoute en BuildRequires le paquetage gcc-gfortran. Je te suggère également d'ajouter au paquetage un fichier de licence, les sources ne fournissant rien de tel. Et n'oublie pas avant tout de définir une section %files pour décrire les fichiers à installer 😉.
Merci Pikachu pour cette aide.
Oui l'installation n'est pas des plus intéressante mais je voulais tenter de voir comment faire sur un petit paquet comme ça.

Pour les BR j'avais ajouté après avoir mis mon post 🙂

Voici le specs actuel mais j'ai toujours des soucis
cat packmol.spec 
Summary: Packing Optimization for Molecular Dynamics Simulations
Name: packmol
Version: 02Sep09
Release: 1%{?dist}
License: GPLv3
Group: Applications/Education 
Source0: http://packmol.googlecode.com/files/%{name}.%{version}.tar.gz

URL: http://www.ime.unicamp.br/~martinez/packmol/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: gcc-gfortran 
#Requires: 


%description
Packmol creates an initial point for molecular dynamics simulations by packing molecules in defined regions of space. The packing guarantees that short range repulsive interactions do not disrupt the simulations.

The great variety of types of spatial constraints that can be attributed to the molecules, or atoms within the molecules, makes it easy to create ordered systems, such as lamellar, spherical or tubular lipid layers.

The user must provide only the coordinates of one molecule of each type, the number of molecules of each type and the spatial constraints that each type of molecule must satisfy.

The package is compatible with input files of PDB, TINKER, XYZ and MOLDY formats.

%prep
%setup -q -n %{name}

%files
%defattr(-,root,root,-)
#%doc AUTHORS COPYING


%build
#./configure
make %{?_smp_mflags} -f Makefile.default FORTRAN=gfortran SERIALFLAGS="$RPM_OPT_FLAGS -ffast-math"

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_bindir}
install -m 755 packmol %{buildroot}%{_bindir}

%clean
rm -rf %{buildroot}

%changelog
* Wed Oct 14 2009 Fabien A. <marbolangos@gmail.com> - 02Sep09-1
-Creation of package
La compilation marche très bien ça c'est cool par contre j'ai deux questions par rapport à ce que tu as écrit :
* Pour le %file ce que j'ai mis ne semble pas suffire il m'affiche toujours:
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/builder/rpmbuild/BUILDROOT/packmol-02Sep09-1.f9.x86_64
error: Installed (but unpackaged) file(s) found:
   /usr/bin/packmol


RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/bin/packmol
* Ensuite j'aurai voulu ajouter les fichiers COPYING et AUTHORS mais je sais pas comment lui dire ni ou les mettre dans l'architecture de construction. Au passage question secondaire est-ce que ça pour AUTHORS c'est bon:
L. Martínez, R. Andrade, E. G. Birgin, J. M. Martínez. Packmol: A package for building initial configurations for molecular dynamics simulations. Journal of Computational Chemistry, 30(13):2157-2164, 2009.
J. M. Martínez and L. Martínez. Packing optimization for automated generation of complex system's initial configurations for molecular dynamics and docking. Journal of Computational Chemistry, 24(7):819-825, 2003.
Bonsoir,

1) À propos de cette erreur :
Installed (but unpackaged) file(s) found:
/usr/bin/packmol
Le message témoigne du fait que le binaire a bien été installé dans /usr/bin = %{_bindir}, comme souhaité. Mais tu ne l'as pas déclaré dans la section %files :
%files
%defattr(-,root,root,-)
%{_bindir}/packmol
2) Pour les fichiers de licence et d'auteurs, tu peux les rajouter comme sources additionnelles ainsi, après la déclaration de Source0 :
Source1:     COPYING
Source2:     AUTHORS
Pour accéder à ces fichiers au cours du packaging, copie-les dans ton répertoire de travail en ajoutant la ligne suivante à ta section %prep :
%prep
%setup -q -n %{name}
cp -p %{SOURCE1} %{SOURCE2} .
Étant des fichiers de documentation, tu utiliseras, pour les déclarer dans ta section %files, la balise %doc :
%files
...
%doc AUTHORS COPYING
Cette macro va à la fois les tagger comme fichiers de documentation (qu'on pourra donc lister dans le paquet via l'option « -d » de rpm), et les installer automatiquement dans le répertoire /usr/share/doc/packmol-version/.

3) Respecte l'ordre usuel des différentes sections, ton fichier .spec n'en sera que plus facile à lire, comme décrit ici :
http://doc.fedora-fr.org/wiki/La_cr%C3%A9ation_de_RPM_pour_les_nuls_:_Cr%C3%A9ation_du_fichier_SPEC_et_du_Paquetage#Fichier_SPEC_vierge
De même, attention à l'indentation et à l'alignement des champs en en-tête de ton fichier .spec. C'est plus que recommandé.

4) packmol est versionné selon des numéros de version assez particuliers. La page suivante :
http://fedoraproject.org/wiki/Packaging/NamingGuidelines#NonNumericRelease
décrit les cas particuliers comme celui-ci pour le versionnement du paquetage.
Ah oui je comprends pourquoi tu disais que mon fichier était en vrac...

Bon voici le nouveau :
Name:           packmol
Version:        02Sep09
Release:        1%{?dist}
Summary:        Packing Optimization for Molecular Dynamics Simulations

Group:          Applications/Editors
License:        GPLv3
URL:            http://www.ime.unicamp.br/~martinez/packmol/
Source0:        http://packmol.googlecode.com/files/%{name}.%{version}.tar.gz
Source1:    COPYING
Source2:    AUTHORS
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  gcc-gfortran
#Requires:       

%description
Packmol creates an initial point for molecular dynamics simulations by packing
molecules in defined regions of space. The packing guarantees that short range
repulsive interactions do not disrupt the simulations.
The great variety of types of spatial constraints that can be attributed to
the molecules, or atoms within the molecules, makes it easy to create ordered
systems, such as lamellar, spherical or tubular lipid layers.
The user must provide only the coordinates of one molecule of each type, the
number of molecules of each type and the spatial constraints that each type of
molecule must satisfy.
The package is compatible with input files of PDB, TINKER, XYZ and MOLDY
formats.

%prep
%setup -q  -n %{name}
cp -p %{SOURCE1} %{SOURCE2} .


%build
#%configure
#make %{?_smp_mflags}
make %{?_smp_mflags} -f Makefile.default FORTRAN=gfortran SERIALFLAGS="$RPM_OPT_FLAGS -ffast-math"


%install
#rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_bindir}
install -m 755 packmol %{buildroot}%{_bindir}


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
%{_bindir}/packmol
%doc AUTHORS COPYING


%changelog
* Wed Oct 14 2009 Fabien A. <marbolangos@gmail.com> - 02Sep09-1
-Creation of package
J'ai toujours un problème lorsque je fais : rpmbuild -bc --short-circuit packmol.spec
Il me dit :
+ ./configure --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info
which: unrecognized option '--build=x86_64-unknown-linux-gnu'
Usage: which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

  --version, -[vV] Print version and exit successfully.
  --help,          Print this help and exit successfully.
  --skip-dot       Skip directories in PATH that start with a dot.
  --skip-tilde     Skip directories in PATH that start with a tilde.
  --show-dot       Don't expand a dot to current directory in output.
  --show-tilde     Output a tilde for HOME directory for non-root.
  --tty-only       Stop processing options on the right if not on tty.
  --all, -a        Print all matches in PATH, not just the first
  --read-alias, -i Read list of aliases from stdin.
  --skip-alias     Ignore option --read-alias; don't read stdin.
  --read-functions Read shell functions from stdin.
  --skip-functions Ignore option --read-functions; don't read stdin.

Recommended use is to write the output of (alias; declare -f) to standard
input, so that which can show aliases and shell functions. See which(1) for
examples.

If the options --read-alias and/or --read-functions are specified then the
output can be a full alias or function definition, optionally followed by
the full path of each command used inside of those.

Report bugs to <which-bugs@gnu.org>.
Setting compiler to /usr/bin/gfortran
Par contre tout le reste passe sans encombre. Je vois pas pourquoi il tente le configure alors qu'il n'est pas activé...

Ensuite il me crée bien les rpms. Par contre j'ai pas compris ta remarque sur le versioning...

Et pour couronner le tout rpmlint rale :
$ rpmlint packmol-02Sep09-1.f9.x86_64.rpm
packmol.x86_64: W: incoherent-version-in-changelog 02Sep09-1 ['02Sep09-1.f9', '02Sep09-1.f9']
1 packages and 0 specfiles checked; 0 errors, 1 warnings.
Je sais pas pourquoi il a envie de m'ajouter ce .f9. dans le nom du rpm...

Les deux autres rpms passent sans problème.
Le piège est là :
#%configure
Malgré le signe de commentaire "#", la séquence "%configure" est tout de même interprétée. C'est un bogue (?) connu.
Ou tu supprimes le "%" devant configure pour garder ton commentaire, ou tu vires carrément la ligne commentée.
Bon bah j'ai viré les lignes que j'avais commenté au pire elles sont sur le forum :-D

Reste plus que ce problème pour mettre les versions du paquet 8-)
J'ai lu par raport à ce que m'a donné Pikachu mais... Je crois qu'il faut que je réflechisse un peu dessus...

[edit] Rah je pige pas pourquoi ça m'affiche toujours .f9.........

[edit2] Ok je suis trop nul ça vient de ~/.rpmmacros qui affichait ça !!!
Désolé double post :

Résumé du test : packmol

Résumé de la description : Packing Optimization for Molecular Dynamics Simulations

URL Spec : packmol.spec

URL SRPM : packmol-02Sep09-1.fc11.src.rpm

URL RPM x86_64 : packmol-02Sep09-1.fc11.x86_64.rpm

URL RPM debuginfo x86_64 : packmol-debuginfo-02Sep09-1.fc11.x86_64.rpm

Description : Packmol creates an initial point for molecular dynamics simulations by packing
molecules in defined regions of space. The packing guarantees that short range
repulsive interactions do not disrupt the simulations.
The great variety of types of spatial constraints that can be attributed to
the molecules, or atoms within the molecules, makes it easy to create ordered
systems, such as lamellar, spherical or tubular lipid layers.
The user must provide only the coordinates of one molecule of each type, the
number of molecules of each type and the spatial constraints that each type of
molecule must satisfy.
The package is compatible with input files of PDB, TINKER, XYZ and MOLDY
formats.


------------
Je verrai pour le paquet 32 bits si déjà ça c'est un peu correct. Même si Pinkachu a déjà bien aidé.
Tous les liens pointent chez moi sur un répertoire "pub" sur ton FTP 🙁
Pikachu_2014 wrote:Tous les liens pointent chez moi sur un répertoire "pub" sur ton FTP 🙁
Bizarre depuis mon ordi au bureau j'y accède et depuis chez moi aussi. Avec FF3.
Au pire suffit de remonter dedans c'est dans pub/repo/rpms, pub/repo/sources et pub/repo/specs.

J'ai même regardé en wget ça fonctionne.
Double post à nouveau mais le channel fedora a bien aidé :

Désolé double post :

Résumé du test : packmol

Résumé de la description : Packing Optimization for Molecular Dynamics Simulations

URL Spec : packmol.spec

URL SRPM : packmol-0-0.1.02Sep09.fc11.src.rpm

URL RPM x86_64 : packmol-0-0.1.02Sep09.fc11.x86_64.rpm

URL RPM debuginfo x86_64 : packmol-debuginfo-0-0.1.02Sep09.fc11.x86_64.rpm

URL RPM i586 : packmol-0-0.1.02Sep09.fc11.i586.rpm

URL RPM debuginfo i586 : packmol-debuginfo-0-0.1.02Sep09.fc11.i586.rpm

Description : Packmol creates an initial point for molecular dynamics simulations by packing
molecules in defined regions of space. The packing guarantees that short range
repulsive interactions do not disrupt the simulations.
The great variety of types of spatial constraints that can be attributed to
the molecules, or atoms within the molecules, makes it easy to create ordered
systems, such as lamellar, spherical or tubular lipid layers.
The user must provide only the coordinates of one molecule of each type, the
number of molecules of each type and the spatial constraints that each type of
molecule must satisfy.
The package is compatible with input files of PDB, TINKER, XYZ and MOLDY
formats.

--------------
Merci aux gens qui m'ont aidé. J'envoie un mail à la mainstream pourle problème de numéro de version et la doléance de Pikachu 😉

[edit] Réponse super rapide du mainteneur du coup j'ai envoyé le push : https://bugzilla.redhat.com/show_bug.cgi?id=531605
J'espère avoir rien oublié...
Bon bah minor review :-D (je pense trop comme un article lol)
A few notes:

- You don't need to include AUTHORS and COPYING separately. Where did you get
them, anyway?

- I wouldn't use -ffast-math, since then the results aren't reproducible (they
depend on the machine type).
Pour le AUTHORS : si je dis que j'ai pris les références des articles de packmol sur le site internet ça ira ?
Pour le COPYING : cf post de Pikachu vu que c'est lui qui a vu qu'il n'y avait pas de fichier de licence dans l'archive.

Par contre pour le flag de compilation, la personne qui a créé le logiciel a rien dit sur ce flag. Vous pensez qu'il faut l'enlever ?
Avoir un fichier AUTHORS n'est pas un obligation de même pour COPYING (enfin la GPL dis que tu dois en avoir une copie dans les sources mais c'est normalement quelque chose que tu rapportes upstream et c'est à lui de corriger).

Tu peux donc lui dire que tu as ajouté ces deux fichiers, il te dira sans doute de les retirer 🙂

Pour le flag, je laisse ma place à mieux qualifié
pingou wrote:Avoir un fichier AUTHORS n'est pas un obligation de même pour COPYING (enfin la GPL dis que tu dois en avoir une copie dans les sources mais c'est normalement quelque chose que tu rapportes upstream et c'est à lui de corriger).

Tu peux donc lui dire que tu as ajouté ces deux fichiers, il te dira sans doute de les retirer 🙂

Pour le flag, je laisse ma place à mieux qualifié
Je l'ai dit au gars qui a fait le logiciel il a rien dit pour les 2 fichiers...

J'avais aussi une question. Là je refais un paquet donc, mais je le nomme ...-2 ou je le renomme -1 parce que c'est encore des versions non publiées ?

Merci

[edit] Bon j'ai demandé de l'aide dans la review 🙂

[edit2] Après avoir communiqué a la mainstream. Beaucoup de choses ont changé et j'ai renvoyé le spec et tout 🙂
10 jours plus tard
Quelqu'un aurait une idée pour mon paquet ? Vu que la seule personne qui a regardé s'est enlevé vu que l'upstream veut pas qu'on n'utilise pas un vieux flag de compil...

J'envoie à rpmfusion (ou rpmforge rah je mélange à chaque fois) ?

[edit] Bon mon message semble incomprehensible par le commun des mortels donc:
Je voulais savoir si je faisais un up sur bugzilla vu que la seule personne qui m'avait répondu s'est enlevé.
22 jours plus tard