Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

Carton Conference

Carton conference was held at NHN's meeting room yesterday. I got to know about recent changes on cpanfile, carton, cpanminus.

carton/cpanfile

carton is "Bundle or pip freeze for Perl." One thing I want the best for cpanfile is to be able to specify module in Git repository, which is supported by Bundler, like below:

git: "git://github.com/rails/rails.git", ref: "4aded"
git: "git://github.com/rails/rails.git", branch: "2-3-stable"
git: "git://github.com/rails/rails.git", tag: "v2.3.5"

I heard miyagawa is planning to support it in cpanfile (Gemfile for carton).

require 'Foo::Bar', via => 'git://...', branch => 'hoge-topic'

It must be very convenient when we want to use modules which are:

  • not released on CPAN
  • forked on GitHub
  • in private Git repository

It's promising feature for cpanfile/carton, I'm convinced.

cpanminus

>= 1.60000 release of cpanminus looks neat and includes several features to fullfil the requirements for Git support.

Version specification

App::cpanminus now supports version specification.

cpanm Plack~1.0000                 # 1.0000 or later
cpanm Plack~">= 1.0000, < 2.0000"  # latest of 1.xxxx
cpanm Plack@0.9990                 # specific version. same as Plack~"== 0.9990"

https://metacpan.org/module/MIYAGAWA/App-cpanminus-1.6002/bin/cpanm

Install from Git

cpanm git://github.com/miyagawa/Plack.git@1.0000 # tag
cpanm git://github.com/miyagawa/Plack.git@devel  # branch
cpanm git://github.com/miyagawa/Plack.git@3fb5c9 # commit