fu7mu4’s diary

はてなダイアリーから移転しました。

opam update したら re2 のビルドに失敗した

opam helpしたら、opam update と opam upgradeというのがあるのがわかったのでやってみた。


opam update すると、インストール 28、再ビルド 12、更新 61件もあるらしい。

=-=- Updating package repositories =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
[default] synchronized from https://opam.ocaml.org

Updates available for 4.04.0, apply them with 'opam upgrade':
===== ∗ 28 ↻ 12 ↗ 61 =====

opam upgrade すると、いろいろと更新できたが、

=-=- lwt.3.1.0 installed successfully -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
=> Lwt 4.0.0 will make some breaking changes to packaging in late 2017. See
https://github.com/ocsigen/lwt/issues/453

=-=- tuareg.2.0.10 installed successfully -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
=> If you have not yet done so, please add in ~/.emacs.d/init.el or
in ~/.emacs to following line:
(load "/Users/fu7mu4/.opam/4.04.0/share/emacs/site-lisp/tuareg-site-file")
You should consider installing "merlin" (completion, displaying types,...)
or "caml-mode" (displaying types).

=-=- re2.v0.9.0 troobleshooting -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
=> This package relies on external (system) dependencies that may be missing.
`opam depext re2.v0.9.0' may help you find the correct installation for your
system.

The former state can be restored with:
opam switch import "~/.opam/4.04.0/backup/state-20170627154855.export"

となってre2 v0.9.0のインストールに失敗した。うーん?これが原因らしい。macOS なのに、so というのはなにかおかしい。dylibでは?

[ERROR] The compilation of re2 failed at "jbuilder build -p re2 -j 4".

#=== ERROR while installing re2.v0.9.0 ========================================#
# opam-version 1.2.2
# os darwin
# command jbuilder build -p re2 -j 4
# path /Users/fu7mu4/.opam/4.04.0/build/re2.v0.9.0
# compiler 4.04.0
# exit-code 1
# env-file /Users/fu7mu4/.opam/4.04.0/build/re2.v0.9.0/re2-28258-91ed58.env
# stdout-file /Users/fu7mu4/.opam/4.04.0/build/re2.v0.9.0/re2-28258-91ed58.out
# stderr-file /Users/fu7mu4/.opam/4.04.0/build/re2.v0.9.0/re2-28258-91ed58.err
### stderr ###
# [...]
# cp libre2/obj/libre2.a libre2_c_stubs.a
# cp libre2/obj/so/libre2.so dllre2_c_stubs.so
# /opt/local/bin/gmake -s -C libre2 clean
# ')
# Undefined symbols for architecture x86_64:
# "operator<<(std::__1::basic_ostream >&, re2::StringPiece const&)", referenced from:
# -exported_symbol[s_list] command line option
# ld: symbol(s) not found for architecture x86_64
# collect2: error: ld returned 1 exit status
# gmake: *** [Makefile:181: obj/so/libre2.so] エラー 1

とりあえずいわれていたので実行

opam depext re2.v0.9.0

# Detecting depexts using flags: x86_64 osx macports
# No extra OS packages requirements found.

よくわからない