さっきの記事の続き。
基本的にはここの指示に従う。
ただし、FreeBSDについては指示がないのでlinuxのところを見ながら何をすればいいか推測する。
Rをビルドしなおす
なんかRStudioをビルドしようとすると、libR.a
がない!というエラーが出て、調べるとRをビルドするときにそれも生成しないとだめでした。--enable-R-static-lib
を付けます。
$ cd R-3.2.5/ $ env MAIN_LDFLAGS=-Wl,--export-dynamic CC=clang CXX=clang++ ./configure --without-x --disable-java --enable-R-static-lib $ gmake
これをインストールするにはinstall-libR
です。
$ sudo gmake install-libR
必要なパッケージをインストール
CMakeとBoostは問答無用で必要なのでインストール。ossp-uuidはUUIDを生成するライブラリ。Linuxだとlibcにあるから必要ないけどFreeBSDだと必要、とかいう話っぽい。bashは、dependencies/common/install-common
を実行するために必要。不本意ながら/bin/bash
にシンボリックリンクも張らなければいけない。
$ sudo pkg install cmake boost-libs ossp-uuid bash apache-ant $ sudo ln -s /usr/local/bin/bash /bin/bash
RStudioのソースコードを取得
$ wget https://github.com/rstudio/rstudio/archive/v0.99.1171.tar.gz
$ tar xf v0.99.1171.tar.gz
$ cd rstudio-0.99.1171/
install-common
依存パッケージをダウンロードしてきます。boostをビルドするので時間がかかります。
$ cd dependencies/common $ ./install-common
たぶん、install-pandoc
でこんなエラーがでます。
cp: pandoc-1.17.0.2/linux/debian/amd64/pandoc*: No such file or directory
ARCH
はi386
かx84_64
を想定しているためです。これはたぶんどっちみちコンパイルしなおさないと動かないので、適当にスキップします。私はこの行のARCH
をamd64
に置き換えました:rstudio/install-pandoc at c968c9026fbfa20c0f03968481ebca98c401af68 · rstudio/rstudio · GitHub
cmake
DL_LIBRARYは、何なのかよく分かりませんがなくても動くっぽいです。ということで空にしてみました。rstudio/FindPAM.cmake at ebb054efe3e650de818a251b11087311e5169ed8 · rstudio/rstudio · GitHub
$ mkdir rstudio-0.99.1171/build $ cd rstudio-0.99.1171/build $ cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release -DUUID_LIBRARIES=/usr/local/include/ossp/uuid.h -DDL_LIBRARIES=
gmake
$ gmake
libclangのビルドでこける? なんかよくわからないのでギブアップ…
In file included from /home/freebsd/rstudio-0.99.1171/src/cpp/core/libclang/CodeCompleteResults.cpp:18: /home/freebsd/rstudio-0.99.1171/src/cpp/core/include/core/libclang/LibClang.hpp:54:8: error: expected member name or ';' after declaration specifiers int major() const { return major_; } ~~~ ^ /usr/include/sys/types.h:359:20: note: expanded from macro 'major' #define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ ^ In file included from /home/freebsd/rstudio-0.99.1171/src/cpp/core/libclang/CodeCompleteResults.cpp:18: /home/freebsd/rstudio-0.99.1171/src/cpp/core/include/core/libclang/LibClang.hpp:54:8: error: expected ')' /usr/include/sys/types.h:359:20: note: expanded from macro 'major' #define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ ^ /home/freebsd/rstudio-0.99.1171/src/cpp/core/include/core/libclang/LibClang.hpp:54:8: note: to match this '(' /usr/include/sys/types.h:359:19: note: expanded from macro 'major' #define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */