綾小路龍之介の素人思考

[perl] cpanモジュールの更新作業に必要なこと

やっておかなければいけないことのまとめ。

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]

リファレンス

  1. モジュール作成からCPANに上げるまでの手順 - Dive into the Tech World!
  2. モダンPerlの世界へようこそ:第26回 ShipIt:モジュールのリリースをもっと手軽に|gihyo.jp … 技術評論社
  3. 404 Blog Not Found:CPAN - MANIFESTと._file
  4. 2011-10-27 - Yarukidenized:ヤルキデナイズド
  5. nDiki: Perl モジュールの作り方 -

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2010-03-12T13:10:00+09:00
  2. Modified: 2010-03-12T13:10:00+09:00
  3. Generated: 2017-05-11T23:09:19+09:00