gentoo prefix重生(llvm/clang)
前天手贱,更新了mac上gentoo prefix的perl,然后发现git svn无法使用。更新perl其他组件的时候,遇到了一堆问题。
特别是subversion1.8,在gcc-apple下已经无法编译了。
gentoo prefix portage镜像
之前gentoo prefix的portage rsync服务器挂掉过,然后改了其他一台,但是速度都非常慢。看见阿里云有gentoo prefix portage
的镜像,尝试修改成了这个镜像,但是后面更新的软件,包括portage都会存在问题。
刚开始都准备放弃重新做gentoo prefix了,下载了新的bootstrap-prefix.sh,发现了两个地方:
1. 新的脚本中portage树从rsync.prefix.bitzolder.nl下载
2. 新的脚本已经直接开始使用llvm作为prefix的构建编译器了
因此,还是先将portage的同步地址改了。由于新的portage已经去掉了make.conf中的SYNC变量,取而代之的是多了一个repos.conf目录
来存放仓库配置。因此在$EPREFIX/etc/portage/repos.conf下创建gentoo_prefix.conf文件,内容是:
[DEFAULT]
main-repo = gentoo_prefix
[gentoo_prefix]
location = /Users/babydragon/Gentoo/usr/portage
sync-type = rsync
sync-uri = rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix
更新llvm
刚开始用了阿里云的镜像,emerge了llvm之后没有问题,但是加上了clang的USE之后,怎么都emerge不了。切换成官方镜像之后,又遇到llvm3.5.2循环依赖。
搜索了下发现bootstrap-prefix脚本中是bootstrap先emerge了llvm 3.4。按照这个方式和漫长的等待,llvm 3.4 emerge完成之后,再升级到3.5,
所有依赖的cxx包都能够正常安装了。
然后就是更新系统了,因为之前是perl损坏,直接使用:
perl-cleaner --all
来更新所有perl的依赖,发现编译的时候还有问题,看上去没有使用新的clang。继续查看脚本,发现stage2的时候,脚本会向make.conf文件中追加:
CC=clang
CXX=clang++
BUILD_CC=clang
BUILD_CXX=clang++
这几个变量,强制将编译器改成clang/clang++。
改完之后,git, svn和其他Perl的依赖,都能够正常的emerge了,git svn终于可以继续使用了。由于使用了llvm新版本,以后emerge boost等的时候,应该不会再有问题了吧。