[Dresden-pm] Perl-Projekt veröffentlichen

Steffen Schwigon schwigon at webit.de
Mon Jul 18 03:06:38 PDT 2005


Hi!

Torsten Werner <email at twerner42.de> writes:
> ich habe mal ein Perl-Modul für den neuen inotify-Mechanismus des
> Linux-Kernel 2.6.13rc3 geschrieben. Die Sachen liegen unter
> http://www.twerner42.de/inotify/inotify.tar.gz bereit. Alles schön
> objektorientiert, inklusive Doku und ein Beispielprogramm (inotify.pl).
> Was muss ich jetzt machen, um das richtig rund zu bekommen? Über Tipps
> würde ich mich freuen.

Sehr schön. Ich hab' mal bissel was aufgeschrieben, aber nicht 100%
durchprobiert. Wenn Du magst, kannst Du mir das Resultat vorher noch
zeigen, bevor Du es veröffentlichst, da guck ich nochmal drüber. Ich
finde mit Sicherheit noch was. :-)


Ich empfehle folgendes Vorgehen:

- Du solltest möglichst noch ein Stück Namespace einschieben, es gibt
  z.B. schon Linux:: im CPAN, das würde ich empfehlen.

  Wenn Dir das nicht reicht, Du unischer bist oder keinen weiteren
  Namespace möchtest, fragst Du am besten in der Perl-Mailingliste
  comp.lang.perl.modules nach. Auf CPAN herrscht Anarchie, Du kannst
  es auch ohne weiteren Namespace hochladen, ohne daß Dich einer
  verhaftet, aber nützlicher wär's mit.


- Nimm Dir ein Vorbild-Modul her, z.B. Acme::PM::Dresden auf CPAN, das
  hat extra eine saubere Struktur zu Anschauungszwecken.


- In Inotify.pm nimmst Du eine Versionsnummer auf, mit folgenden
  Zeilen ziemlich am Anfang bei den "use"-Zeilen:

    use vars qw($VERSION);
    $VERSION = '0.01';


- Du erzeugst eine Datei-/Verzeichnisstruktur wie folgt:

    ./trunk/Linux/Inotify/Event.pm
    ./trunk/Linux/Inotify/Watch.pm
    ./trunk/Linux/Inotify.pm
    ./trunk/eg/inotify.pl
    ./trunk/README
    ./trunk/MANIFEST.SKIP
    ./trunk/Makefile.PL
    ./trunk/LICENSE
    ./trunk/INSTALL
    ./trunk/ChangeLog
    ./trunk/Build.PL


- In Build.PL schreibst Du etwa sowas rein:

---- schnipp -------------------------------------------------------
use Module::Build;

my $build = new Module::Build
 (
  module_name        => 'Linux::Inotify',
  license            => 'gpl',
  requires           => {
                         perl  => '5.6.1',
                         POSIX => 0,
                        },
  create_makefile_pl => 'passthrough',
 );
$build->create_build_script;
$build->create_makefile_pl;
---- schnapp -------------------------------------------------------


- Fülle die Dateien README, INSTALL, LICENSE, ChangeLog nach Vorbild
  von Acme::PM::Dresden.


- Wenn Du ein Perl-Superheld werden möchtest, schreibst Du in einem
  Unterverzeichnis
    ./trunk/t/
  auch noch ein paar Testskripte, z.B. nach Vorbild
  Acme::PM::Dresden. Kannst Du Die aber auch für spätere Versionen
  aufheben.


- Erzeuge eine Datei MANIFEST.SKIP wie diese hier:

---- schnipp -------------------------------------------------------
^_build
^Build$
^blib
~$
\.bak$
cover_db
TODO
.*\/?CVS\/.+$
.*\/?\.svn\/.+$
.cvsignore
.svnignore
^Makefile$
^Linux-Inotify-[0-9]+\.[0-9]+$
^Linux-Inotify-[0-9]+\.[0-9]+\.tar\.gz$
---- schnapp -------------------------------------------------------


- Mache einmal im trunk/-Verzeichnis folgende Kommandos:

  perl Build.PL
  ./Build
  ./Build manifest
  ./Build dist
  ./Build distclean


- "Linux-Inotify-0.01.tar.gz" testen; z.B. in /tmp/ auspacken und im
  entstandenen Verzeichnis /tmp/Linux/Inotify-0.01/ das probieren:

     perl Build.PL
     ./Build
     ./Build install           (ggf. als root)


- Wenn Du das auf CPAN hochladen möchtest, gehe zu

    http://pause.cpan.org

  und drücke links "Request PAUSE account". Mit dem Account den Du
  paar Stunden/Minuten später hast, loggst Du Dich auf pause.cpan.org
  ein.


- Uploade Deine Datei "Linux-Inotify-0.01.tar.gz" über den Punkt
  "upload a file to CPAN". Gib am besten ein Target directory
  "inotify" an und nutze gleich den ersten Abschnitt für
  Browser-Upload.

  Achtung. Die tar.gz-Datei muss unbedingt eine Versionsnummer
  enthalten, da Du nie mehrmals den gleichen Dateinamen uploaden
  kannst.


- Paar Minuten/Stunden später isses online.


GreetinX
Steffen 
-- 
Steffen Schwigon <schwigon at webit.de>
Dresden Perl Mongers <http://dresden-pm.org/>