天天看點

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