天天看点

mac gentoo-prefix安装git svn

之前参照yegal的文章在mac上安装了gentoo-prefix。但是在emerge git的时候,会发现如果增加了subversion这个use,就会编译失败。

从编译失败的错误上,可以看出,编译失败的来源是svn相关的代码,然后错误是链接的时候提示一些符号找不到:

[cce]

undefined symbols for architecture x86_64:

“_libintl_ngettext”, referenced from:

_show_date_relative in libgit.a(date.o)

“_libintl_gettext”, referenced from:

_warn_on_inaccessible in libgit.a(wrapper.o)

_xgetpwuid_self in libgit.a(wrapper.o)

ld: symbol(s) not found for architecture x86_64

[/cce]

大致可以看出,是intl相关的库没有链接。在gentoo的bugzilla上也查到了类似的bug。按照附件提供的补丁,需要判断当前系统为mac的时候,增加-lintl,以链接intl这个库。

除了这个库之外,还有一个iconv相关的符号找不到。bug里面没有描述。在另一台gentoo的机器上用e-file查询了之后,发现原生linux的iconv是由glibc提供的。但是prefix是不能自由安装glibc的库的。但是系统里面已经安装了dev-libs/libiconv这个包,提供了iconv相关的库。因此和前面一样,需要手工在链接的时候增加-liconv。

最后修改完的ebuild文件大致为:

[cce lang=”diff”]

— git-1.9.2.ebuild.old 2014-04-20 15:10:34.000000000 +0800

+++ git-1.9.2.ebuild 2014-04-20 15:09:54.000000000 +0800

@@ -324,6 +324,7 @@

if use subversion ; then

cd “${s}”/contrib/svn-fe

+ [[ ${chost} = *-darwin* ]] && extlibs=”${extlibs} -lintl -liconv”

git_emake extlibs=”${extlibs}” || die “emake svn-fe failed”

if use doc ; then

git_emake svn-fe.{1,html} || die “emake svn-fe.1 svn-fe.html failed”

转载自:https://coolex.info/blog/431.html