PPP3: Pythonのビルド(続き)
たまたまTwitterで、仮想マシンとホストの共有ディレクトリ上だと
ファイルI/Oが遅い、みたいな考えてみるとそりゃそうだね、って話を見て
自分もPythonのビルドを共有ディレクトリでやってたので
共有されてないところでやってみたら速い速い
テストもどんどん消化
どんどん・・・
$ make test
:
== Tests result: SUCCESS ==
400 tests OK.
16 tests skipped:
test_ctypes test_curses test_dbm_ndbm test_devpoll test_kqueue
test_lzma test_msilib test_ossaudiodev test_startfile test_tix
test_tk test_ttk_guionly test_winconsoleio test_winreg
test_winsound test_zipfile64
Total duration: 7 min 10 sec
Tests result: SUCCESS
(共有ディレクトリ上でやってたときは34分かかってたから5倍!)
え、通ったの
なんなの
あんまり本筋とは関係ないと思ってたけど
しかし残念ながらこれでめでたしめでたしとはいかず
こんなメッセージが(実は書き忘れてたけど昨日も出てた)
regrtest.pyっていう名前からしてリグレッションテストだろうから
これはmake test
の結果の信頼性の根幹にかかわる
詳細を見てみるとSegmentation Faultが出ている
PythonでSegmentation Faultとは
これはヘッダが3.6.7用だからという疑惑をちょっと強化したかな
切り分け的にはまず3.6.7をビルドしてみるかなあ
それでだめだったら一度、本の通りにubuntu/xenial64で3.6.4を
ビルドしてみて何の問題もなく成功っていうのを体験してみる
あと、まっさらのOSから依存しているパッケージを入れずに
ビルドしてみるとどうなるかとかbento/ubuntu-16.04で
3.6.4をビルドしてみるとどうなるかもちょっと興味ある
あとは流れで
普通に入ってるPythonでもこの先進めるはずだからあまり
力を入れすぎないのがいいかなあ(すでに(略
では3.6.7でビルド
makeまでは問題なし
regrtest.pyの停止もなし
けど・・・
$ make test
:
======================================================================
ERROR: test_find (ctypes.test.test_loading.LoaderTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vagrant/pybuild/Python-3.6.7/Lib/ctypes/test/test_loading.py", line 47, in test_find
cdll.LoadLibrary(lib)
File "/home/vagrant/pybuild/Python-3.6.7/Lib/ctypes/__init__.py", line 426, in LoadLibrary
return self._dlltype(name)
File "/home/vagrant/pybuild/Python-3.6.7/Lib/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/x86_64-linux-gnu/VBoxOGLcrutil.so: undefined symbol: crypt_r
----------------------------------------------------------------------
Ran 471 tests in 0.930s
FAILED (errors=1, skipped=88)
test test_ctypes failed
1 test failed again:
test_ctypes
== Tests result: FAILURE then FAILURE ==
391 tests OK.
1 test failed:
test_ctypes
15 tests skipped:
test_curses test_dbm_ndbm test_devpoll test_kqueue test_lzma
test_msilib test_ossaudiodev test_startfile test_tix test_tk
test_ttk_guionly test_winconsoleio test_winreg test_winsound
test_zipfile64
1 re-run test:
test_ctypes
Total duration: 7 min 23 sec
Tests result: FAILURE then FAILURE
Makefile:1047: recipe for target 'test' failed
make: *** [test] Segmentation fault (コアダンプしました)
おしい!
1 test failed
しかし
“OSError: /usr/lib/x86_64-linux-gnu/VBoxOGLcrutil.so: undefined symbol: crypt_r”
っていうのはPythonのせいなのか
crypt_rがないっていう環境なのでは
ファイル名からしてVirtualBoxのせいってこともありそう
VirtualBoxのGuest Additionsの依存関係が不足しているそうな
そしてテスト用のモジュールでは直っているという
まだ正式リリースされたものでは直ってないけどこうすると依存関係を直せるとのこと
sudo apt install patchelf
sudo patchelf --add-needed libcrypt.so.1 /opt/VBoxGuestAdditions-6.0.6/lib/VBoxOGLcrutil.so
やってみた
そういえばVirtualBoxの6.0.6が出てるよっていうの無視してたんで
6.0.4だけど、「6.0.6になっても直ってない」って書いてあったんで
問題ないだろう
で、make testだけやってみればいいのかなこの場合は
存在しなかったcrypt_rが存在するようになった、ってことだし
configure
からやりなおそう
ねんのためmake clean
もしておこう
どうかな・・・
== Tests result: SUCCESS ==
392 tests OK.
15 tests skipped:
test_curses test_dbm_ndbm test_devpoll test_kqueue test_lzma
test_msilib test_ossaudiodev test_startfile test_tix test_tk
test_ttk_guionly test_winconsoleio test_winreg test_winsound
test_zipfile64
Total duration: 7 min 25 sec
Tests result: SUCCESS
できた!
skipされてていいのかはよくわからない
cursesとかtkとかやらなくていいの?
winナントカはいいと思うけど