|
|
在将我的gnome升级到最新版本的时候,我的Mozilla遇到了编译错如下:
nsStackFrameUnix.cpp
nsStackFrameUnix.cpp: In function 'void DumpStackToFile(FILE*)':
nsStackFrameUnix.cpp:96: error: 'JB_BP' was not declared in this scope
gmake[3]: *** [nsStackFrameUnix.o] Error 1
gmake[3]: Leaving directory `/var/tmp/portage/mozilla-1.7.12-r2/work/mozilla/xpcom/base'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/var/tmp/portage/mozilla-1.7.12-r2/work/mozilla/xpcom'
gmake[1]: *** [tier_2] Error 2
gmake[1]: Leaving directory `/var/tmp/portage/mozilla-1.7.12-r2/work/mozilla'
make: *** [default] Error 2
!!! ERROR: www-client/mozilla-1.7.12-r2 failed.
在gentoo的bugzillar中找到了这个问题,其描述是glibc2.4不再输出JB_BP。mozilla网站上已有解决问题的补丁https://bugzilla.mozilla.org/show_bug.cgi?id=323853. 而如何将补丁应用到现有的ebuild中,使得安装顺利进行,我花了近一小时的摸索而解决,兹分享如下:
查看mozillar-2.7.x(我的是在2-7-12-r2版本)的ebuild,可以发现mozilla编译需要3个源代码包:mozilla-1.7.12-patches-1.1.tar.bz2,mozilla-1.7.12-source.tar.bz2,mozilla-launcher-
1.50.bz2.
第一个包包含了所有要应用到源中去的补丁。现在需要做的事情,就是把所下载的新补丁,加入到这个包中去。假设新下载的补丁为dumptrack.patch, 则
#bzip2 dumptrack.patch
假设你已经下载了补丁包
#cd /usr/portage/distfiles
#tar xvjf mozilla-1.7.12-patches-1.1.tar.bz2
#cp (download_path)/dumptrack.patch.bz2 patch
#rm mozilla-1.7.12-patches-1.1.tar.bz2
#tar -cvjf mozilla-1.7.12-patches-1.1.tar.bz2 patch/
现在已经把补丁加进去了,但是由于包已经被修改,必须重新生成其MD5校验码并加入到digest文件中去,才能够正常安装,否则在第一步校验的时候就会出现错误信息。
#openssl dgst mozilla-1.7.12-patches-1.1.tar.bz2
将所得的MD5校验码加入www-client/mizilla/files/digest-mozilla-2.7.12-r2.ebuild文件中,替换对应原来的MD5校验码,需要注意的是由于加入了新patch包的大小也变了,也许要在文件中做对应的修改。而修改了files/digest-mozilla-2.7.12-r2.ebuild文件之后,同样需要更换MD5码,并加入到www-client/mozilla/Menifest文件中,做相应的替换。
到现在,ebuild已经不知道自己的源文件包已被修改,这时便可以开始安装了
#emerge -av mozilla
现在安装正常进行了,但是为了在 emerge --sync的时候自己所做的更改不被覆盖,还需要将www-client/mozilla下的东西,复制到portage_overlay当中去。 |
|