綾小路龍之介の素人思考

[perl] cpanモジュール作成、必須チェック項目

雛形作成ツールはなにを使ったか忘れてしまったけど。ExtUtils::MakeMakerでした。

まずは雛形作成スクリプトが作ってくれたMakefile.PLを動かす。これでmakefileが出来る。

$ perl Makefile.PL
include /home/**********************************************************/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
include inc/Module/Install/Makefile.pm
Cannot determine perl version info from lib/******************************.pm
include inc/Module/Install/AuthorTests.pm
include inc/Module/Install/TestBase.pm
include inc/Module/Install/Include.pm
include inc/Test/Base.pm
include inc/Test/Base/Filter.pm
include inc/Spiffy.pm
include inc/Test/More.pm
include inc/Test/Builder.pm
include inc/Test/Builder/Module.pm
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Writing Makefile for **********************************
Writing META.yml

できたmakefileで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

テストする。

$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t xt/*.t
t/00_compile.t ...... ok
xt/01_podspell.t .... skipped: Test::Spelling is not installed.
xt/02_perlcritic.t .. skipped: Test::Perl::Critic is not installed.
xt/03_pod.t ......... ok
All tests successful.
Files=4, Tests=11,  1 wallclock secs ( 0.11 usr  0.03 sys +  0.53 cusr  0.08 csys =  0.75 CPU)
Result: PASS

配布用のパッケージを作る。

$ make dist
rm -rf ***********************************
/usr/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \
                -e "manicopy(maniread(),'***********************************', 'best');"
mkdir ***********************************
mkdir ***********************************/inc
mkdir ***********************************/inc/Test
mkdir ***********************************/inc/Test/Base
mkdir ***********************************/inc/Module
mkdir ***********************************/inc/Module/Install
mkdir ***********************************/xt
mkdir ***********************************/lib
mkdir ***********************************/lib/**********
mkdir ***********************************/lib/*****************
mkdir ***********************************/lib/*****************/*****
mkdir ***********************************/lib/*****************/*****/**
mkdir ***********************************/inc/Test/Builder
mkdir ***********************************/t
/usr/bin/perl "-Iinc" -I. "-MModule::Install::Admin" -e "dist_preop(q(***********************************))"
tar cvf ***********************************.tar ***********************************
***********************************/
***********************************/inc/
***********************************/inc/Test/
***********************************/inc/Test/Builder.pm
***********************************/inc/Test/Base/
***********************************/inc/Test/Base/Filter.pm
***********************************/inc/Test/Builder/
***********************************/inc/Test/Builder/Module.pm
***********************************/inc/Test/More.pm
***********************************/inc/Test/Base.pm
***********************************/inc/Module/
***********************************/inc/Module/Install.pm
***********************************/inc/Module/Install/
***********************************/inc/Module/Install/Fetch.pm
***********************************/inc/Module/Install/TestBase.pm
***********************************/inc/Module/Install/Include.pm
***********************************/inc/Module/Install/Makefile.pm
***********************************/inc/Module/Install/Base.pm
***********************************/inc/Module/Install/Metadata.pm
***********************************/inc/Module/Install/AuthorTests.pm
***********************************/inc/Module/Install/Can.pm
***********************************/inc/Module/Install/WriteAll.pm
***********************************/inc/Module/Install/Win32.pm
***********************************/inc/Spiffy.pm
***********************************/Changes
***********************************/xt/
***********************************/xt/02_perlcritic.t
***********************************/xt/01_podspell.t
***********************************/xt/perlcriticrc
***********************************/xt/03_pod.t
***********************************/MANIFEST
***********************************/lib/
***********************************/lib/**********/
***********************************/lib/**********/******/
***********************************/lib/**********/******/*****/
***********************************/lib/**********/******/*****/**/
***********************************/lib/**********/******/*****/**/***.pm
***********************************/META.yml
***********************************/t/
***********************************/t/00_compile.t
***********************************/.gitignore
***********************************/README
***********************************/Makefile.PL
rm -rf ***********************************
gzip --best ***********************************.tar
g/zip: ***********************************.tar.gz already exists; do you wish to overwrite (y or n)? y

作成されたパッケージをPAUSE経由でアップロード。

リファレンス

  1. はじめてのPerlモジュール開発メモ/楽
  2. Test::Base driven Development - Bulknews::Subtech - subtech
  3. Module::Setup でらくらくモジュール作成 - JPerl Advent Calendar 2009
  4. cpan 雛形 miyagawa - Google 検索
  5. cpan-upload - TokuLog 改メ tokuhirom’s blog
  6. モダンPerlの世界へようこそ:第26回 ShipIt:モジュールのリリースをもっと手軽に|gihyo.jp … 技術評論社
  7. CPAN: PAUSEサーバーにリモートからファイルをアップロードする - koba206の開発WIKI

ソーシャルブックマーク

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

ChangeLog

  1. Posted: 2009-08-10T20:57:29+09:00
  2. Modified: 2009-08-10T20:57:29+09:00
  3. Generated: 2017-07-19T23:09:20+09:00