makefileを作る。
$ perl Makefile.PL Cannot determine perl version info from lib/******************************.pm Writing Makefile for ********************************** Writing MYMETA.yml and MYMETA.json
makeする。
$ make Skip blib/lib/**********************************.pm (unchanged) Skip blib/lib/**********************************.pm (unchanged) Skip blib/lib/***********************************.pm (unchanged) Skip blib/lib/***********************************.pm (unchanged) Skip blib/lib/***************************************.pm (unchanged) Skip blib/lib/******************************.pm (unchanged) Skip blib/lib/**********************************.pm (unchanged) Skip blib/lib/*************************************.pm (unchanged) Skip blib/lib/***************************************.pm (unchanged) Skip blib/lib/*****************************************.pm (unchanged) Manifying blib/man3/**********************************.3pm Manifying blib/man3/******************************************.3pm
testする。
$ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/00_compile.t .. ok All tests successful. Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.07 cusr 0.00 csys = 0.10 CPU) Result: PASS
配布用ディレクトリを作りその中でmake testする。
$ make disttest rm -rf ******************************-0.07 /usr/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \ -e "manicopy(maniread(),'******************************-0.07', 'best');" mkdir ******************************-0.07 mkdir ******************************-0.07/inc mkdir ******************************-0.07/inc/Test mkdir ******************************-0.07/lib mkdir ******************************-0.07/lib/********** mkdir ******************************-0.07/lib/***************** mkdir ******************************-0.07/lib/*********************** mkdir ******************************-0.07/lib/************************** mkdir ******************************-0.07/lib/****************************** mkdir ******************************-0.07/inc/Module mkdir ******************************-0.07/inc/Module/Install mkdir ******************************-0.07/inc/Test/Builder mkdir ******************************-0.07/xt mkdir ******************************-0.07/inc/Test/Base mkdir ******************************-0.07/t cd ******************************-0.07 && /usr/bin/perl "-Iinc" Makefile.PL Cannot determine perl version info from lib/******************************.pm Checking if your kit is complete... Looks good Writing Makefile for ********************************** Writing MYMETA.yml and MYMETA.json cd ******************************-0.07 && make LIBPERL_A="libperl.a" LINKTYPE="dynamic" PREFIX="/usr/local" make[1]: Entering directory `/home/****************************************************************************-0.07' cp lib/**********************************.pm blib/lib/**********************************.pm cp lib/**********************************.pm blib/lib/**********************************.pm cp lib/***********************************.pm blib/lib/***********************************.pm cp lib/***********************************.pm blib/lib/***********************************.pm cp lib/***************************************.pm blib/lib/***************************************.pm cp lib/******************************.pm blib/lib/******************************.pm cp lib/**********************************.pm blib/lib/**********************************.pm cp lib/*************************************.pm blib/lib/*************************************.pm cp lib/***************************************.pm blib/lib/***************************************.pm cp lib/*****************************************.pm blib/lib/*****************************************.pm Manifying blib/man3/**********************************.3pm Manifying blib/man3/******************************************.3pm make[1]: Leaving directory `/home/**************/******************************/******************************-0.07' cd ******************************-0.07 && make test LIBPERL_A="libperl.a" LINKTYPE="dynamic" PREFIX="/usr/local" make[1]: Entering directory `/home/**************/******************************/******************************-0.07' PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/00_compile.t .. ok All tests successful. Files=1, Tests=1, 0 wallclock secs ( 0.04 usr 0.00 sys + 0.06 cusr 0.00 csys = 0.10 CPU) Result: PASS make[1]: Leaving directory `/home/**************/******************************/******************************-0.07'
配布アーカイブを作成する。
$ make dist rm -rf ******************************-0.07 /usr/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \ -e "manicopy(maniread(),'******************************-0.07', 'best');" mkdir ******************************-0.07 mkdir ******************************-0.07/inc mkdir ******************************-0.07/inc/Test mkdir ******************************-0.07/lib mkdir ******************************-0.07/lib/WebService mkdir ******************************-0.07/lib/WebService/Simple mkdir ******************************-0.07/lib/WebService/Simple/Yahoo mkdir ******************************-0.07/lib/WebService/Simple/Yahoo/JP mkdir ******************************-0.07/lib/WebService/Simple/Yahoo/JP/API mkdir ******************************-0.07/inc/Module mkdir ******************************-0.07/inc/Module/Install mkdir ******************************-0.07/inc/Test/Builder mkdir ******************************-0.07/xt mkdir ******************************-0.07/inc/Test/Base mkdir ******************************-0.07/t tar cvf ******************************-0.07.tar ******************************-0.07 ******************************-0.07/ ******************************-0.07/MYMETA.yml ******************************-0.07/README ******************************-0.07/MANIFEST ******************************-0.07/META.yml ******************************-0.07/xt/ ******************************-0.07/xt/01_podspell.t ******************************-0.07/xt/03_pod.t ******************************-0.07/xt/02_perlcritic.t ******************************-0.07/xt/perlcriticrc ******************************-0.07/Changes ******************************-0.07/MYMETA.json ******************************-0.07/t/ ******************************-0.07/t/00_compile.t ******************************-0.07/lib/ ******************************-0.07/lib/*********** ******************************-0.07/lib/****************** ******************************-0.07/lib/************************ ******************************-0.07/lib/*************************** ******************************-0.07/lib/******************************.pm ******************************-0.07/lib/******************************* ******************************-0.07/lib/***********************************.pm ******************************-0.07/lib/***********************************.pm ******************************-0.07/lib/***************************************.pm ******************************-0.07/lib/**********************************.pm ******************************-0.07/lib/*************************************.pm ******************************-0.07/lib/*****************************************.pm ******************************-0.07/lib/**********************************.pm ******************************-0.07/lib/***************************************.pm ******************************-0.07/lib/**********************************.pm ******************************-0.07/Makefile.PL ******************************-0.07/inc/ ******************************-0.07/inc/Spiffy.pm ******************************-0.07/inc/Module/ ******************************-0.07/inc/Module/Install/ ******************************-0.07/inc/Module/Install/TestBase.pm ******************************-0.07/inc/Module/Install/Can.pm ******************************-0.07/inc/Module/Install/Include.pm ******************************-0.07/inc/Module/Install/WriteAll.pm ******************************-0.07/inc/Module/Install/AuthorTests.pm ******************************-0.07/inc/Module/Install/Base.pm ******************************-0.07/inc/Module/Install/Metadata.pm ******************************-0.07/inc/Module/Install/Fetch.pm ******************************-0.07/inc/Module/Install/Win32.pm ******************************-0.07/inc/Module/Install/Makefile.pm ******************************-0.07/inc/Module/Install.pm ******************************-0.07/inc/Test/ ******************************-0.07/inc/Test/More.pm ******************************-0.07/inc/Test/Builder.pm ******************************-0.07/inc/Test/Base.pm ******************************-0.07/inc/Test/Builder/ ******************************-0.07/inc/Test/Builder/Module.pm ******************************-0.07/inc/Test/Base/ ******************************-0.07/inc/Test/Base/Filter.pm rm -rf ******************************-0.07 gzip --best ******************************-0.07.tar gzip: ******************************-0.07.tar.gz already exists; do you wish to overwrite (y or n)? y
cpan-uploadコマンドを使うにはホームディレクトリに.pauseファイルが必要。このフォーマットは以下。
$ cat ~/.pause user ********* password ***************** mailto = *******@***********
配布用アーカイブをアップロードする。
$ cpan-upload -v ******************************-0.07.tar.gz registering upload with PAUSE web server ----- REQUEST BEGIN ----- Authorization: Basic ************************************ Content-Length: 47196 Content-Type: multipart/form-data; boundary=xYzZY ----- REQUEST END ------- POSTing upload for ******************************-0.07.tar.gz Looks OK! ----- RESPONSE BEGIN ----- Cache-Control: no-cache Connection: close Date: Tue, 08 Nov 2011 03:56:49 GMT Pragma: no-cache Accept: * Server: Apache Vary: accept-encoding Content-Length: 24476 Content-Type: text/html; charset=ISO-8859-1 Expires: Tue, 08 Nov 2011 03:56:49 GMT Last-Modified: Tue, 08 Nov 2011 03:56:49 GMT Client-Date: Tue, 08 Nov 2011 03:56:49 GMT Client-Peer: 195.37.231.65:80 Client-Response-Num: 1 Link: </pause/pause_favicon.jpg>; rel="shortcut icon"; type="image/jpeg" Link: </pause/pause.css>; rel="stylesheet"; title="pause"; type="text/css" Title: PAUSE: add_uri ----- RESPONSE END ------- PAUSE add message sent ok [200]