松林です。
必要があって多くの perl module をパッケージ作成中ですが、
この際、以下のことに気付きました。
(1) .so モジュールやバイナリなどを含むパッケージは arch dependent
(2) .pm ファイルなどだけのパッケージは arch independent
ですが、(2) の一部でも、noarch ではなく arch dependent なパッケージに
なっているものがあります。ここではそれはさておき。
(1) の多くは、%{perl_vendorarch}, %{perl_sitearch} が使われ、
(2) の多くは、%{perl_vendorlib}, %{perl_sitelib} が使われています
(やはり例外も見受けられますが、ここでは触れません)。
現在の perl (6.x, VineSeed 共に) では、以下の様になっています。
(x86_64 の場合)
$ perl -V:installsitelib
installsitelib='/usr/lib64/perl5/site_perl/5.12.3';
$ perl -V:installsitearch
installsitearch='/usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi';
$ perl -V:installvendorlib
installvendorlib='/usr/lib64/perl5/vendor_perl/5.12.3';
$ perl -V:installvendorarch
installvendorarch='/usr/lib64/perl5/vendor_perl/5.12.3/x86_64-linux-thread-multi';
{site,vendor}{arch,lib} の使い分けはここではさておき、
(1) の場合 (arch dependent) は {site,vendor}arch、
(2) の場合 (arch independent) は {site,vendor}lib
という使い分けで暗黙の了解がとれていたものとします。
問題は、(2) の arch independent モジュールのパッケージを
build する際です。
x86_64 上で build した noarch.rpm のモジュールは
/usr/lib64/perl5/*/... へと配置され、結果 ix86 の環境では
モジュールパスにないため認識されません。
逆に ix86 上で build した noarch.rpm のモジュールは
/usr/lib/perl5/*/... へと配置されるため、x86_64 環境でも
問題なく認識され使用できます。
そこで、メール末尾のように sitelib, vendorlib のデフォルト suffix を
ix86, x86_64 共に /usr/lib/ 固定にしてしまう、という方策を
考えています。
まとめると、perl module パッケージ作成時に、インストール先として
* arch dependent なものは %{perl_sitearch}, %{perl_vendorarch} を使う
* arch independent なものは %{perl_sitelib}, %{perl_vendorlib} を使う
* perl パッケージにおいて {site,vendor}lib のプレフィクスを
/usr/lib 固定に変更し、x86_64 上で build しても問題のないようにする
という提案です。
もしかしたら根本的に勘違いをしているかもしれません。
上記について、なにかコメントを頂ければ幸いです。
--- perl-vl.spec.orig 2011-10-31 07:44:16.000000000 +0900
+++ perl-vl.spec 2012-03-05 13:25:28.000000000 +0900
@@ -337,8 +337,8 @@
%ifarch %{multilib_64_archs}
-Dlibpth="/lib64 %{_prefix}/lib64" \
-Dprivlib="%{_libdir}/perl5/%{perl_version}" \
- -Dsitelib="%{_libdir}/perl5/site_perl/%{perl_version}" \
- -Dvendorlib="%{_libdir}/perl5/vendor_perl/%{perl_version}" \
+ -Dsitelib="%{_prefix}/lib/perl5/site_perl/%{perl_version}" \
+ -Dvendorlib="%{_prefix}/lib/perl5/vendor_perl/%{perl_version}" \
-Darchlib="%{_libdir}/perl5/%{perl_version}/%{perl_archname}" \
-Dsitearch="%{_libdir}/perl5/site_perl/%{perl_version}/%{perl_archname}
" \
-Dvendorarch="%{_libdir}/perl5/vendor_perl/%{perl_version}/%{perl_archn
ame}" \
--
MATSUBAYASHI, 'Shaolin' Kohji shaolin@xxxxxxxxxxxxxxx
Vice President & PPC Maintainer, Project Vine shaolin@xxxxxxxxxxxxx
Interaction Designer, Vine Caves Ltd. shaolin@xxxxxxxxxxxxx
GPG Fingerprint: B978 03AD F4DC BA4F 5EC3 2637 67C4 9961 DE4B 5ACC
_______________________________________________
VineSeed mailing list
VineSeed@xxxxxxxxxxxxx
http://lists.vinelinux.org/mailman/listinfo/vineseed