Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/04/2011, à 19:20

alci

Packager une bibliothèque java simple

Bonjour,

je souhaite réaliser le package (deb) d'une bibliothèque java simplissime. Simplissime au sens où elle n'a aucune dépendance, et se construit par un script ant.

J'ai lu https://wiki.ubuntu.com/Packaging/Train … 2009-06-11 , mais j'aurais besoin d'un petit coup de pouce supplémentaire... y aurait-il un guide pas à pas de la façon de procéder ? Dois-je créer des répertoires, des sous-répertoires ? Comment créer les fichiers initiaux ?
J'ai installé javahelper, mais je ne comprends pas bien comment cela s'articule avec CDBS, cité dans Packaging/Training/Logs/2009-06-11...

Merci d'avance pour tout conseil.

Hors ligne

#2 Le 15/04/2011, à 07:17

VinsS

Re : Packager une bibliothèque java simple

Salut,

Je travaille là-dessus en ce moment:

    https://launchpad.net/paqager

, donc ta question m'intéresse.

Cette "bibliothèque java simplissime" est de toi ? Les sources sont visibles, downloadables quelque part ?

Si ce n'est pas de toi cela ne change rien bien sur, il faut juste que ce soit open source.


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#3 Le 15/04/2011, à 09:52

alci

Re : Packager une bibliothèque java simple

Bonjour,

non, la bibliothèque n'est pas de moi, il s'agit de "eclipsito", dont l'intérêt essentiel est qu'elle est une dépendance de GanntProject.
Les tentatives précédentes de packaging de GanttProject s'étaient heurtées aux problèmes des dépendances, et en particulier à l'impossibilité de mettre la main sur les sources d'eclipsito...
Une récente recherche m'a permis de les découvrir sur Google code, où elles viennent d'être posées, sous licence EPL.

J'envisageais donc d'essayer de packager GanttProject, en commençant par sa bibliothèque de base. Mais si je pratique java au quotidien, ne n'ai jamais réalisé de package, et le démarrage est un peu rude !

Tout conseil est le bienvenu smile

Hors ligne

#4 Le 16/04/2011, à 08:35

VinsS

Re : Packager une bibliothèque java simple

J' ai commencé à regarder ce qu'il en est.

OK pour les sources, la présence du fichier build.xml semble une bonne chose.

Je suppose que tu utilises openjdk-6-jre.

A première vue, eclipsito ne nécessite pas de dépendances particulières.

Mon projet PaQager nutilise pas CDBS mais dpkg, je vais donc rajouter CDBS dans ses outils. Ce sera fait ce matin.

Il faudra sûrement faire quelques essais pour packager eclipsito, mais ça ne me semble pas trop complexe.


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#5 Le 17/04/2011, à 14:02

VinsS

Re : Packager une bibliothèque java simple

Voilà, j'ai testé ceci avec Paqager:

Dans un dossier "eclipsito" j'ai téléchargé les sources que j'ai renomé "eclipsito-1.5" pour satisfaire dpkg
et j'ai créé une archive tar.gz

Paqager a créé "eclipsito_1.5.orig.tar.gz",  le sous dossier "debian" et ses fichiers.

Ce qui nous donne ceci:

eclipsito  >  eclipsito-1.5  >  debian  >  changelog
                                                                     compat
                                                                     control
                                                                     copyright
                                                                     rules
                                                   org.bardsoftware.eclipsito  >  modules
                                                                                                        src
                                                                                                        build.xml
                      eclipsito_1.5.orig.tar.gz
                      eclipsito-1.5.tar.gz

Le fichier control:

Source: eclipsito
Section: admin
Priority: required
Maintainer: Vincent Vande Vyvre <vincent.vandevyvre@swing.be>
Build-Depends: cdbs, openjdk-6-jdk
Standards-Version: 3.8.4
Homepage: http://code.google.com/p/eclipsito/

Package: eclipsito
Version: 1.5
Architecture: all
Section: admin
Priority: required
Installed-Size: 0
Depends: ${misc:Depends}, default-jre-headless | java6-runtime-headless
Description: A small subset of Eclipse core libraries for modular applications.
 Eclipsito is a small subset of the core Eclipse libraries which allows to 
 write modular applications which can run both standalone and inside Eclipse 
 RCP framework.

le fichier rules:

#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/ant.mk

JAVA_HOME               := /usr/lib/jvm/java-6-openjdk
DEB_ANT_BUILDFILE       := build.xml
DEB_ANT_BUILD_TARGET    := dist

install/libeclipsito-java::
    install -m 644 -D dist/eclipsito.jar $(DEB_DESTDIR)/usr/share/java/eclipsito-$(DEB_UPSTREAM_VERSION).jar
    dh_link /usr/share/java/eclipsito-$(DEB_UPSTREAM_VERSION).jar /usr/share/java/eclipsito.jar

A la construction avec debuild j'obtiens ceci:

No signature
Debianizing eclipsito-1.5  Sun, 17 Apr 2011 13:55:16 +0200
Check list
File control    found
File rules    found
File changelog    found
File copyright    found
File compat    found
debuild -i -us -uc
dpkg-buildpackage -rfakeroot -D -us -uc -i
dpkg-buildpackage : définir CFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage : définir CPPFLAGS à la valeur par défaut :
dpkg-buildpackage : définir LDFLAGS à la valeur par défaut : -Wl,-Bsymbolic-functions
dpkg-buildpackage : définir FFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage : définir CXXFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage: paquet source src
dpkg-buildpackage: version source 1.5
dpkg-buildpackage: source changé par Vincent Vande Vyvre <vincent.vandevyvre@swing.be>
dpkg-buildpackage: architecture hôte i386
fakeroot debian/rules clean
test -x debian/rules
dh_testroot
dh_clean
You must specify a valid ANT_HOME directory!
make: *** [ant-sanity-check] Erreur 1
dpkg-buildpackage: erreur: fakeroot debian/rules clean a produit une erreur de sortie de type 2

Le problème ici vient de ant qui est un outil spécifique à Java et que je ne connais pas du tout.
Je suppose qu'il s'agit d'une ligne à ajouter au fichier rules, peut-être en sais-tu plus là dessus.

Remarque que dans les dépendance j'ai mis "java6-runtime-headless" parce que c'est la version que j'ai chez moi.

Dernière modification par VinsS (Le 17/04/2011, à 14:04)


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#6 Le 18/04/2011, à 16:46

alci

Re : Packager une bibliothèque java simple

Merci !

Ant est un équivalent de make pour java.

J'ai aussi lu http://wiki.debian.org/Java/Packaging , http://pkg-java.alioth.debian.org/docs/tutorial.html et http://taksmind.org/?p=20 , ce qui m'a rendu les choses un peu plus claires...

Au final, si j'ai bien compris :

jh_makepkg (du paquet javahelper) et ton outil Paqager font la même chose, à savoir créer le répertoire debian et y mettre les fichiers nécessaires (à modifier).

Tout le jeu est ensuite de trouver une façon de faire fonctionner le build...

Là plusieurs alternatives s'offrent :
- dh7
- cdbs
- à la main ...

Je veux juste utiliser le script ant (build.xml) fournit avec eclipsito. J'ai essayé avec dh7, qui est censé découvrir tout seul le build.xml et l'utiliser, mais ça ne marche pas. J'ai essayé jh_build (de javahelper), mais il essaie de construire les tests et introduit une dépendance à junit, ce qi n'est pas souhaitable. Je vais donc essayer de relire la doc de cdbs.

Je reviens ici ensuite pour te tenir au courant  et voir comment paqager pourrait tout créer auto-magiquement.

Hors ligne

#7 Le 19/04/2011, à 09:18

VinsS

Re : Packager une bibliothèque java simple

J'ai aussi un peu cherché de mon coté.

Pour l'erreur ANT_HOME, c'est stupide, je n'avais pas installé ant ...

Ensuite le dossier de construction n'est pas le bon, j'ai renommé le dossier org.bardsoftware.eclipsito en eclipsito-1.5 et j'ai recommencé en me plaçant dans ce dossier.

Voila ce que j'obtiens:

dpkg-buildpackage -rfakeroot -D -us -uc -i
dpkg-buildpackage : définir CFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage : définir CPPFLAGS à la valeur par défaut :
dpkg-buildpackage : définir LDFLAGS à la valeur par défaut : -Wl,-Bsymbolic-functions
dpkg-buildpackage : définir FFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage : définir CXXFLAGS à la valeur par défaut : -g -O2
dpkg-buildpackage: paquet source src
dpkg-buildpackage: version source 1.5
dpkg-buildpackage: source changé par Vincent Vande Vyvre <vincent.vandevyvre@swing.be>
dpkg-buildpackage: architecture hôte i386
fakeroot debian/rules clean
test -x debian/rules
dh_testroot
dh_clean
cd . && /usr/lib/jvm/java-6-openjdk/bin/java -classpath /usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-launcher.jar:/usr/lib/jvm/java-6-openjdk/lib/tools.jar  -Dant.home=/usr/share/ant org.apache.tools.ant.Main -Dcompile.debug=true -Dcompile.optimize=true   -buildfile build.xml  clean
Buildfile: build.xml

clean:

BUILD SUCCESSFUL
Total time: 0 seconds
rm -f debian/stamp-ant-build
dpkg-source -i -b eclipsito-1.5
dpkg-source: avertissement: champ d'information inconnu « Version » dans les données d'entrée de section du paquet dans le fichier info
dpkg-source: avertissement: champ d'information inconnu « Installed-Size » dans les données d'entrée de section du paquet dans le fichier info
dpkg-source: erreur: le paquet source a deux valeurs en conflit : eclipsito et src
dpkg-buildpackage: erreur: dpkg-source -i -b eclipsito-1.5 a produit une erreur de sortie de type 255

C'est déjà mieux, le fichier build.xml est prit en compte mais on est confronté au problème que les sources se trouvent dans un dossier nommé src et dpkg n'aime pas ça.

Peut-être que en le renommant lui aussi ...


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#8 Le 19/04/2011, à 10:18

alci

Re : Packager une bibliothèque java simple

Bonjour,

j'ai réussi à obtenir un paquet qui compile et s'installe.
Pour cela j'ai fait deux choses :

- mon fichier rules est le suivant :

#!/usr/bin/make -f

export JAVA_HOME=/usr/lib/jvm/default-java

# Put depended upon jars in here
# export CLASSPATH=

%:
    dh --with javahelper $@

- par ailleurs j'ai ajouté recopié le build.xml a la racine du répertoire des sources (en modifiant les chemins d'accès dans le build.xml).
De cette façon, dh7 détecte tout seul le build.xml, lance ant et tout fonctionne...

Il y a probablement une façon plus élégante de dire à debhelper : "il y a un sous répertoire dans les sources, dans le quel tu dois entrer pour trouver le build.xml".

D'autant que le plupart des projets ont cette structure dans le tarball du code (les bibliothèques commons par exemple). Je vais aller regarder comment font les packages des libcommons...-java... et je reviens :-)

Hors ligne

#9 Le 19/04/2011, à 11:51

VinsS

Re : Packager une bibliothèque java simple

J'ai aussi réussi à créer un .deb avec cdbs mais vide !

En faisant d'autres essais, il semble que le nom "src" pour le dossier source soit un problème pour dpkg qui attend plutôt
<UPLOAD-NAME>-<VERSION>

J'obtiens immanquablement cette ligne:

dpkg-source: erreur: le paquet source a deux valeurs en conflit : eclipsito et src


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#10 Le 20/04/2011, à 18:32

alci

Re : Packager une bibliothèque java simple

Bonjour,

j'ai un package qui fonctionne, et j'aurais voulu le mettre à disposition (de toi en particulier) via un ppa.

Mais quand je fais

dput ppa:alci/ganttproject libeclipsito_20110408-1_source.changes

j'obtiens l'erreur suivante :

gpg: Signature faite le lun. 18 avril 2011 18:19:52 CEST avec la clé RSA ID 48445DF9
gpg: Bonne signature de « Franck Routier (aka alci) <alci@mecadu.org> »
Good signature on /home/franck/devel/packaging/eclipsito/libeclipsito_20110408-1_source.changes.
Checking signature on .dsc
gpg: aucune donnée OpenPGP valide n'a été trouvée.
gpg: impossible de vérifier la signature.
Rappelez-vous bien que le fichier de signature (.sig ou .asc)
doit être le premier fichier indiqué sur la ligne de commande.
No signature on /home/franck/devel/packaging/eclipsito/libeclipsito_20110408-1.dsc.

Visiblement, il ne trouve pas ma clé... mais je ne comprends pas pourquoi.

Hors ligne

#11 Le 24/04/2011, à 12:48

VinsS

Re : Packager une bibliothèque java simple

Salut,

Pour ta signature, le message semble dire que le fichier .dsc n'a pas été signé.
Ce qui est étrange, si tu utilises une commande comme celle-ci:

debuild -S -sa -k123ABC

le sources.changes ET le .dsc seront signés.

Dans le pire des cas fais un copié-collé entre les deux, je sais, c'est mieux de comprendre, mais bon.

De mon coté, j'ai poursuivis divers tests, je me suis rendu compte que seule la création du .deb échoue
c-à-d qu'il est bien créé mais ne contient pas les codes et un dossier bin se retrouve à coté du dossier debian.

Par contre si je fais un paquet signé pour ppa, tout fonctionne sans erreur.

Par acquis de conscience je l'ai uploadé sur mon ppa

deb http://ppa.launchpad.net/vincent-vandevyvre/vvv/ubuntu maverick main

Le paquet a été accepté et a été construit. Je l'ai nommé libeclipsito.

Je n'utilise pas eclipse et comme j'ai regardé pour l'installer j'ai vu qu'il m'installerait d'autres versions de java.
Je n'ai pas été plus loin, donc si tu veux vérifier le paquet et surtout ses dépendances, puisque j'ai mis la version de java que j'ai
soit openjdk-6

De toutes manières ce paquet a des lacunes, je n'ai pas trouvé le nom de l'auteur et son adresse mail est tronquée (comme toujours) sur googlecode.

Faut avouer que ce n'est pas évident du tout pour s'y retrouver dans ces versions de Java.
Python c'est simple : 2 et/ou 3


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#12 Le 25/05/2011, à 04:28

funkalee

Re : Packager une bibliothèque java simple

Maven tu connais ?
http://mojo.codehaus.org/deb-maven-plugin/

Dernière modification par funkalee (Le 25/05/2011, à 04:35)

Hors ligne