Bonjour, j'utilise fréquement SFML qui hélas n'est pas empaqueté dans FEDORA. J'ai donc suivi le tuto http://cpc.cx/1kc afin de créer mon propre RPM. Comme je suis novice dans la matière, je ne suis pas sur d'avoir procédé correctement.

J'aimerais avoir votre avis sur la validité du .spec que j'ai écrit ainsi que sur un moyen de l'intégrer au dépots officiels.
J'ai aussi un problème : mon .spec construit la SFML à partir de SVN et ne met pas à jour le n° de version correctement. Existe-t-il un moyen de numéroter automatiquement les builds a partir de SVN?

Et pour terminer, dans le fichier spec, certains noms de macro commencent par un _ et d'autres non, quelle est la différence?

EDIT : je ne comprends pas ce que les warnings que j'obtiens veulent dire.


Merci

--- Fichier SPEC (édité)---
Name:           sfml-devel
Version:        1.6
Release:        1%{?dist}
Summary:        SFML is simple and fast multimedia library.

Group:          Development/Libraries
License:        zlib
URL:            [url]http://www.sfml-dev.org[/url]
Source0:        [url]https://sfml.svn.sourceforge.net/svnroot/sfml/trunk/[/url]
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  freeglut-devel
BuildRequires:  libX11-devel
BuildRequires:  libXrandr-devel
BuildRequires:  freetype-devel
BuildRequires:  openal-soft-devel
BuildRequires:  libsndfile-devel

Requires:       freeglut
Requires:       libX11
Requires:       libXrandr
Requires:       freetype
Requires:       openal-soft
Requires:       libsndfile

%description
SFML is a free multimedia C++ API
#that provides you low and high level access to graphics, input, audio, etc.

%prep
svn co [url]https://sfml.svn.sourceforge.net/svnroot/sfml/trunk[/url] %SOURCE0
cp -rpf %SOURCE0/* .
rm -rf `find ./ | grep .svn`

%build
make clean
make %{?_smp_mflags}


%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
#rm -rf `find %%{buildroot}/ | grep .svn`


install -dp %{buildroot}/lib %buildroot/%{_libdir}
install -dp %{buildroot}/include %buildroot/%{_includedir}

cp -pr %{buildroot}/lib/* %buildroot/%{_libdir}/
cp -pr %{buildroot}/include/* %buildroot/%{_includedir}/

rm -rf  %{buildroot}/lib
rm -rf  %{buildroot}/include

%clean
make clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc doc/
%{_includedir}/*
%{_libdir}/*

%changelog
* Tue Apr 06 2010 Upstream release <laurent at, sfml-dev.org> 1.6
- see : [url]http://mac.softpedia.com/progChangelog/[/url] … 49686.html

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig



--- rpmlint -i ---
sfml-devel.x86_64: W: no-dependency-on sfml/sfml-libs/libsfml
sfml-devel.x86_64: W: summary-ended-with-dot C SFML is simple and fast multimedia library.
Summary ends with a dot.

sfml-devel.x86_64: W: incoherent-version-in-changelog 1.6 ['1.6-1.fc13', '1.6-1']
The last entry in %changelog contains a version identifier that is not
coherent with the epoch:version-release tuple of the package.

sfml-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/libsfml-system.so.1.7
sfml-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/libsfml-graphics.so.1.7
sfml-devel.x86_64: W: shared-lib-calls-exit /usr/lib64/libsfml-graphics.so.1.7 exit@GLIBC_2.2.5
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

sfml-devel.x86_64: W: shared-lib-calls-exit /usr/lib64/libsfml-graphics.so.1.7 exit@@GLIBC_2.2.5
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

sfml-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/libsfml-audio.so.1.7
sfml-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/libsfml-network.so.1.7
sfml-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/libsfml-window.so.1.7
sfml-devel.x86_64: W: wrong-file-end-of-line-encoding /usr/share/doc/sfml-devel-1.6/doc/build/doxygen.css
This file has wrong end-of-line encoding, usually caused by creation or
modification on a non-Unix system. It could prevent it from being displayed
correctly in some circumstances.

sfml-devel.x86_64: W: wrong-file-end-of-line-encoding /usr/share/doc/sfml-devel-1.6/doc/build/Doxygen.hpp
This file has wrong end-of-line encoding, usually caused by creation or
modification on a non-Unix system. It could prevent it from being displayed
correctly in some circumstances.
Bonjour,

Je suppose que tu es un développeur de SFML, ce qui faciliterait les choses. Quelques remarques à la lecture de ton fichier .spec :
  1. On ne crééra jamais de paquet nommé bibliothèque-devel ; le paquet devel correspondant à une bibliothèque donnée est défini comme « sous-paquet » de ton paquet principal.
    Si ton paquet principal doit fournir évidemment les bibliothèques dynamiques (versionnées) SFML et utilisées par tout programme compilé avec celle-ci, les fichiers d'en-tête ne sont pas utiles à l'exécution de ces programmes. C'est la raison d'être des paquets devel : ne fournir que les fichiers nécessaires au développement dans un paquet dédié, non requis par le paquet principal (ici les fichiers d'en-têtes et des liens vers les bibliothèques versionnées pour l'édition de liens). Je te renvoie à ce lien :
    http://fedoraproject.org/wiki/Packaging/Guidelines#Devel_Packages
    Je te suggère également de regarder des exemples de paquets fournissant des bibliothèques (entre autres ceux préfixés par lib*).
  2. Tu as choisi de packager une version SVN ; y at-il une raison particulière à cela, sachant qu'une version stable a été publiée récemment (je vois la version 1.6 datant d'avril) ? Les versions SVN sont délicates à gérer, as-tu des garanties sur la stabilité de l'API par exemple dans la branche SVN ?
    Si tu souhaites néanmoins vraiment utiliser la version SVN :
    1. Tu dois construire manuellement (donc hors de la section %prep de ton .spec) une archive de sources à partir d'un numéro de révision SVN, et indiquer comment elle a été construite, comme décrit ici :
      http://fedoraproject.org/wiki/Packaging/SourceURL#Using_Revision_Control
    2. Tu te reporteras aux guidelines suivantes pour adapter en conséquence tes champs Version et Release afin de faire apparaître qu'il s'agit d'une version provenant d'un VCS :
      http://fedoraproject.org/wiki/Packaging/NamingGuidelines#SnapshotPackages
  3. Le champ BuildRoot n'est plus obligatoire :
    http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag
  4. Les paquets spécifiés en tant que Requires me semblent tous superflus : en effet, rpmbuild est capable, à partir des bibliothèques dynamiques fournies par ton paquet (cf. ldd), de détecter les dépendances de celles-ci et de les ajouter en tant que Requires automatiquement.
  5. Le « make clean » dans ton %build est vraiment nécessaire ? S'il est nécessaire de lancer une telle commande, c'est que les sources délivrées par le projet sont crades, et c'est un bogue à corriger...
  6. Je note dans ta section %install que tu déplaces les fichiers installés dans %buildroot/lib (resp. %buildroot/include) visiblement vers %buildroot/%{_libdir} (resp. %buildroot/%{_includedir}/) ; en dehors du fait que ça ne soit guère canonique, tu devrais pouvoir spécifier les chemins d'installation via des variables passées au « make install » si celui-ci est bien fait. Dans le cas contraire, il te reste à le corriger...
  7. Attention aux commandes de pré/post-installation : on les place usuellement après la section %install.
Quant aux avertissement de rpmlint :
  • summary-ended-with-dot : le descriptif de ton paquet défini dans Summary se termine par un point... À supprimer.
  • incoherent-version-in-changelog : le changelog est à formater selon le schéma suivant :
    * Tue Apr 06 2010 Nom du packager <adresse mail> Version-Release
  • unstripped-binary-or-object : rpmbuild extrait les info. de débogage (le « strip ») de tes binaires et les rassemble dans un paquet sfml-debuginfo... Sauf si ces binaires ne contiennent pas d'informations de débogage... Il est important que les flags de compilation du projet Fedora soient utilisés pour compiler ton paquet. Ceux-ci sont définis dans la macro %{optflags} (et contient au moins -g). Je suppose que les Makefiles de SFML savent tirer profit de CXXFLAGS pour utiliser les flags Fedora.
  • shared-lib-calls-exit : le message est assez explicite. C'est bénin si tu estimes --- en tant que développeur SFML --- que les appels à exit() dans les fonctions des bibliothèques SFML sont vraiment nécessaires.
  • wrong-file-end-of-line-encoding : le fichier visé par l'avertissement a sans doute été créé sous Windows, avec des retours à la ligne en \n\r, au contraire du standard Unix en \n. Voir :
    http://fedoraproject.org/wiki/Common_Rpmlint_issues#wrong-file-end-of-line-encoding
Je suis peut-être passé à côté d'autres petits soucis, mais on y verra plus clair une fois les corrections suggérées plus haut effectuées. Pour la prochaine version de ton .spec, merci de fournir également un lien vers le RPM source et des logs de construction, ça facilitera les corrections futures 😉.
Bonjour,
Merci beaucoup pour votre aide, c'est mon premier RPM alors je galère pas mal. Je ne suis pas du tout développeur de SFML, par conséquent je n'ai pas la main sur le makefile ni sur les caractères de fin de ligne (peut être qu'un sed pourait résoudre le problème des \n?)


1. J'ai essayé de séparer doc header et libs mais j'ignore si je l'ai fait correctement
2. Non je n'ai pas de raisons particulières, j'ai suivi votre conseil et j'ai construit mon package a partir du SDK 1.6
3. OK, je l'ai supprimé
4. OK je les ai supprimés
5. Le make clean est necessaire à partir de la seconde fois ou on souhaite construire le rpm
6. Je n'ai pas la main sur le makefile, le problème est qu'il met les libs dans {un_truc}/usr/lib quelque soit l'architecture et non dans {un_truc}/usr/lib64 pour la version 64 bits. C'est crado mais je n'ai pas trouvé mieux (ou plutot plus simple)
7. Je les ai déplacés

L'ensemble complet du build est ici : http://tentacule.is-a-geek.com/share/rpmbuild/
Si vous préferez télécharger tout en zip : http://tentacule.is-a-geek.com/share/rpmbuild.zip
J'arrive pas a produire un log build -ba sfml-devel.spec 2>&1 /tmp/a.log écrit quand même sur la console.


Je n'ai pas réussi à trouver comment faire pour mettre les symboles de debugging, j'ai tenté : make %{?_smp_mflags} CFLAGS="%{optflags}" mais ca plante.
(c.f. la fin du log de la console à la fin de ce message)


Merci pour les explications sur les avertissements




--- SPEC ---
Name:           sfml
Version:        1.6
Release:        1%{?dist}
Summary:        SFML is a simple and fast multimedia library

Group:          Development/Libraries 
License:        zlib
URL:            [url]http://www.sfml-dev.org[/url]
#Source0:       h ttps://sfml.svn.sourceforge.net/svnroot/sfml/trunk/
#BuildRoot:      %%{_tmppath}/%%{name}-%%{version}-%%{release}-root-%%(%%{__id_u} -n)

Source0:    [url]http://downloads.sourceforge.net/sfml/SFML-%version-sdk-linux-64.tar.gz[/url]


BuildRequires:  freeglut-devel 
BuildRequires:  libX11-devel
BuildRequires:  libXrandr-devel
BuildRequires:  freetype-devel
BuildRequires:  openal-soft-devel
BuildRequires:  libsndfile-devel


#Requires:       freeglut
#Requires:       libX11
#Requires:       libXrandr
#Requires:       freetype
#Requires:       openal-soft
#Requires:       libsndfile

Provides:    sfml

%description
SFML is a free multimedia C++ API
#that provides you low and high level access to graphics, input, audio, etc.



%package devel
Requires:       sfml
Summary:        SFML headers

%description devel
SFML development files, SFML is a free multimedia C++ API




%package doc
Requires:       sfml
Summary:        SFML documentation

%description doc
SFML documentation files, SFML is a free multimedia C++ API









%prep
#SDK VERSION
rm -f SFML-%version-sdk-linux-64.tar.gz
wget [url]http://downloads.sourceforge.net/sfml/SFML-%version-sdk-linux-64.tar.gz[/url]
tar -xvf SFML-%version-sdk-linux-64.tar.gz
cp -rpf SFML-%version/* ./
cp  SFML-%version-sdk-linux-64.tar.gz %SOURCE0

#SVN VERSION
#svn co [url]https://sfml.svn.sourceforge.net/svnroot/sfml/trunk[/url] %%SOURCE0
#cp -rpf %%SOURCE0/* .
#rm -rf `find ./ | grep .svn`


%build
make clean
make



%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}

#lib
install -dp %{buildroot}/lib    %buildroot/%{_libdir}
cp      -pr %{buildroot}/lib/*  %buildroot/%{_libdir}/
rm      -rf %{buildroot}/lib

#include
install -dp %{buildroot}/include    %buildroot/%{_includedir}
cp      -pr %{buildroot}/include/*  %buildroot/%{_includedir}/
rm      -rf %{buildroot}/include



%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig



%clean
make clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%{_libdir}/*

%files devel
%defattr(644,root,root,0755)
%{_includedir}/*

%files doc
%defattr(644,root,root,0755)
%doc doc/


%changelog
* Tue Apr 06 2010 Upstream release <laurent at, sfml-dev.org> 1.6
- see : [url]http://mac.softpedia.com/progChangelog/SFML-Changelog-49686.html[/url]





--- LOG (extrait) ERREUR LORS DU BUILD AVEC : make %{?_smp_mflags} CFLAGS="%{optflags}" ----
Exécution_de(%build): /bin/sh -e /var/tmp/rpm-tmp.Lkm3hB
+ umask 022
+ cd /home/makerpm/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ make clean
make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/System'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/System'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Window'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Window'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Network'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Network'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Graphics'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Graphics'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Audio'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Audio'
make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML'
make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/ftp'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/ftp'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/opengl'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/opengl'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/pong'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/pong'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/post-fx'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/post-fx'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/qt'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/qt'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/sockets'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/sockets'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/sound'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/sound'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/sound_capture'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/sound_capture'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/voip'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/voip'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/window'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/window'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/wxwidgets'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/wxwidgets'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/samples/X11'
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples/X11'
make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/samples'
+ make -j3 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML'
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/System'
g++ -o Clock.o -c Clock.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Network'
g++ -o [url=http://Ftp.o]Ftp.o[/url] -c [url=http://Ftp.cpp]Ftp.cpp[/url] -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Window'
g++ -o Context.o -c Context.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
Clock.cpp:29:36: error: SFML/System/Platform.hpp: No such file or directory
Clock.cpp: In member function 'float sf::Clock::GetElapsedTime() const':
Clock.cpp:48: error: 'sf::priv' has not been declared
Clock.cpp: In member function 'void sf::Clock::Reset()':
Clock.cpp:57: error: 'sf::priv' has not been declared
make[2]: *** [Clock.o] Error 1
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/System'
make[1]: *** [sfml-system] Error 2
make[1]: *** Waiting for unfinished jobs....
g++ -o Input.o -c Input.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
Context.cpp:29:38: error: SFML/Window/WindowImpl.hpp: No such file or directory
Context.cpp: In constructor 'sf::Context::Context()':
Context.cpp:46: error: incomplete type 'sf::priv::WindowImpl' used in nested name specifier
Context.cpp: In destructor 'sf::Context::~Context()':
Context.cpp:55: warning: possible problem detected in invocation of delete operator:
Context.cpp:55: warning: invalid use of incomplete type 'struct sf::priv::WindowImpl'
/usr/local/include/SFML/Window/Context.hpp:39: warning: forward declaration of 'struct sf::priv::WindowImpl'
Context.cpp:55: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.
Context.cpp: In member function 'void sf::Context::SetActive(bool)':
Context.cpp:64: error: invalid use of incomplete type 'struct sf::priv::WindowImpl'
/usr/local/include/SFML/Window/Context.hpp:39: error: forward declaration of 'struct sf::priv::WindowImpl'
Context.cpp: In static member function 'static bool sf::Context::IsContextActive()':
Context.cpp:73: error: incomplete type 'sf::priv::WindowImpl' used in nested name specifier
Context.cpp: At global scope:
Context.cpp:35: warning: '<unnamed>::Dummy' defined but not used
make[2]: *** [Context.o] Error 1
make[2]: *** Waiting for unfinished jobs....
g++ -o Http.o -c Http.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Window'
make[1]: *** [sfml-window] Error 2
g++ -o IPAddress.o -c IPAddress.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -o Packet.o -c Packet.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -o SelectorBase.o -c SelectorBase.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -o SocketTCP.o -c SocketTCP.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -o SocketUDP.o -c SocketUDP.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -o Unix/SocketHelper.o -c Unix/SocketHelper.cpp -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
g++ -shared -Wl,-soname,libsfml-network.so.1.6 -o ../../../lib/libsfml-network.so.1.6 [url=http://Ftp.o]Ftp.o[/url] Http.o IPAddress.o Packet.o SelectorBase.o SocketTCP.o SocketUDP.o ./Unix/SocketHelper.o
/usr/bin/ld: [url=http://Ftp.o]Ftp.o[/url]: relocation R_X86_64_32S against `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage' can not be used when making a shared object; recompile with -fPIC
[url=http://Ftp.o]Ftp.o[/url]: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libsfml-network.so] Error 1
make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML/Network'
make[1]: *** [sfml-network] Error 2
make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/src/SFML'
make: *** [sfml] Error 2
erreur: Mauvais status de sortie pour /var/tmp/rpm-tmp.Lkm3hB (%build)


Erreur de construction de RPM:
    Mauvais status de sortie pour /var/tmp/rpm-tmp.Lkm3hB (%build)
un mois plus tard
5 jours plus tard
Bon voilou le spec file
%global     alphatag        20100917
%global     svn_revision    svn1570
# The source for this package was pulled from upstream's subversion (svn).
# Use the following commands to generate the tarball:
# svn export -r 1570 https://sfml.svn.sourceforge.net/svnroot/sfml/trunk sfml-20100917svn1570
# tar -cJvf sfml-20100917svn1570.tar.xz sfml-20100917svn1570
Name:           sfml
Version:        1.6
Release:        1.%{alphatag}%{svn_revision}%{?dist}
Summary:        SFML is a simple and fast multimedia library
License:        zlib/libpng License
Group:          System/Libraries
URL:            http://sourceforge.net/projects/sfml
Source:         %{name}-%{alphatag}%{svn_revision}.tar.xz
BuildRequires:  mesa-libGL-devel
BuildRequires:  mesa-libGLU-devel
BuildRequires:  freetype-devel
BuildRequires:  libX11-devel
BuildRequires:  libXrandr-devel
BuildRequires:  openal-devel
BuildRequires:  libsndfile-devel
BuildRequires:  recode
#for samples
BuildRequires:  qt4-devel
BuildRequires:  wxGTK-devel

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

%description
SFML is a portable and easy to use multimedia API written in C++.

Its features are :
 - portability,
 - object-oriented design,
 - flexibility (a lot of small packages),
 - easy to use,
 - easy to integrate with GUI toolkits.

The library is divided in 5 small packages :
 - audio
 - graphics
 - network
 - system
 - window

This package contains documentation and samples.

%package audio
Summary:        Dynamic SFML libraries for audio
Group:          Development/Libraries

%description audio
Includes dynamic SFML libraries for audio.

%package audio-devel
Summary:        Header files from %{name}-audio
Group:          Development/Libraries
Requires:       %{name}-system-devel = %{version}-%{release}

%description audio-devel
Includes files for developing programs based on %{name}-audio.

%package graphics
Summary:        Dynamic SFML libraries for graphics
Group:          Development/Libraries

%description graphics
Includes dynamic SFML libraries for graphics.

%package graphics-devel
Summary:        Header files from %{name}-graphics
Group:          Development/Libraries

%description graphics-devel
Includes files for developing programs based on %{name}-graphics.

%package network
Summary:        Dynamic SFML libraries for graphicsnetwork
Group:          Development/Libraries

%description network
Includes dynamic SFML libraries for graphics network.

%package network-devel
Summary:        Header files from %{name}-network
Group:          Development/Libraries

%description network-devel
Includes files for developing programs based on %{name}-network.

%package system
Summary:        Dynamic SFML libraries for system
Group:          Development/Libraries

%description system
Includes dynamic SFML libraries for system.

%package system-devel
Summary:        Header files from %{name}-system
Group:          Development/Libraries

%description system-devel
Includes files for developing programs based on %{name}-system.

%package window
Summary:        Dynamic SFML libraries for window
Group:          Development/Libraries

%description window
Includes dynamic SFML libraries for window.

%package window-devel
Summary:        Header files from %{name}-window
Group:          Development/Libraries
Requires:       sfml-system-devel = %{version}

%description window-devel
Includes files for developing programs based on %{name}-window.

%prep
%setup -q -n %{name}-%{alphatag}%{svn_revision}
find . -name "*.txt" -exec sed -i 's/\r//' {} \;
recode l1..u8 *.txt

%build
make  %{?_smp_mflags}

%install
make install DESTDIR=%{buildroot} DESTLIBDIR=%{buildroot}/%{_libdir} DESTINCDIR=%{buildroot}/%{_includedir}

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%clean
make clean
rm -rf %{buildroot}

%files
%defattr(0644,root,root,0755)
%doc *.txt doc/*

%files audio
%defattr(0644,root,root,0755)
%{_libdir}/libsfml-audio.so*

%files audio-devel
%defattr(0644,root,root,0755)
%{_includedir}/SFML/Audio.hpp
%{_includedir}/SFML/Audio

%files graphics
%defattr(0644,root,root,0755)
%{_libdir}/libsfml-graphics.so*

%files graphics-devel
%defattr(0644,root,root,0755)
%{_includedir}/SFML/Graphics.hpp
%{_includedir}/SFML/Graphics

%files network
%defattr(0644,root,root,0755)
%{_libdir}/libsfml-network.so*

%files network-devel
%defattr(0644,root,root,0755)
%{_includedir}/SFML/Network.hpp
%{_includedir}/SFML/Network

%files system
%defattr(0644,root,root,0755)
%{_libdir}/libsfml-system.so*

%files system-devel
%defattr(0644,root,root,0755)
%dir %{_includedir}/SFML
%{_includedir}/SFML/Config.hpp
%{_includedir}/SFML/System.hpp
%{_includedir}/SFML/System
%{_libdir}/libsfml-system.so

%files window
%defattr(0644,root,root,0755)
%{_libdir}/libsfml-window.so*

%files window-devel
%defattr(0644,root,root,0755)
%{_includedir}/SFML/Window.hpp
%{_includedir}/SFML/Window

%changelog
* Sun Oct 03 2010 Jonathan MERCIER <bioinfornatics at gmail.com> 1.6-1.20100917svn1570
- Initial release
Il serait bon que tu gardes le changelog précédant 😉
s'il veut prendre le paquet et le soumettre feel free
pour le changelog je sais pas il a donner l'idée pas le spec enfin il fait comme il veut si je peux éviter de maintenir ce paquet
Pourquoi diable fais-tu des paquets pour lesquels tu n'es pas intéressé ?

Pour le changelog, je te signale que le spec (au moins son début) est présent ici même.
un an plus tard