Gambas France BETA


Pas de compte ? Incription

Création des packages Gambas3 pour Fedora

À propos de ce code

Bonjour,

Voici un petit tutoriel et retour d’expérience sur la manière de créer relativement facilement et proprement les packages RPM a partir de la dernière version de Gambas3 svn du moment.

Pour l'instant je ne l'ai testé que sur une distribution Fedora 14 et cela fonctionne impeccablement. Sur des versions Fedora antérieure à la Fedora 14, il y de fortes chances qu'il y ait des problèmes de compilation du a des librairies ou un niveau de distribution trop vielle par rapport à Gambas3.


Pour résumer, le principe de la création de packages RPM sur Fedora (mais procedure valable pour patiquement toutes les distributions à base de RPM) est de créer un fichier archive contenant les sources du programme a compiler, créer, etc... de créer un fichier '*.spec' ( Ex: gambas3.spec) dans lequel toutes les informations relatives à la version, la description, méthode de création du programme a packager, etc...
Enfin à partir du fichier Archive, du fichier '*.spec' de créer automatiquement les packages par la commande suivante: rpmbuild -ba <fichier *.spec>


- Pour réaliser correctement la création des packages sur Fedora 14 je me suis servi du fichier source suivant:

gambas3-2.99.5-1.fc14.src.rpm

- Grâce à l'utilitaire 'Midnight Commander', j'ai pu extraire les fichiers nécessaires à toute cette opération du fichier src.rpm

gambas3-3.0.90-noliconv.patch
gambas3-3.0.90-nolintl.patch
gambas3-3.0.90-use-libv4l1.patch <== ce fichier n'a pas été retenu pour la suite de la compilation car dans les dernieres versions de Gambas3 svn rev #4553,donc ce patch n'est plus nécessaire et remonte une erreur.
gambas3.desktop
gambas3.spec

- Ici le but est de se baser sur les fichiers contenu dans le fichier: gambas3-2.99.5-1.fc14.src.rpm
de changer l'archive de Gambas3 et de mettre à jour le fichier gambas3.spec

Voici le sommaire des étapes:


1 - Construction de l'environnement de création des RPMs:
1.1 - Création de l'arborescence des répertoires
1.2 - Création du fichier '.rpmmacros'
2 - Création des fichiers Sources:
2.1 - Archive de Gambas3 SVN
2.2 - Fichiers patch
2.3 - Fichier *.spec
3 - Création des fichier RPM
3.1 - Lancement de la commande 'rpmbuild'
4 - Installation des packages Gambas3 fraichement crées

SOMMAIRE


1 - Construction de l'environnement de création des RPMs:


1.1 - Création de l'arborescence des répertoires


J'ai choisi de créer cette arborescence dans mon HomeDir comme vous pourrez le faire dans le votre. Il n'y a pas de contrainte mais il faut que les chemins concordent pour toute la suite de la procedure.


/home/olivier/RPM
/home/olivier/RPM/BUILD
/home/olivier/RPM/BUILDROOT
/home/olivier/RPM/RPMS
/home/olivier/RPM/SOURCES
/home/olivier/RPM/SRPMS
/home/olivier/RPM/SPECS
/home/olivier/RPM/tmp


1.2 - Création du fichier ' .rpmmacros '



Créer le fichier '.rpmmacros' a la racine de votre HomeDir (/home/olivier/.rpmmacros) avec le contenu suivant:


%_topdir /home/olivier/RPM
%_tmpipath %{_topdir}/tmp


Description:
%_topdir /home/olivier/RPM <=== Indique le répertoire de l'arborescence RPM à utiliser
%_tmpipath %{_topdir}/tmp <=== Indique le répertoire des fichiers temporaires crées durant tout le processus 'rpmbuild'


2 - Création des fichiers Sources:


2.1 - Archive de Gambas3 SVN


La procedure suivante concerne la récupération des sources de Gambas3 par SVN, d'en créer une archive bzip2 que l'on stockera dans le répertoire: /home/olivier/RPM/SOURCES/


mkdir /home/olivier/Gambas3

cd /home/olivier/Gambas3
svn checkout https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/trunk/
...
...
...

mv trunk gambas3-3.0.90
tar cvfj /home/olivier/RPM/SOURCES/gambas3-3.0.90.tar.bz2 ./gambas3-3.0.90
mv gambas3-3.0.90 trunk

2.2 - Fichiers patch


Les fichiers précédemments extraits du package source .src.rpm doivent être copiés dans les répertoires comme suit:

Copier les fichiers:

gambas3-3.0.90-noliconv.patch
gambas3-3.0.90-nolintl.patch
gambas3-3.0.90-use-libv4l1.patch
gambas3.desktop

dans le répertoire: /home/olivier/RPM/SOURCES/

2.3 - Fichier *.spec


Le fichier 'gambas3.spec' précédemment extrait du package source .src.rpm doit être copié dans le répertoire comme suit:

Copier les fichiers:


gambas3.spec
gambas3-3.0.90-nolintl.patch
gambas3-3.0.90-use-libv4l1.patch
gambas3.desktop

dans le répertoire: /home/olivier/RPM/SPECS



2.4 - Modifier et mettre à jour le fichier *.spec


Maintenant éditer le fichier 'gambas3.spec' pour qu'il soit compatible avec la version derniere version Gambas3 svn: gambas3-3.0.90

Il est important de noter que le plus gros travail à été effectué par les personnes de Fedora que je remercie au passage pour leur excellent travail et sur lequel je n'ai fait que quelques mise à jour donc au départ c'est eux qui ont le plus de mérite.

Voici un aperçu du fichier 'gambas.spec' car il est trop gros pour être affiché entier:

Vous pouvez télécharger le fichier 'gambas3.spec' directement ici avec le bouton vert Télécharger
http://gambasforge.org/download/code-58-creation-des-packages-gambas3-pour-fedora.tar.gz

============= DEBUT DU FICHIER spec ===================


Name: gambas3
Summary: IDE based on a basic interpreter with object extensions
Version: 3.0.90
Release: 5%{?dist}
License: GPL+
Group: Development/Tools
URL: http://gambas.sourceforge.net/
Source0: http://downloads.sourceforge.net/gambas/%{name}-%{version}.tar.bz2
Source1: %{name}.desktop
BuildRequires: automake, autoconf, SDL-devel, SDL_mixer-devel
BuildRequires: mysql-devel, postgresql-devel, gtk2-devel
BuildRequires: desktop-file-utils, gettext-devel, curl-devel, librsvg2-devel
BuildRequires: poppler-devel, bzip2-devel, zlib-devel, pkgconfig
BuildRequires: unixODBC-devel, libXtst-devel, sqlite-devel, mesa-libGL-devel
BuildRequires: mesa-libGLU-devel, libpng-devel, libjpeg-devel, libxml2-devel
BuildRequires: libxslt-devel, pcre-devel, SDL_image-devel, libICE-devel
BuildRequires: libXcursor-devel, libXft-devel, libtool-ltdl-devel
BuildRequires: xdg-utils, glibc-devel, libffi-devel
BuildRequires: cairo-devel, qt4-devel, dbus-devel, libXcursor-devel
BuildRequires: SDL_ttf-devel, sqlite2-devel, glew-devel
BuildRequires: imlib2-devel, qt-webkit-devel
BuildRequires: libtool, gsl-devel

...
...
...
... beaucoup de lignes plus loin
...
...
...

%changelog
* Sun Mar 18 2012 Olivier Cruilles <linuxos@club-internet.fr> - 3.0.90-5
- Fix problem in the packager of Gambas3
- Rebuild (from new svn source)

* Sat Mar 17 2012 Olivier Cruilles <linuxos@club-internet.fr> - 3.0.90-4
- Rebuild (from new svn source)

* Fri Mar 16 2012 Olivier Cruilles <linuxos@club-internet.fr> - 3.0.90-3
- Rebuild (from new svn source)

* Thu Mar 15 2012 Olivier Cruilles <linuxos@club-internet.fr> - 3.0.90-2
- Rebuild (from new svn source)

* Wed Mar 14 2012 Olivier Cruilles <linuxos@club-internet.fr> - 3.0.90-1
- Rebuild (from new svn source)

* Tue Dec 06 2011 Adam Jackson <ajax@redhat.com> - 2.99.6-2
- Rebuild for new libpng

* Fri Nov 4 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.6-1
- update to 2.99.6

* Fri Oct 28 2011 Rex Dieter <rdieter@fedoraproject.org> - 2.99.5-2
- rebuild(poppler)

* Tue Oct 11 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.5-1
- update to 2.99.5

* Fri Sep 30 2011 Marek Kasik <mkasik@redhat.com> - 2.99.4-2
- Rebuild (poppler-0.18.0)

* Mon Sep 26 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.4-1
- 2.99.4

* Tue Sep 20 2011 Marek Kasik <mkasik@redhat.com> - 2.99.3-3
- Rebuild (poppler-0.17.3)

* Wed Sep 7 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.3-2
- make -devel Require -runtime

* Tue Sep 6 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.3-1
- 2.99.3

* Thu Aug 11 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.2-1
- 2.99.2
- clean up exec permissions on gb.sdl/LICENSE

* Tue Aug 9 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.1-3
- disable insecure permissions on example dirs

* Tue Jun 7 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.1-2
- drop kdelibs3-devel BR

* Wed Apr 6 2011 Tom Callaway <spot@fedoraproject.org> - 2.99.1-1
- new package for Gambas3

============= FIN DU FICHIER spec ===================

3 - Création des fichier RPM


A ce stade de la procédure tous les fichiers nécéssaires ont été crées ou modifiés et placés dans les bon répertoires.

3.1 - Lancement de la commande 'rpmbuild'



cd /home/olivier/RPM/SPEC

rpmbuild -ba gambas3.spec


Nota: lors du processus de création des RPMs, voici les grandes étapes que la commande 'rpmbuild' réalise:


- Vérification de la présence des packages devel nécessaires a la compilation de Gambas
- Décompactage de l'archive 'gambas3-3.0.90.tar.bz2' dans /home/olivier/RPM/BUILD
- ./reconf-all
- ./configure <avec toutes les options du fichier .spec>
- make
- make install (ici l'installation s'effectue dans un réperoire isolé et non sur votre système Linux)

- Récupération de tous les fichiers crées pour construire chacun des packages de Gambas3
- Les packages Gambas3
- Les packages Composants de Gambas3

- A la fin, si des fichiers ont été crées mais non mis dans les packages, il vous seront signalés ce qui m'a permi de rajouter les fichiers manquants ou en plus par rapport a la version des packages crées a la base par la communauté Fedora.


4 - Installation des packages Gambas3 fraichements crées


4.1 - Liste des packages crées



gambas3-debuginfo-3.0.90-5.fc14.i686.rpm
gambas3-devel-3.0.90-5.fc14.i686.rpm
gambas3-examples-3.0.90-5.fc14.i686.rpm
gambas3-gb-cairo-3.0.90-5.fc14.i686.rpm
gambas3-gb-chart-3.0.90-5.fc14.i686.rpm
gambas3-gb-compress-3.0.90-5.fc14.i686.rpm
gambas3-gb-crypt-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-form-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-mysql-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-odbc-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-postgresql-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-sqlite2-3.0.90-5.fc14.i686.rpm
gambas3-gb-db-sqlite3-3.0.90-5.fc14.i686.rpm
gambas3-gb-dbus-3.0.90-5.fc14.i686.rpm
gambas3-gb-desktop-3.0.90-5.fc14.i686.rpm
gambas3-gb-eval-highlight-3.0.90-5.fc14.i686.rpm
gambas3-gb-form-3.0.90-5.fc14.i686.rpm
gambas3-gb-form-dialog-3.0.90-5.fc14.i686.rpm
gambas3-gb-form-mdi-3.0.90-5.fc14.i686.rpm
gambas3-gb-form-stock-3.0.90-5.fc14.i686.rpm
gambas3-gb-gsl-3.0.90-5.fc14.i686.rpm
gambas3-gb-gtk-3.0.90-5.fc14.i686.rpm
gambas3-gb-gui-3.0.90-5.fc14.i686.rpm
gambas3-gb-image-3.0.90-5.fc14.i686.rpm
gambas3-gb-image-effect-3.0.90-5.fc14.i686.rpm
gambas3-gb-image-imlib-3.0.90-5.fc14.i686.rpm
gambas3-gb-image-io-3.0.90-5.fc14.i686.rpm
gambas3-gb-net-3.0.90-5.fc14.i686.rpm
gambas3-gb-net-curl-3.0.90-5.fc14.i686.rpm
gambas3-gb-net-smtp-3.0.90-5.fc14.i686.rpm
gambas3-gb-opengl-3.0.90-5.fc14.i686.rpm
gambas3-gb-opengl-glsl-3.0.90-5.fc14.i686.rpm
gambas3-gb-opengl-glu-3.0.90-5.fc14.i686.rpm
gambas3-gb-option-3.0.90-5.fc14.i686.rpm
gambas3-gb-pcre-3.0.90-5.fc14.i686.rpm
gambas3-gb-pdf-3.0.90-5.fc14.i686.rpm
gambas3-gb-qt4-3.0.90-5.fc14.i686.rpm
gambas3-gb-qt4-ext-3.0.90-5.fc14.i686.rpm
gambas3-gb-qt4-opengl-3.0.90-5.fc14.i686.rpm
gambas3-gb-qt4-webkit-3.0.90-5.fc14.i686.rpm
gambas3-gb-report-3.0.90-5.fc14.i686.rpm
gambas3-gb-sdl-3.0.90-5.fc14.i686.rpm
gambas3-gb-sdl-sound-3.0.90-5.fc14.i686.rpm
gambas3-gb-settings-3.0.90-5.fc14.i686.rpm
gambas3-gb-signal-3.0.90-5.fc14.i686.rpm
gambas3-gb-v4l-3.0.90-5.fc14.i686.rpm
gambas3-gb-vb-3.0.90-5.fc14.i686.rpm
gambas3-gb-web-3.0.90-5.fc14.i686.rpm
gambas3-gb-xml-3.0.90-5.fc14.i686.rpm
gambas3-gb-xml-rpc-3.0.90-5.fc14.i686.rpm
gambas3-gb-xml-xslt-3.0.90-5.fc14.i686.rpm
gambas3-ide-3.0.90-5.fc14.i686.rpm
gambas3-runtime-3.0.90-5.fc14.i686.rpm
gambas3-scripter-3.0.90-5.fc14.i686.rpm


4.2 - Installation des packages sur Fedora 14



Les commandes suivantes sont spécifiques aux distributions Fedora, Redhat, Centos, etc... basée sur RPM et YUM.

Taper:

cd /home/olivier/RPM/RPMS/i686

yum localinstall gambas3.*.rpm --nogpgcheck

Nota:
Ici les packages crées ne sont pas signés donc vous devez désactiver le controle de la signature des packages.Il est trés facile de créer des packages avec un signature comme cela se fait pour les packages Fedora ou autres mais je n'ai pas voulu trop charger la procédure. En effet le concept de création de RPMs me parrait facile à comprendre mais pas forcement pour tout le monde. Si toute fois quelqu'un est demandeur, je l'incorporerai dans la procedure.

Voila,

Olivier



Commentaires