[Cologne-pm] h2xs Fragen...

Michael Lamertz mike at lamertz.net
Mon May 19 04:39:48 CDT 2003


On Sat, May 17, 2003 at 12:34:02PM +0200, Christian Schneider wrote:
> Hi zusammen,
> 
> On Freitag, Mai 16, 2003, at 09:08  Uhr, Michael Lamertz wrote:
> 
> >
> >Hast Du Dir die Slides angesehen?
> >
> 
> ja habe ich, dankeschön dafür.
> 
> Für Dein Beispiel benutzt Du h2xs, um ein Modul-/Objektgerippe zu 
> erstellen. Was ich zu dem Thema schon immer mal wissen wollte: Ich will 
> unter einem Namensraum mehrere Klassendefinitionen vereinen, also 
> meinswegen Bla/Bla.pm Bla/Blupp.pm und Bla/Yadda.pm. Kann ich dafür 
> h2xs so verwenden, daß ich die Klassen auch so ansprechen kann, wie ich 
> das später will und daß ein Makefile.PL erzeugt wird, daß alle Klassen 
> beinhaltet? Wenn ich h2xs Bla::Bla (...) mache erhalte ich ein 
> Verzeichnis Bla mit den Unterverzeichnissen Bla, Blupp und Yadda, in 
> denen jeweils eine pm-Datei liegt. Ansprechen muß ich diese dann aber 
> über "use Bla::Blupp::Blupp" anstatt wie gewünscht "Bla::Blupp".

Da Du hier anscheinend mit Bla und Blupp ein Wenig in's Durcheinander
gekommen bist, versuche ich das Problem - welches ich auch habe - hier
nochmal mit Kommandos und Output zu verdeutlichen:

    nijushiho:/tmp$ h2xs -XA Bla::Blupp         # <- Du: "Bla::Bla" :)
    ...
    Writing Bla/Blupp/Blupp.pm
    Writing Bla/Blupp/Makefile.PL
    Writing Bla/Blupp/README
    Writing Bla/Blupp/t/1.t
    Writing Bla/Blupp/Changes
    Writing Bla/Blupp/MANIFEST
    nijushiho:/tmp$ 
    nijushiho:/tmp$ h2xs -XA Bla::Yadda
    ...
    Writing Bla/Yadda/Yadda.pm
    Writing Bla/Yadda/Makefile.PL
    Writing Bla/Yadda/README
    Writing Bla/Yadda/t/1.t
    Writing Bla/Yadda/Changes
    Writing Bla/Yadda/MANIFEST
    nijushiho:/tmp$ 

Wie man hier ganz leicht sehen kann, ist Yadda.pm laut Pfad nur als
Bla::Yadda::Yadda zu finden.  Blupp ebenfalls in seinem eigenen Baum.

Man wuerde ja eigentlich erwarten, dass die benamten .pm Files eine
Ebene Hoeher als ihr aufgespannter Namensraum liegen.

So wie ich h2xs verstehe legt er immer ein eigenes Projektverzeichnis
fuer das Ding das Du ihm angibst an, und kuemmert sich nicht um den Raum
der tatsaechlich darueber liegt.  Tatsaechlich hat es mich sogar
gewundert, dass er das Bla-Verzeichnis ueberhaupt angelegt hat.
Immerhin liegt MANIFEST - welches in den Archiven di man installiert ja
immer im obersten Verzeichnis liegt - ja auch ganz unten im Baum.

Ein 'make dist' innerhalb eines Verzeichnisses zeigt dann auch ganz gut,
*was* eingepackt wird, und unter welchem Namen:

    nijushiho:/tmp$ cd Bla/Yadda/
    /tmp/Bla/Yadda
    nijushiho:/tmp/Bla/Yadda$ perl Makefile.PL 
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Bla::Yadda
    nijushiho:/tmp/Bla/Yadda$ make dist
    rm -rf Bla-Yadda-0.01
    /usr/bin/perl "-MExtUtils::Manifest=manicopy,maniread" \
            -e "manicopy(maniread(),'Bla-Yadda-0.01', 'best');"
    mkdir Bla-Yadda-0.01
    mkdir Bla-Yadda-0.01/t
    tar cvf Bla-Yadda-0.01.tar Bla-Yadda-0.01
    Bla-Yadda-0.01/
    Bla-Yadda-0.01/Makefile.PL
    Bla-Yadda-0.01/README
    Bla-Yadda-0.01/Changes
    Bla-Yadda-0.01/Yadda.pm
    Bla-Yadda-0.01/t/
    Bla-Yadda-0.01/t/1.t
    Bla-Yadda-0.01/MANIFEST
    rm -rf Bla-Yadda-0.01
    gzip --best Bla-Yadda-0.01.tar
    nijushiho:/tmp/Bla/Yadda$

D.h., er legt ein temporaeres Unterverzeichnis an, in das er nur *dieses* Eine
Modul einpackt.

Das ist fuer 3rd-Party Modulentwickler natuerlich extrem praktisch,
unterstuetzt aber einen Programmierer der auf einer ganzen Hierarchie arbeitet
ueberhaupt nicht.

Falls hier also jemand Abhilfe weiss, oder vorschlaege hat, wie man
sowas unter Kontrolle bekommt sind wohl Christian und ich dankbar.

PS:  Die Frage die beim Treffen aufkam moechte ich hier in dem
Zusammenhang auch nochmal unterbringen:

Nachdem ich ein Programm fertig habe, moechte ich natuerlich, dass das
Binary in den Pfad installiert wird, waehrend die Module in den
lib/perl-Tree wandern sollen.  Weiss jemand, wie man MakeMaker dazu
bringt?  Oder hat da evtl. bereits jmd. Erfahrung mit den neuen
ModUtils?

Mike

-- 
	    Well, then let's give that Java-Wussie a beating... (me)

Michael Lamertz                        |     +49 2234 204947 / +49 171 6900 310
Sandstr. 122                           |                       mike at lamertz.net
50226 Frechen                          |                 http://www.lamertz.net
Germany                                |               http://www.perl-ronin.de 



More information about the Cologne-pm mailing list