Hatena::ブログ(Diary)

そんな話はいつでもできる このページをアンテナに追加 RSSフィード

ひま〜じ〜ん! きっと何者にもなれないfu7mu4が告げる!

2017-11-03 definetly no logic

[][] opam install core で失敗する

こんな人はほぼいないと思うが、opam install coreOCamlcore パッケージをインストールすると失敗することがありえる。

そのMacデフォルトのCコンパイラclangではなくgccになっている場合Applesyslog.hを読みにいって、そこで死ぬ

原因は macport でインストールした gccデフォルトになっているから。

さてどうやって戻そうか

できなかったので、とりあえず、PATH環境変数から /opt/local/bin を削除して /opt/local/bin/gcc を見付けられないようにしてから、opam install coreインストールするとうまくいった。

以下、失敗した例


CC, CPP, CXX環境変数

こういうときにデフォルトコンパイラ指定する方法として、

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
opam install core

CC=/usr/bin/clang CXX=/usr/bin/clang++ opam install core

といった方法があるがこれもうまくいかない。

gccが呼出される。ビルド時に別のシェルでもよんでいるみたい。

DEVELOPER_DIR環境変数

複数Xcodeがある場合に、DEVELOPER_DIR環境変数Xcode環境を設定できるらしい。

Xcodeは最新のものひとつだけだったがこれを指定した。しかしやはり gcc が呼出されてしまう。

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Resource/Develop

だったか。

plistにかいておいて、ログイン時に読み込ませればあるいは可能性があったのかも?

2017-08-09 そして月と躍る歩道橋

[][] debian 9 に Real World OCaml 環境をセットアップ

https://github.com/realworldocaml/book/wiki/Installation-Instructions には debian 8 にこうやって準備しろとある

sudo apt-get update
sudo apt-get install m4 ocaml-native-compilers camlp4-extra opam

これでだいたいうまくいく。ただし追加でインストールしなければ。

opam install async yojson core_extended core_bench cohttp async_graphics cryptokit menhir

これらのOCamlパッケージを追加すると外部ライブラリ(OCamlではないパッケージの意)が不足しているため失敗することがある。

失敗した場合、次のパッケージを追加すると回避できるようだ。

sudo apt-get pkg-config zlib1g zlib1g-dev

なお、macOSでは re2 のインストールで失敗するが回避方法がみつからなかった。

2017-08-05 Kill me softly with his song

[][][] OCaml の re2 が macOSに入らないので Debian を使う

まだ Real World OCamlで遊ぼうとしている。

macOSではなぜか、re2のインストールでこける。

それはまあ、別にいいのかもしれないんだけど、このmacOSには docker も vagrant も VirtualBoxもインストールされている。macOSがダメならLinuxがあるじゃない。

ということで、ちょっと前に試しにいれてみたDebian 9を起動してみた。

いけそう。

しめしめ。

Real World OCamlのInstallの項目を進めていくとエラー。

ディスクフル....

しかたがないので、Debian 9を再インストールすることに。

ちなみに、docker環境OCamlインストールすると、ルートでやるのはちょっと...と言われてしまうので止めた。

2017-07-28 The car, my cdr, my everything -- lisp

[] 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<char, std::__1::char_traits<char> >&, 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.

よくわからない

2017-02-26 遠いキオクの遊び場

[] Real World OCaml をゲット

Real World OCaml

ゲットしたのですこしずつ進めてみよう。


なぜ OCaml なの?

Lispについて某所で語ってみたときに、Lispの本をお勧めして悦にいっていたら、MLいいよといわんばかりにStandard MLの本を頂いた。ML?と思いながらちらみしていたが、やや古い模様。うーん。

そこで、MLでよさそうなのはないか?と探していたら

  • 某ブログでReal World OCamlを褒めていた。
  • Amazonのポイントが溜っていた。
  • リアル店舗にMLの本っておいてなさそう(偏見)

ということでポチりました。

[][] macport ユーザーの OCamlインストールあれこれ

twitterで Real World OCamlOcaml始めたら、OCamlだよ、Ocamlではないよと

そくつっこまれました。

とりあえず、Real World OCamlインストール

sudo port install ocaml
sudo port install opam
opam init

とりあえず、fで回答

In normal operation, OPAM only alters files within ~/.opam.

During this initialisation, you can allow OPAM to add information to two

other files for best results. You can also make these additions manually

if you wish.

If you agree, OPAM will modify:

- ~/.bash_profile (or a file you specify) to set the right environment

variables and to load the auto-completion scripts for your shell (bash)

on startup. Specifically, it checks for and appends the following line:

. /Users/fu7mu4/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true


- ~/.ocamlinit to ensure that non-system installations of `ocamlfind`

(i.e. those installed by OPAM) will work correctly when running the

OCaml toplevel. It does this by adding $OCAML_TOPLEVEL_PATH to the list

of include directories.

If you choose to not configure your system now, you can either configure

OPAM manually (instructions will be displayed) or launch the automatic setup

later by running:

opam config setup -a


Do you want OPAM to modify ~/.bash_profile and ~/.ocamlinit?

(default is 'no', use 'f' to name a file other than ~/.bash_profile)

[N/y/f]

Global configuration:

Updating ~/.opam/opam-init/init.sh

Updating ~/.opam/opam-init/init.zsh

Updating ~/.opam/opam-init/init.csh

Updating ~/.opam/opam-init/init.fish

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

1. To configure OPAM in the current shell session, you need to run:

eval `opam config env`

2. To correctly configure OPAM for subsequent use, add the following

line to your profile file (for instance ~/.bash_profile):

. /Users/fu7mu4/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true

3. To avoid issues related to non-system installations of `ocamlfind`

add the following lines to ~/.ocamlinit (create it if necessary):

let () =

try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")

with Not_found -> ()

;;

eval `opam config env`

これですぐに使えるって

おっとしまった、そこからOCamlを opam switchで更新しないと

opam switch

で一覧を出して最新に切り替えよう。(2017年2月で 4.04.0 が最新のもよう)

opam switch 4.04.0

それから、

eval `opam config env`

して、おく。

それから Real World OCamlの実行環境用に core と utopをインストールするらしい。

opam install core utop
Read the top page of this blog in English (Translated by Google) ここの文章は無断リンク(トラックバック含む)、無断引用可。トラックバックは無断で削除することもあります。 All code on this blog without some notation is released Creative Commons 0 v1 or MIT License.