VineSeed ML アーカイブ



[VineSeed:024756] perl_{site,vendor}lib について

  • From: "MATSUBAYASHI 'Shaolin' Kohji" <shaolin@xxxxxxxxxxxxx>
  • Subject: [VineSeed:024756] perl_{site,vendor}lib について
  • Date: Mon, 5 Mar 2012 13:37:40 +0900
松林です。

必要があって多くの 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