gelegentlich spiele ich mit rakudo herum. Die Spielzeugprogramme werden
langsam grᅵᅵer, so dass ich nun langsam Werkzeuge benᅵtige und Dinge
installieren mᅵchte.
Daher nun eine hoffentlich einfach zu beantwortende Frage: Wie entwickle
ich derzeigt eine perl6-Anwendung mit rakudo parallel auf einem System,
auf dem auch perl5 lᅵuft? Perl6::Conf geht da ja einen sehr...
interessanten Weg, damit 'make test' lᅵuft. Gabor sagt aber selbst, dass
das nur eine Spielerei war und derzeit wohl proto angesagt ist.
Hat damit schon jemand Erfahrungen gemacht? Moritz, huhu? ;-)
--
Dipl.-Inform. Gregor Goldbach (PKI Team)
Phone: +49 40 808077-621 Fax: +49 40 808077-556 Mail:gold...@dfn-cert.de
DFN-CERT Services GmbH, https://www.dfn-cert.de, Phone +49 40 808077-555
Sitz / Register: Hamburg, AG Hamburg, HRB 88805, Ust-IdNr.: DE 232129737
Sachsenstraᅵe 5, 20097 Hamburg/Germany, CEO: Dr. Klaus-Peter Kossakowski
DFN-PKI
https://www.pki.dfn.de/
Gregor Goldbach wrote:
> gelegentlich spiele ich mit rakudo herum. Die Spielzeugprogramme werden
> langsam grᅵᅵer, so dass ich nun langsam Werkzeuge benᅵtige und Dinge
> installieren mᅵchte.
>
> Daher nun eine hoffentlich einfach zu beantwortende Frage: Wie entwickle
> ich derzeigt eine perl6-Anwendung mit rakudo parallel auf einem System,
> auf dem auch perl5 lᅵuft?
Also erst mal kommen sich Perl 5 und Perl 6 kaum bis gar nicht in die
Quere - zum Konfigurieren und Compilieren von Parrot und Rakudo braucht
man Perl 5, ansonsten lassen sich die beiden weitestgehend in Ruhe.
Ich habe Rakudo checkout in ~/rakudo/ liegen und mache da ab und zu ein
'git pull && perl Configure.pl && make -j 3 install'. In $PATH ist
~/rakudo/parrot_install/bin/ mit drin, sodass ich Rakudo einfach mit
'perl6 $file' aufrufen kann.
> Perl6::Conf geht da ja einen sehr...
> interessanten Weg, damit 'make test' lᅵuft. Gabor sagt aber selbst, dass
> das nur eine Spielerei war und derzeit wohl proto angesagt ist.
Perl6::Conf hab ich mir nicht angeschaut, proto benutze ich ab und zu -
allerdings installiert das ja noch nicht wirklich die Projekte die es
herunterlᅵdt und kompiliert, man muss PERL6LIB noch von Hand anpassen.
Manchmal nervt mich das, und ich setze in den Scripten mit
BEGIN { @*INC.push: 'lib', '../svg/lib' }
oder so die include-Pfade per Hand.
Allerdings arbeiten Martin Berends und Carl Mᅵsak zur Zeit daran, dass
proto die Module tatsᅵchlich installiert, wenn du dem RSS-Feed von
http://planetsix.perl.org/ folgst wirst du sicher in den nᅵchsten Wochen
ein paar Blog posts darᅵber sehen.
Da Rakudo leider noch ziemlich lahm ist, lohnt es sich IMHO die Module,
an denen man gerade nicht arbeitet nach PIR zu kompilieren. Wenn das
Projekt keine Makefile hat die das macht, kann man das entweder mit dem
Module in lib/Configure.pm im perl6-examples repo
(http://github.com/perl6/perl6-examples/) machen, oder von Hand mit
perl6 --target=PIR lib/Foo.pm > lib/Foo.pir
(Vorsicht, wenn eine .pir und eine .pm-Version eines Moduls vorhanden
ist, nimmt Rakudo zur Zeit immer die .pir-Variante, selbst wenn das .pm
neuer ist - kann zu Verwirrung fᅵhren)
> Hat damit schon jemand Erfahrungen gemacht?
Ja ;-)
> Moritz, huhu? ;-)
*wink*
Liebe Grᅵᅵe,
Moritz
--
Moritz Lenz
http://perl-6.de/ http://perlgeek.de/ http://perl-6.org/
Moritz Lenz schrieb:
>> Daher nun eine hoffentlich einfach zu beantwortende Frage: Wie entwickle
>> ich derzeigt eine perl6-Anwendung mit rakudo parallel auf einem System,
>> auf dem auch perl5 lᅵuft?
>
> Also erst mal kommen sich Perl 5 und Perl 6 kaum bis gar nicht in die
> Quere - zum Konfigurieren und Compilieren von Parrot und Rakudo braucht
> man Perl 5, ansonsten lassen sich die beiden weitestgehend in Ruhe.
Ich dachte da jetzt eher an Installationsorte von Modulen und ᅵhnliches,
s.u.
[...]
>> Perl6::Conf geht da ja einen sehr...
>> interessanten Weg, damit 'make test' lᅵuft. Gabor sagt aber selbst, dass
>> das nur eine Spielerei war und derzeit wohl proto angesagt ist.
>
> Perl6::Conf hab ich mir nicht angeschaut, proto benutze ich ab und zu -
> allerdings installiert das ja noch nicht wirklich die Projekte die es
> herunterlᅵdt und kompiliert, man muss PERL6LIB noch von Hand anpassen.
Perl6::Conf sieht aus wie ein auf ExtUtils::MakeMaker basierendes
Perl5-Projekt. In t/ liegen ausschlieᅵlich in Perl6 geschriebene Tests,
die durch ein bisschen Skriptmagie mit perl6 ausgefᅵhrt werden. Die
Module werden dann allerdings im System dahin installiert, wo die
Perl5-Module liegen. Das erschwert das sᅵubern ein bisschen, wenn man
nicht gerade selbst an 'make uninstall' gedacht hat.
Ich gehe mal nicht davon aus, dass es auᅵer proto auch nur etwas
ᅵhnliches wie EU::MM oder Module::Build fᅵr Perl6 gibt, oder irre ich
mich da? ;-)
Wohin kᅵnnte proto eigentlich installieren? /usr/lib/perl6 und
Konsorten? Ich werde dann wohl erstmal das nehmen...
[...]
> (Vorsicht, wenn eine .pir und eine .pm-Version eines Moduls vorhanden
> ist, nimmt Rakudo zur Zeit immer die .pir-Variante, selbst wenn das .pm
> neuer ist - kann zu Verwirrung fᅵhren)
Danke fᅵr diesen und die anderen Tipps!
Wie lᅵsst Du momentan Tests laufen? Ich fand in rakudo t/harness, dass
macht auf mich den Eindruck, als ob ich es fᅵr die Anwendungsentwicklung
nutzen kann. Ich weiᅵ zwar nicht, was 'fudge' soll, aber immerhin werden
die Tests mit perl6 ausgefᅵhrt. Ich wusst gar nicht, dass man
mittlerweile Test::Harness mitteilen kann, mit welchem Programm die
Tests ausgefᅵhrt haben mᅵchte ;-)
Kann man perl6 schon irgendwie sagen, dass lib mit in @*INC sein soll,
oder mᅵsste ich das in jeden Test reinkritzeln?
Nochmals danke, das sieht ja schon ganz gut aus.
Gregor Goldbach wrote:
> Moritz Lenz schrieb:
> [...]
>>> Perl6::Conf geht da ja einen sehr...
>>> interessanten Weg, damit 'make test' lᅵuft. Gabor sagt aber selbst, dass
>>> das nur eine Spielerei war und derzeit wohl proto angesagt ist.
>>
>> Perl6::Conf hab ich mir nicht angeschaut, proto benutze ich ab und zu -
>> allerdings installiert das ja noch nicht wirklich die Projekte die es
>> herunterlᅵdt und kompiliert, man muss PERL6LIB noch von Hand anpassen.
>
> Perl6::Conf sieht aus wie ein auf ExtUtils::MakeMaker basierendes
> Perl5-Projekt. In t/ liegen ausschlieᅵlich in Perl6 geschriebene Tests,
> die durch ein bisschen Skriptmagie mit perl6 ausgefᅵhrt werden. Die
> Module werden dann allerdings im System dahin installiert, wo die
> Perl5-Module liegen.
Autsch. Das hᅵrt sich ziemlich unschᅵn an.
> Das erschwert das sᅵubern ein bisschen, wenn man
> nicht gerade selbst an 'make uninstall' gedacht hat.
>
> Ich gehe mal nicht davon aus, dass es auᅵer proto auch nur etwas
> ᅵhnliches wie EU::MM oder Module::Build fᅵr Perl6 gibt, oder irre ich
> mich da? ;-)
Nein, sonst kenne ich nichts
> Wohin kᅵnnte proto eigentlich installieren? /usr/lib/perl6 und
> Konsorten? Ich werde dann wohl erstmal das nehmen...
Default soll im Homeverzeichnis werden, ~/.perl6/lib/ aber das wird
hoffentlich konfigurierbar.
> [...]
>> (Vorsicht, wenn eine .pir und eine .pm-Version eines Moduls vorhanden
>> ist, nimmt Rakudo zur Zeit immer die .pir-Variante, selbst wenn das .pm
>> neuer ist - kann zu Verwirrung fᅵhren)
>
> Danke fᅵr diesen und die anderen Tipps!
>
> Wie lᅵsst Du momentan Tests laufen?
Mit dem Perl 5 prove. Je nach Version hat das entweder eine Option -e
(executable) oder --perl, die man auf perl6 setzen kann. Die Ausgabe der
Tests ist im "Test Anything Protocol", also das gleiche wie bei Perl 5.
> Ich fand in rakudo t/harness, dass
> macht auf mich den Eindruck, als ob ich es fᅵr die Anwendungsentwicklung
> nutzen kann.
Da ist vieles Rakudo-spezifisches drin, ich glaube nicht, dass das so
eine tolle Idee wᅵre.
> Ich weiᅵ zwar nicht, was 'fudge' soll,
Das ist ein Tool, mit dem man automatisiert bestimmte Teile von tests
auskommentieren oder auf "todo" setzen kann.
Das benutzt die offizielle Testsuite, um es einzelnen Compilern zu
ermᅵglichen auch Dateien laufen zu lassen, von denen sie einzelne Tests
nicht bestehen.
> aber immerhin werden
> die Tests mit perl6 ausgefᅵhrt. Ich wusst gar nicht, dass man
> mittlerweile Test::Harness mitteilen kann, mit welchem Programm die
> Tests ausgefᅵhrt haben mᅵchte ;-)
>
> Kann man perl6 schon irgendwie sagen, dass lib mit in @*INC sein soll,
> oder mᅵsste ich das in jeden Test reinkritzeln?
export PERL6LIB=lib
> Nochmals danke, das sieht ja schon ganz gut aus.
Bitteschᅵn ;-)
Grᅵᅵe,
Moritz
--
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/
Moritz Lenz schrieb:
>> [...]
>>>> Perl6::Conf geht da ja einen sehr...
>>>> interessanten Weg, damit 'make test' lᅵuft. Gabor sagt aber selbst, dass
>>>> das nur eine Spielerei war und derzeit wohl proto angesagt ist.
>>> Perl6::Conf hab ich mir nicht angeschaut, proto benutze ich ab und zu -
>>> allerdings installiert das ja noch nicht wirklich die Projekte die es
>>> herunterlᅵdt und kompiliert, man muss PERL6LIB noch von Hand anpassen.
>> Perl6::Conf sieht aus wie ein auf ExtUtils::MakeMaker basierendes
>> Perl5-Projekt. In t/ liegen ausschlieᅵlich in Perl6 geschriebene Tests,
>> die durch ein bisschen Skriptmagie mit perl6 ausgefᅵhrt werden. Die
>> Module werden dann allerdings im System dahin installiert, wo die
>> Perl5-Module liegen.
>
> Autsch. Das hᅵrt sich ziemlich unschᅵn an.
Ist es. Das Makefile erwartet alle Tests als t/*.t6 und kopiert ein
Perl-Programm namens shim.pl auf die entsprechende Datei, die nur auf .t
endet. shim.pl fᅵhrt dann mit rakudo den t6-Test aus.
http://cpansearch.perl.org/src/SZABGAB/Perl6-Conf-0.04/shim.pl
Von hinten durch die Brust ins Auge ;-)
Da finde ich den harness-Weg, exec bzw. HARNESS_PERL zu setzen, schon
besser...
>> Wohin kᅵnnte proto eigentlich installieren? /usr/lib/perl6 und
>> Konsorten? Ich werde dann wohl erstmal das nehmen...
>
> Default soll im Homeverzeichnis werden, ~/.perl6/lib/ aber das wird
> hoffentlich konfigurierbar.
Nichts Analoges zu PERLPREFIX, SITEPREFIX und VENDORPREFIX?
>> Wie lᅵsst Du momentan Tests laufen?
>
> Mit dem Perl 5 prove. Je nach Version hat das entweder eine Option -e
> (executable) oder --perl, die man auf perl6 setzen kann. Die Ausgabe der
> Tests ist im "Test Anything Protocol", also das gleiche wie bei Perl 5.
Oh, die Option kannte ich noch nicht. Vielleicht sollte ich das alles
mal zusammenfassen. perlbuzz.com hat diesen Diskussionsstrang zwar auch
schon, aber zusammengefasst liest sich das vermutlich besser ;)
>> Ich fand in rakudo t/harness, dass
>> macht auf mich den Eindruck, als ob ich es fᅵr die Anwendungsentwicklung
>> nutzen kann.
>
> Da ist vieles Rakudo-spezifisches drin, ich glaube nicht, dass das so
> eine tolle Idee wᅵre.
Ich meinte eigentlich nur den Teil, der Test::Harness sagt, dass zur
Ausfᅵhrung der Tests perl6 genommen werden soll. Flugs noch PERL6LIB um
lib erweitert, und dann sollte das auch schon praktisch nutzbar sein.
>> aber immerhin werden
>> die Tests mit perl6 ausgefᅵhrt. Ich wusst gar nicht, dass man
>> mittlerweile Test::Harness mitteilen kann, mit welchem Programm die
>> Tests ausgefᅵhrt haben mᅵchte ;-)
>>
>> Kann man perl6 schon irgendwie sagen, dass lib mit in @*INC sein soll,
>> oder mᅵsste ich das in jeden Test reinkritzeln?
>
> export PERL6LIB=lib
Sah ich jetzt in shim.pl auch ;)