app-office/libreoffice-24.2.3.2-r1でsandbox violation, なぜ?
ひさしぶりのGentooの話. Xvfbをいれていると, libreofficeのconfigure phaseで, sandbox violationが出て進みません. 実際のところ, 下のようにbugzあるのでそれ見りゃいいんですけど.
sandbox violationはこんな感じ. Xvfbが/dev/udmabufをさわりにいく.
>>> Source configured.
* ----------------------- SANDBOX ACCESS VIOLATION SUMMARY -----------------------
* LOG FILE: "/dev/shm/portage/app-office/libreoffice-24.2.3.2-r1/temp/sandbox.log"
*
VERSION 1.0
FORMAT: F - Function called
FORMAT: S - Access Status
FORMAT: P - Path as passed to function
FORMAT: A - Absolute Path (not canonical)
FORMAT: R - Canonical Path
FORMAT: C - Command LineF: open_wr
S: deny
P: /dev/udmabuf
A: /dev/udmabuf
R: /dev/udmabuf
C: Xvfb :99 -screen 0 1280x1024x24 -nolisten tcp -auth /dev/shm/portage/app-office/libreoffice-24.2.3.2-r1/temp/xvfb-run.ec0CjX/Xautho
rity
* --------------------------------------------------------------------------------
sandbox violationが起きているのは, configure.acでいうとこのへん. AT-SPI2のテストを走らせるのに, gtk3・xvfb-run・dbus-launchが必要なのでそれらのチェックをしている. なのでUSE=gtkが入ってなければ多分 enable_atspi_tests=no になって, $XVFB_RUNの行にもいかず, sandbox violationも起きないでしょう. 多分.
11884 │ # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11885 │ if ! test "$ENABLE_GTK3" = TRUE; then
11886 │ if test "$enable_atspi_tests" = yes; then
11887 │ AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11888 │ fi
11889 │ enable_atspi_tests=no
11890 │ fi
11891 │ if ! test "$enable_atspi_tests" = no; then
11892 │ AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11893 │ if ! test "$XVFB_RUN" = no; then
11894 │ dnl make sure the found xvfb-run actually works
11895 │ AC_MSG_CHECKING([whether $XVFB_RUN works...])
11896 │ if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11897 │ AC_MSG_RESULT([yes])
11898 │ else
11899 │ AC_MSG_RESULT([no])
11900 │ XVFB_RUN=no
11901 │ fi
11902 │ fi
11903 │ if test "$XVFB_RUN" = no; then
11904 │ if test "$enable_atspi_tests" = yes; then
11905 │ AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11906 │ fi
11907 │ enable_atspi_tests=no
11908 │ fi
11909 │ fi
まあ, gtkをこれのためにdisableするのは困るって話なんですが.
ところで, 結局これでどうなるかというと, 変数名がしめすように, ATSPIのunittestが走るだけなんですよね.
86 │ ifneq ($(ENABLE_ATSPI_TESTS),)
87 │ $(eval $(call gb_Module_add_check_targets,vcl,\
88 │ CppunitTest_vcl_gtk3_a11y \
89 │ ))
90 │ endif
一方でebuildの方を見てみると, 全般的にcheckは落とされている様子. まあビルドしたいだけなので. ということは, 上の判定コード自体全部消してもいいんじゃないかなあ?
app-office/libreoffice/libreoffice-24.2.3.2-r1.ebuild
378 │ # sed in the tests
379 │ sed -i \
380 │ -e "s#all : build unitcheck#all : build#g" \
381 │ solenv/gbuild/Module.mk || die
382 │ sed -i \
383 │ -e "s#check: dev-install subsequentcheck#check: unitcheck slowcheck dev-install subsequentcheck#g" \
384 │ -e "s#Makefile.gbuild all slowcheck#Makefile.gbuild all#g" \
385 │ Makefile.in || die
実際のところ, 同じくsandbox violationが起きるからと, kf5-configのところも消されているのだ.
369 │ # sandbox violations on many systems, we don't need it. Bug #646406
370 │ sed -i \
371 │ -e "/KF5_CONFIG/s/kf5-config/no/" \
372 │ configure.ac || die "Failed to disable kf5-config"
それだけでなく, ebuildを見ると, libreofficeはビルド中に結構いろんなとこをさわりにくるのがわかる. OpenGLがどのぐらい使えるのかを見てるのかなあ? configureの後で? それか, ビルドした実行バイナリを実際動かして, データの後処理的なことをしているのかも. emacsのbuildみたいに.
602 │ # more and more LO stuff tries to use OpenGL, including tests during build
603 │ # bug 501508, bug 540624, bug 545974 and probably more
604 │ addpredict /dev/dri
605 │ addpredict /dev/ati
606 │ addpredict /dev/nvidiactl
まとめ: 巨大ソフトのビルドはめんどい