nDiki : PPM::Make
PPM::Make
PPMパッケージ作成用モジュール。
make_ppmコマンドでPPMパッケージを作成する事ができる。
perl Makefile.PL nmake nmake test make_ppm
バージョン
PPM::Make 0.52 以降では
- PPM::Make 0.52 -> Getopt::Long 2.32
- PPM::Make 0.70 -> Getopt::Long 2.33
- PPM::Make 0.71 -> Getopt::Long 2.33
を要求する。ActivePerl 5.6.1.638 では Getopt::Long 2.25 が標準バンドルなので置き換える必要がある。
スポンサード リンク
Related term
2004年7月20日 (火)
■ PAR を ActivePerl 5.6.1 build 638 に

昨日 Linux 上で実験してみた PAR を Windows にも入れてみる。 PDLを使っている関係で ActivePerl は 5.6.1。
@ インストール
ppm install で入るパッケージは古いので、最新のものを入れておく。 ちょっと手間。
- PAR が必要とする Parse::Binary と Win32::Exe は ppm がないので、自分でとってきて make_ppm。
- PAR 0.85 は 'ppm install PPM::Make' ではいる make_ppm だとパッケージ作成失敗。PPM::Make 0.71 に上げる (古い PPM::Make で ppm 化可能)。
- PPM::Make 0.71 は新しい Getopt::Long を必要とするので、こちらもソースをとってきて ppm 化。
- その他必要なパッケージもインストール (Config::IniFiles)。
ワンライナーを pp できるところまで動作確認。
@ モジュール + スクリプトを実行可能形式に
ExtUtils::Makemakerを使ってパッケージ化している開発中のモジュール(スクリプトあり、XS あり)を実行可能形式化してみる。
perl Makefile.PL nmake nmake test cd blib set PERL5LIB=lib;arch (pp の -I オプションが効かなかったので) pp -o foo.exe -a lib -a arch -M ... -c script/foo
Log::Log4perl::Appender::Screen、Jcode::Unicode::NoXS、Unicode::String、GD については依存関係を自動検出できなかったので、それぞれ -M で指定。
できた。動いた。素晴しい。 PDL や GD を使っていたのでちょっと不安だったのだがうまく動いて感激。 これでCD-ROMとか USB メモリに入れておいて一発実行とかできる。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
- 自前 PPM リポジトリの管理 (2006-07-03)
2004年8月23日 (月)
■ [ Perl ] PPM::Make 0.71 の dependency パッケージ誤認

Term::ProgressBar を PREREQ_PM にしているパッケージを make_ppm すると、ppd に Term-ProgressBar ではなく Term-ProgressBar-2.06 が DEPENDENCY として出力される。
CPAN にある最新パッケージが Term-ProgressBar-2.06-r1 と、ちょっと変則的なバージョン番号がついているので誤認しているようだ。 PPM::Make::Util::version あたりでヒューリスティックにパッケージ名とバージョン番号を分離しているっぽい。
とりあえず出力されたPPDを手で直すか。
- PPM::Make 0.74 で dependency 生成改善 (2004-08-30)
- Perl の MIME-tools 4.121 ライブラリをインストール(2) (1999-02-03)
- WiKicker と GNU GPL (2005-05-10)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
2004年8月30日 (月)
■ PPM::Make 0.74 で dependency 生成改善

PPM::Make 0.74 が出た。CPAN::DistnameInfo を使うようになり、Term::ProgressBarのパッケージ名も誤認識しないようになった。
- [ Perl ] PPM::Make 0.71 の dependency ... (2004-08-23)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 自前 PPM リポジトリの管理 (2006-07-03)
- [ Perl ] Term::ProgressBar + ActivePe... (2003-12-26)
2004年10月14日 (木)
■ PPM::Make と META.yml

PPM::Make の make_ppm で ppd ファイルを作成すると自動的に DEPENDENCY 要素を生成してくれる。 今作っているパッケージ、 Windows の ActivePerl 下で動かす時には追加の依存モジュールが(Win32::*)あるので、Makefile.PL の中で $^O を見て PREREQ_PM に追加を行っている。
で気がつくとこれが ppd に反映されていない。
ソースを見たところ META.yml があってこれから情報が取得できている時は、Makefile を見にいかないようになっている。 META.yml が無いか、必要な情報が取れていない場合は、Makefile をスキャンして PREREQ_PM などを取得している (Makefile.PL ベースの場合)。
ここでパッケージの作成(make dist)を Linux 上で行っている関係で META.yml には Windows 環境特有の requires が入らないため、結果 ppd に DEPENDENCY が足りない事になる。
ということでこれからはとりあえず安直に、 make_ppm の直前に META.yml を削除することにしよう。
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- WiKicker の Win32 対応 (2005-04-04)
2005年2月23日 (水)
■ ActivePerl で Ming

ActivePerl で Ming を使えるようにしておきたい。
@ Visual Studio で
Ming 0.3 beta1 のソースパッケージには Visual Studio 6.0 用のプロジェクトファイルが含まれている。 Cygwin の Bison と flex があればライブラリをビルドできるようだ。 横着して Linux 側で bison と flex で生成したファイルをコピーして(それから unistd.h をインクルードしている部分を消して)、ビルドしてみたところ一応 lib ファイルは作成成功。
しかし ActivePerl 用にPerl モジュールの make は失敗。
@ MinGW + nmake で ActivePerl のモジュールをビルドできるらしい
調べたところ ExtUtils::FakeConfig を使うと Visual Studio が無くても MinGW + nmake でモジュールをビルドできるらしい(全てではないと思うが)。
ということで Ming を MinGW でビルドした後、そのまま ActivePerl 用モジュールの作成まで持ち込むことにしてみる。
@ MinGW + MSYS + GnuWin32 で開発環境を構築
コンパイルに必要な環境を MinGW で、configure に必要な環境を MSYS で用意する。
@ bison は GnuWin32 で
Ming のビルドに必要な Bison は MinGW、MSYS のインストーラに含まれていない。 bison-1.875.0-2003.02.10-1.exe というのが別途あるがうまく動かない。
ソースパッケージ(bison-2.0.tar.gz、bison-1.875.tar.gz)からはビルドできず。 MinGW/MSYSのプロジェクトにある bison-1.875-2003.02.10-1-src.tar.gz はビルドできるものの make check が通らない。
とうことで GnuWin32 の bison-1.875-4.exe (インストーラ形式)をインストール。 c:/usr/local/GnuWin32 にインストールした後、MSYS の /etc/fstab で /GnuWin32 にマウントし、/GnuWin32/bin に PATH を通しておく。
@ flex はソースパッケージから
flex-2.5.4a.tar.gz を展開して
./configure; make; make check; make install
インストール時ハードリンクが作れなくてエラーがでているようだが無視。
@ zlib (Ming で必要)
MSYS 上でビルドしてインストール。zlib-1.2.2.tar.gz を展開して
./configure; make; make check; make install
@ LibUnGif for Windows (Ming で必要)
MSYS 上でビルドしてインストール。 libungif-4.1.0b1-src.zip を展開して
rm config.cache; config.h内の-DHAVE_VARARGS_Hをコメントアウト。 ./configure; make; make install
make check はエラーが出るが無視。
@ libpng (Ming で必要)
MSYS 上でビルドしてインストール。libpng-1.2.8-config.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure make; make check; make install
@ いよいよ Ming
MSYS 上でビルド。ming-0.3beta1.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make static
@ ActivePerl 用モジュール作成
ExtUtils::FakeConfig と PPM::Make で Ming の SWF PPM パッケージを作成する。 (MSYSのシェルではなく)コマンド プロンプトを開いて、Mingソースパッケージの中の perl_ext に移動。 MSYS、MinGW、nmake にPATHを通しておく。
それから Makefile.PL の実行で -lz を発見できないので、libz.a を Makefile.PL と同じディレクトリにコピーしてしまう(-L/usr/local/lib を指定しても効かなかったので)。 libpng.a、libungif.a も同じくコピーしておく。
Makefile を作成。Makefile.PL では -lz しか指定していないが、libpng と libungif も必要なのでコマンドラインオプションで指定する。ExtUtils::FakeConfig の Config_m を使用して MinGW を使用するようにする。
perl -MConfig_m Makefile.PL LIBS="-lpng -lungif -lz"
ここで生成される Makefile の中で libperl58.a を指定している部分があるが、ActivePerl では perl58.lib になるので、エディタで書き換え。 後はいつも通り
nmake nmake test make_ppm
で PPM パッケージ作成完了。
簡単なPerlプログラムでSWFファイルが作れる事を確認。 やった。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Module::Build でソースパッケージング (2005-08-24)
- Windows 用 GNU Make (2004-07-24)
- OpenSSH for Windows (2004-08-05)
- Windows 用 GNU tar (2004-08-05)
2006年7月3日 (月)
■ 自前 PPM リポジトリの管理

Windows Perl アプリケーション用に PPM リポジトリを久しぶりに整理。
自分が使用する PPM パッケージは以下の理由から、以前より基本的に自前でビルド/保存し PPM リポジトリをローカルに作成するようにしている。
- 後でオフラインでインストールできるようにする。
- 「公開リポジトリが無くなった」あるいは「公開リポジトリに欲しいパッケージが無くなった」時に困らないようにする。
- 動作確認された組み合わせでの PPM パッケージセットを作成・保持できるようにする。
- ライセンス的にクリアなものだけを含むリポジトリを用意する。 (芋蔓式インストールで、ライセンス的にクリアでないパッケージが入ってしまうのを防ぐ)。
@ 手元では以下のように管理
PPM
|-- <category>
| `-- 8xx
| |-- <projects A> [ 公開 / export ]
| | |-- module1.ppd -> (A)
| | |-- module1.tar.gz -> (B)
| | `-- ...
| `-- ...
`-- pool
|-- module1-x.yy
| |-- module1.x.yy.tar.gz
| |-- some documents...
| `-- build817
| |-- module1.ppd (A)
| `-- module1.tar.gz (B)
`-- ...
@ pool
- pool ディレクトリに「[モジュール]-[バージョン]」ディレクトリを作成する。同じバージョンでも、異なるバージョンは両方とも別々にキープしておく。
- その下にソース tarball を置く。
- ライセンス情報ファイルなども置く (touch Perl-License 等空のファイルを作成しておく)
- PPM パッケージを PPM::Make で作成し、その時に使用した ActivePerl のビルド番号別にサブディレクトリを作って .tar.gz と .ppd を置く。
@ リポジトリ
- ActivePerl のビルド番号別にリポジトリを作成する。基本的には 6xx 系、8xx 系それぞれの中ではバイナリ互換性がある (PAR などは、ビルド番号に1対1でしか互換性がない)。
- 必要に応じてカテゴリ別サブディレクトリを用意 (アクセス制限の都合などにより)
- 必要に応じてプロジェクト毎にサブディレクトリを用意 (プロジェクト毎にパッケージセットを作るため)
- リポジトリディレクトリからは pool 内の .ppd、.tar.gz へシンボリックリンクを張る。欲しいモジュールのバージョン、ビルド番号を選んでリンクする。
@ 公開
- Samba、Apache などで、PPM ディレクトリ全部あるいは特定のリポジトリ部分を公開する。
- 必要なら export して別サーバに置く。rsync や cp の -L オプションでシンボリックリンクを実ファイルに置き換えてアーカイブを作成する。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- rsync の --copy-unsafe-links (2004-08-21)
スポンサード リンク
■よく検索されるキーワード
提案書(75) torrent(69) perl(61) 書き方(45) 充電式カイロ(43) windows(38) x31(36) 使い方(32) linux(32) cvs(25) アジェンダとは(25) usb(25) thinkpad(23) 静電気(21) サンプル(20) 口コミ(20) ヨドバシ(20) アジェンダ(20) 画像(19) debian(19) ubuntu(19) mp980(18) f-01a(18) 手帳(17) tc-1(17) 秋葉原(16) ssh(16) subversion(16) グッズ(16) a6(15) 壁紙(15) ほぼ日手帳(15) c#(14) ダイソー(14) svn(14) 交換(14) インストール(13) 加湿器(13) firefox(12) ノート(12) 無印(12) 日本語(12) wiki(12) ganttproject(12) デロンギ(11) 方眼(11) ヨドバシカメラ(11) デザイン(11) nikkor(11) 設定(11) 作り方(11) dropbox(11) af(10) terastation(10) memcached(10) レビュー(10) カバー(10) カイロ(10) 2009(10) 除去(10) nikon(10) tortoisesvn(10) クラリチン(9) ガントチャート(9) 動画(9) ポメラ(9) ご査収(9) rcs(9) モジュール(9) n-01a(9) フィルム(9) 写真(9) システム手帳(9) edition(9) porter(9) xp(8) imap(8) 4c(8) docomo(8) ミニ6穴(8)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 18.093662s / load averages: 0.34, 0.36, 0.51
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク