rpm depuis giac_xx.deb
Modérateur : xcasadmin
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: rpm depuis giac_xx.deb
pour savoir les valeurs des macros %configure et %optflags et ... dans rpm vous pouvez aussi essayer:
rpm --eval "{%optflags}"
et
rpm --eval "{%configure}"
et
rpm --eval "%__global_cflags"
nbon courage
Frederic
rpm --eval "{%optflags}"
et
rpm --eval "{%configure}"
et
rpm --eval "%__global_cflags"
nbon courage
Frederic
Re: rpm depuis giac_xx.deb
J'ai installé une opensuse dans un virtualbox, du coup voici quelques infos sur la création du rpm.
D'abord gcc 4.7.1 ne compile pas xcas avec les flags -O2, prog.cc et usual.cc provoquent une erreur interne, par contre ça passe avec -g tout seul. Il faut aussi changer l'ordre des fichiers objets et modifier tous les Makefile.am en remplaçant $(prefix) par $(DATADIR)/$(prefix) (je mettrai le source modifié en ligne la semaine prochaine).
Voici mon fichier de specs (je suppose que le "bon" fltk est installé, je n'ai pas modifié CXXFLAGS, on suppose que gcc va fixer son bug un jour... en attendant je crée les rpm en faisant successivement rpmbuild -bp/-bc/-bi/-bb --short-circuit giac.specs et en compilant prog et usual quand ça plante en enlevant temporairement le -O2 du Makefile, et donc on ne peut installer le rpm qu'en ajoutant --nodeps à cause du short-circuit).
D'abord gcc 4.7.1 ne compile pas xcas avec les flags -O2, prog.cc et usual.cc provoquent une erreur interne, par contre ça passe avec -g tout seul. Il faut aussi changer l'ordre des fichiers objets et modifier tous les Makefile.am en remplaçant $(prefix) par $(DATADIR)/$(prefix) (je mettrai le source modifié en ligne la semaine prochaine).
Voici mon fichier de specs (je suppose que le "bon" fltk est installé, je n'ai pas modifié CXXFLAGS, on suppose que gcc va fixer son bug un jour... en attendant je crée les rpm en faisant successivement rpmbuild -bp/-bc/-bi/-bb --short-circuit giac.specs et en compilant prog et usual quand ça plante en enlevant temporairement le -O2 du Makefile, et donc on ne peut installer le rpm qu'en ajoutant --nodeps à cause du short-circuit).
Code : Tout sélectionner
%define name giac
%define version 1.0.0
%define release 1
Name: %{name}
Summary: Computer Algebra System
Version: %{version}
Release: %{release}
License: see /usr/share/doc/giac/COPYING
Source0: giac-1.0.0.tar.bz2
URL: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
Group: Sciences/Mathematics
Vendor: Bernard Parisse
BuildRoot: %{_tmppath}/%{name}-buildroot
BuildRequires: gcc-c++
BuildRequires: gmp-devel, gsl-devel
%description
CAS
%package devel
Summary: Development files for libgiac
Requires: %{name}
%description devel
Development files for libgiac.
%prep
##rm -rf $RPM_BUILD_ROOT/
%setup -q
%build
LDFLAGS+=-lX11
export LDFLAGS
##export LIBS='/usr/local/lib/libpari.a /usr/local/lib/libgsl.a /usr/local/lib/libgslcblas.a'
%configure
%__make
%install
%__rm -rf $RPM_BUILD_ROOT
%__make DESTDIR=$RPM_BUILD_ROOT install
%clean
%__rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{_bindir}/*
%{_libdir}/libgiac.so*
%{_libdir}/libgiac.la
%{_datadir}/giac
%{_datadir}/doc/giac
%{_datadir}/info/giac_*.info.gz
%{_datadir}/locale/*/LC_MESSAGES/giac.mo
##%{_datadir}/info/dir
%{_datadir}/applications/xcas.desktop
%{_datadir}/application-registry/xcas.applications
%{_datadir}/pixmaps/xcas.xpm
##%{_datadir}/man/man1/*
%files devel
%defattr(-,root,root)
%{_includedir}/giac
%{_libdir}/libgiac.a
%changelog
* Thu Nov 08 2012 Bernard Parisse <parisse@fourier.ujf-grenoble.fr> 1.0.0
Alpha release
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: rpm depuis giac_xx.deb
Avec mageia c'est un peu different, je viens de faire des essais.
les paquets n'ont pas tout a fait les memes noms, en revanche c'est gcc 4.6 donc ca devrait passer.
J'ai modifie le spec, maintenant giac compile pendant un bon moment, mais ca bloque car la compilation ne passe pas avec l'option:
-Werror=format-security
Est ce que ca te serait difficile de modifier les sources pour que ca compile avec cette option?
Fred
les paquets n'ont pas tout a fait les memes noms, en revanche c'est gcc 4.6 donc ca devrait passer.
J'ai modifie le spec, maintenant giac compile pendant un bon moment, mais ca bloque car la compilation ne passe pas avec l'option:
-Werror=format-security
Est ce que ca te serait difficile de modifier les sources pour que ca compile avec cette option?
Fred
Re: rpm depuis giac_xx.deb
le problème c'est que comme je ne comprend pas les erreurs, je ne vois vraiment pas comment modifier... On dirait des checks pour des appels a des fonctions genre printf alors que les erreurs ne correspondent pas du tout à ce type d'appel (et je ne vois pas comment appeler mes fonctions autrement de toute façon).
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: rpm depuis giac_xx.deb
Bon donc j'ai du forcer la variable CXXFLAGS et ne pas utiliser %configure car ca ajoutait toujours cette option.
J'ai reussi a faire des rpm pour mageia x86_64 ils sont la ainsi que le spec:
http://www.math.jussieu.fr/~han/xcas/mageia
voici le spec (pas tres joli, mais qui marche avec:
rpmbuild -bb
J'ai reussi a faire des rpm pour mageia x86_64 ils sont la ainsi que le spec:
http://www.math.jussieu.fr/~han/xcas/mageia
voici le spec (pas tres joli, mais qui marche avec:
rpmbuild -bb
Code : Tout sélectionner
Name: giac
Summary: Computer algebra system
Version: 1.0.0
Release: 1
License: see /usr/share/doc/giac/copyright
Group: Applications/Engineering
# Other versions of fltk often give problems with giac
Source0: http://www-fourier.ujf-grenoble.fr/~parisse/giac/fltk-1.3.0.tar.gz
Source1: http://www-fourier.ujf-grenoble.fr/~parisse/giac/%{name}-%{version}.tar.bz2
URL: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
Vendor: Bernard Parisse
BuildRequires: gcc-c++
BuildRequires: readline-devel, mpfr-devel, gmp-devel, gsl-devel, libmesagl1-devel, libxorg-x11-devel, libxorg-x11-static-devel, ntl-devel, libpari-devel, libpng-devel, libjpeg-devel, texlive
%description
Giac Is A Cas (computer algebra system). It is under active development and
consists of:
- a C++ library (libgiac)
- a command line interpreter (icas)
- a FLTK-based GUI (xcas)
Bernard Parisse is the main author of the CAS of HP40G and HP49G calculators.
%package devel
Summary: Development files for libgiac
Requires: %{name}
%description devel
Development files for libgiac.
%prep
%setup -b 1
cd %_builddir/%{name}-%{version} && autoreconf
%__sed -i 's|$(prefix)|$(DESTDIR)$(prefix)|' `find . -name Makefile.in`
%__sed -i 's|$(includedir)/giac|$(DESTDIR)$(includedir)/giac|' Makefile.in
TMPFLTK=%_builddir/fltk-1.3.0
export TMPFLTK
cd $TMPFLTK &&./configure --prefix=$TMPFLTK && make
%build
TMPFLTK=%_builddir/fltk-1.3.0
export TMPFLTK
CPPFLAGS+=-I$TMPFLTK
export CPPFLAGS
LDFLAGS+="-L$TMPFLTK/lib -lX11 -lpng -ljpeg"
export LDFLAGS
export CXXFLAGS="-g -O2"
#cd %_builddir/%{name}-%{version} && ./configure --prefix=/usr
CONFIGURE_TOP="${CONFIGURE_TOP:-.}";
/usr/lib/rpm/mageia/force-as-needed-for-shared-lib-in-libtool ;
/usr/lib/rpm/mageia/drop-ld-no-undefined-for-shared-lib-modules-in-libtool ;
/usr/lib/rpm/mageia/fix-libtool-ltmain-from-overlinking ;
/usr/lib/rpm/mageia/fix-libtool-from-moving-options-after-libs $CONFIGURE_TOP ;
/usr/lib/rpm/mageia/fix-dlsearch-path-in-libtool-for-multilib $CONFIGURE_TOP lib64 ;
[ -f $CONFIGURE_TOP/configure.in -o -f $CONFIGURE_TOP/configure.ac ] &&
CONFIGURE_XPATH="--x-includes=/usr/include --x-libraries=/usr/lib64"
$CONFIGURE_TOP/configure x86_64-mageia-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/lib64 \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
$CONFIGURE_XPATH
%__make
%install
%__rm -rf $RPM_BUILD_ROOT
%__make DESTDIR=$RPM_BUILD_ROOT install
%clean
%__rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{_bindir}/*
%{_datadir}/doc/giac
%{_datadir}/giac
%{_datadir}/info/giac_*.info.xz
%{_datadir}/locale/*/LC_MESSAGES/giac.mo
##%{_bindir}/x*
%{_datadir}/applications/xcas.desktop
%{_datadir}/application-registry/xcas.applications
%{_datadir}/pixmaps/xcas.xpm
##%{_datadir}/man/man1/*
%files devel
%defattr(-,root,root)
%{_includedir}/giac
%{_libdir}/libgiac.a
%{_libdir}/libgiac.la
%{_libdir}/libgiac.so*
%changelog
* Sat Nov 10 2012 Frederic Han <han@math.jussieu.fr>
-adapt from the fedora file of Huaren Zhong <huaren.zhong@gmail.com> - 0.9.8
-add the gui support with fltk.
-uptate to 1.0.0
Re: rpm depuis giac_xx.deb
Bon, j'ai une idee pour contourner le bug de gcc, on lance le rpm -ba sans rien specifier pour les CXXFLAGS, et apres que le systeme a fait configure, on fait ctrl-z pour stopper, on compile a la main prog.cc et usual.cc:
puis on fait fg pour relancer. On va voir si ca fait un rpm OK ou pas...
Code : Tout sélectionner
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -c -o prog.lo prog.cc
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -c -o usual.lo usual.cc
Re: rpm depuis giac_xx.deb
Voila, j'ai mis les rpm 64 bits pour opensuse 12.2 en ligne:
http://www-fourier.ujf-grenoble.fr/~par ... x86_64.rpm
et http://www-fourier.ujf-grenoble.fr/~par ... x86_64.rpm
http://www-fourier.ujf-grenoble.fr/~par ... x86_64.rpm
et http://www-fourier.ujf-grenoble.fr/~par ... x86_64.rpm
Re: rpm depuis giac_xx.deb
Bon, j'ai fini par comprendre pour les format-security, il faut mettre des "%s" en 1er argument de fl_ask, fl_message, fl_alert. Si en plus on enlève le deprecated dans la déclaration de fl_ask dans FL/fl_ask.h alors on se retrouve avec une compilation beaucoup plus clean. Je mettrai à jour le source lundi.
Re: rpm depuis giac_xx.deb
Je viens de tester le rpm pour mageia en 64 bits proposé par frederic han dans un post du 11 novembre.
J'ai dû forcer l'installation car "libgiac.so.0 est nécessaire mais absente".
Et en fait, une fois linstalation forcée faite, xcas réclame bien sûr sa libgiac.so.0, qui n'est pas présente dans le rpm.
Je n'ai pas encore testé la construction du rpm.
Edit : ce rpm ne fait que 16.5 Mo, ce qui est au moins surprenant.
J'ai dû forcer l'installation car "libgiac.so.0 est nécessaire mais absente".
Et en fait, une fois linstalation forcée faite, xcas réclame bien sûr sa libgiac.so.0, qui n'est pas présente dans le rpm.
Je n'ai pas encore testé la construction du rpm.
Edit : ce rpm ne fait que 16.5 Mo, ce qui est au moins surprenant.
Dernière modification par leo le lun. nov. 19, 2012 7:40 pm, modifié 1 fois.
Re: rpm depuis giac_xx.deb
Et celui de mon site pour opensuse, marche-t-il pour mageia?
Re: rpm depuis giac_xx.deb
Oui je viens juste de tester ; au moins avec les essais basiques (Addition, .. , dérivée, intégration).
L'installation s'est faite sans problème.
L'installation s'est faite sans problème.
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: rpm depuis giac_xx.deb
Oui les scripts sous mageia ont cree 3 rpm automatiquement, la libgiac est dans un autre rpm.
Il faut donc installer au moins ces 2 la, mais je n'ai teste qu'avec les 3 en meme temps.
giac-1.0.0-1.x86_64.rpm
giac-devel-1.0.0-1.x86_64.rpm
celui ci doit etre plutot les sources.
giac-debug-1.0.0-1.x86_64.rpm
Frederic
Il faut donc installer au moins ces 2 la, mais je n'ai teste qu'avec les 3 en meme temps.
giac-1.0.0-1.x86_64.rpm
giac-devel-1.0.0-1.x86_64.rpm
celui ci doit etre plutot les sources.
giac-debug-1.0.0-1.x86_64.rpm
Frederic
Re: rpm depuis giac_xx.deb
Je ne l'avais pas compris comme ça. Les rpms de Mageia (ou mandriva) avec les suffixes devel sont en fait les fichiers sources, non compilés du logiciel. Et c'est ce que j'ai cru. Du Wiki mandriva :
Je testerai plus tard.Différencier version exécutable et version compilation des fichiers:
Les paquetages qui contiennent des bibliothèques de programmes possèdent une version exécutable et une version de développement pour la compilation. Le nom du paquetage de la version de développement contient toujours la mention : devel. Si vous ne compilez pas de programme vous n'avez pas besoin d'installer les paquetages devel. Vous pouvez aussi les installer quand vous avez à compiler un logiciel et les supprimer ensuite.
Re: rpm depuis giac_xx.deb
Sous debian aussi, les packages devel contiennent les headers (fichiers *.h), pas les librairies. Je pense que Frederic devrait modifier un peu son fichier spec et deplacer l'install des lib de %files devel vers %files
Re: rpm depuis giac_xx.deb
J'ai réussi à construire un rpm correct et un xcas fonctionnel pour mageia2 avec ce spec, inspiré de celui de frederic han :
Comme je suis sur une machine 64 bits, j'ai rectifié les dépendances réclamées (lib64mesagl1-devel, .... ). J'ai commenté la ligne originelle.
Et il semblerait que je puisse me passer des libxorg*.
Code : Tout sélectionner
Name: giac
Summary: Computer algebra system
Version: 1.0.0
Release: 1
License: see /usr/share/doc/giac/copyright
Group: Applications/Engineering
# Other versions of fltk often give problems with giac
Source0: http://www-fourier.ujf-grenoble.fr/~parisse/giac/fltk-1.3.0.tar.gz
Source1: http://www-fourier.ujf-grenoble.fr/~parisse/giac/%{name}-%{version}.tar.bz2
URL: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
Vendor: Bernard Parisse
BuildRequires: gcc-c++
BuildRequires: readline-devel, mpfr-devel, gmp-devel, gsl-devel, lib64mesagl1-devel, ntl-devel, lib64pari2-devel, lib64png-devel, lib64jpeg-devel, texlive
#BuildRequires: readline-devel, mpfr-devel, gmp-devel, gsl-devel, lib64mesagl1-devel, libxorg-x11-devel, libxorg-x11-static-devel, ntl-devel, lib64pari-devel, libpng-devel, libjpeg-devel, texlive
BuildArch: x86_64
%description
Giac Is A Cas (computer algebra system). It is under active development and
consists of:
- a C++ library (libgiac)
- a command line interpreter (icas)
- a FLTK-based GUI (xcas)
Bernard Parisse is the main author of the CAS of HP40G and HP49G calculators.
%package devel
Summary: Development files for libgiac
Requires: %{name}
%description devel
Development files for libgiac.
%prep
%setup -b 1
cd %_builddir/%{name}-%{version} && autoreconf
%__sed -i 's|$(prefix)|$(DESTDIR)$(prefix)|' `find . -name Makefile.in`
%__sed -i 's|$(includedir)/giac|$(DESTDIR)$(includedir)/giac|' Makefile.in
TMPFLTK=%_builddir/fltk-1.3.0
export TMPFLTK
cd $TMPFLTK &&./configure --prefix=$TMPFLTK && make
%build
TMPFLTK=%_builddir/fltk-1.3.0
export TMPFLTK
CPPFLAGS+=-I$TMPFLTK
export CPPFLAGS
LDFLAGS+="-L$TMPFLTK/lib -lX11 -lpng -ljpeg"
export LDFLAGS
export CXXFLAGS="-g -O2"
#cd %_builddir/%{name}-%{version} && ./configure --prefix=/usr
CONFIGURE_TOP="${CONFIGURE_TOP:-.}";
/usr/lib/rpm/mageia/force-as-needed-for-shared-lib-in-libtool ;
/usr/lib/rpm/mageia/drop-ld-no-undefined-for-shared-lib-modules-in-libtool ;
/usr/lib/rpm/mageia/fix-libtool-ltmain-from-overlinking ;
/usr/lib/rpm/mageia/fix-libtool-from-moving-options-after-libs $CONFIGURE_TOP ;
/usr/lib/rpm/mageia/fix-dlsearch-path-in-libtool-for-multilib $CONFIGURE_TOP lib64 ;
[ -f $CONFIGURE_TOP/configure.in -o -f $CONFIGURE_TOP/configure.ac ] &&
CONFIGURE_XPATH="--x-includes=/usr/include --x-libraries=/usr/lib64"
$CONFIGURE_TOP/configure x86_64-mageia-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/lib64 \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
$CONFIGURE_XPATH
%__make
%install
%__rm -rf $RPM_BUILD_ROOT
%__make DESTDIR=$RPM_BUILD_ROOT install
%clean
%__rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{_bindir}/*
%{_datadir}/doc/giac
%{_datadir}/giac
%{_datadir}/info/giac_*.info.xz
%{_datadir}/locale/*/LC_MESSAGES/giac.mo
##%{_bindir}/x*
%{_datadir}/applications/xcas.desktop
%{_datadir}/application-registry/xcas.applications
%{_datadir}/pixmaps/xcas.xpm
##%{_datadir}/man/man1/*
%{_libdir}/libgiac.la
%{_libdir}/libgiac.so*
%files devel
%defattr(-,root,root)
%{_includedir}/giac
%{_libdir}/libgiac.a
%changelog
* Sat Nov 10 2012 Frederic Han <han@math.jussieu.fr>
-adapt from the fedora file of Huaren Zhong <huaren.zhong@gmail.com> - 0.9.8
-add the gui support with fltk.
-uptate to 1.0.0
Et il semblerait que je puisse me passer des libxorg*.