perlのバージョンやモジュールの依存性管理もちゃんとして、スケルトン生成から開発を始められるようにする。
依存管理
plenv + cpanm + carton でPerlの開発環境を構築するを真似る。
ツール |
役割 |
plenv |
perl のVersion切り替えを行なう |
cpanm |
plenvでインストールしたperlにversion毎にモジュールをインストールする |
carton |
モジュールの依存関係をローカル毎に管理する |
OSXでは以下を実施。
1
2
3
4
5
6
7
|
brew install plenv
brew install perl-build
cat ~/.bashrc
if which plenv > /dev/null; then eval “$(plenv init -)”; fi
plenv install-cpanm
plenv exec cpanm Module::Install
plenv exec cpanm Carton
|
スケルトン生成の準備
Perlではh2xs
,Module::Setup
モジュールでスケルトンを生成するらしい。
(FWでスケルトン生成があればそっちを使う(amon2など))
Module::Setup
は以下でインストール出来た。(h2xs
は最初から使用可能だった)
1
2
|
$ plenv exec cpanm JSON # JSON に依存しているため
$ plenv exec cpanm Module::Setup
|
スケルトン生成してみる
h2xs を試す
1
2
3
4
5
6
7
8
9
10
11
12
|
$ h2xs -AX --skip-exporter -n Foo::Bar
$ tree Foo-Bar/
Foo-Bar/
├── Changes
├── MANIFEST
├── Makefile.PL
├── README
├── lib
│ └── Foo
│ └── Bar.pm
└── t
└── Foo-Bar.t
|
module-setup を試す
フレーバーを使って柔軟にスケルトンを生成出来るらしい。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# まずmodule-setup の初期化を行なう
$ plenv exec module-setup --init
Creating directory /Users/masumi/.module-setup
....
Creating directory /Users/masumi/.module-setup/flavors/default/template
# 色々生成された後に使うバージョン管理を聴かれる
Do you use SVN? [yN] [n] y
You chose version control system: SVN
Do you use SVK? [yN] [n] n
Do you use Git? [yN] [n] y
You chose version control system: Git
Your name: [Default Name] Masumi Kanai
Your email: [default {at} example.com] masumi.net@gmail.com
Dump config /Users/masumi/.module-setup/flavors/default/config.yaml
# 生成してみる
$ plenv exec module-setup MyModule
$ initial commit
12 files changed, 137 insertions(+)
create mode 100644 .gitignore
create mode 100644 .shipit
create mode 100644 Changes
create mode 100644 MANIFEST.SKIP
create mode 100644 Makefile.PL
create mode 100644 README
create mode 100644 lib/MyModule.pm
create mode 100644 t/00_compile.t
create mode 100644 xt/01_podspell.t
create mode 100644 xt/02_perlcritic.t
create mode 100644 xt/03_pod.t
create mode 100644 xt/perlcriticrc
# パッケージを作ってみる
perl Makefile.PL
# Makfileが生成される
make
make test
make dist
....
Created MyModule-0.01.tar.gz
|
2つのスケルトン共にデフォルトではCartonが利用するcpanfileを吐かないので対応が必要になる。
module-setupの場合はフレーバーを作れば良さそう。
Makefile.PLと記法が異なるので注意。
Carton, Cpanm の参考資料