Emacs-CVS 编译的异常和处理

snakehsu 发表于 2008-05-01 07:33:36

前段时间体验了一下 ArchLinux 和 Fedora 8,前者对于 realtime 内核的支持不佳(好吧,其实是我编译内核可耻地失败了,而那个软件包的机制也有问题,在编译新内核的模块时竟然把当前内核的模块都删了,导致旧内核不能启动),后者界面是华丽的,软件安装也比多年以前的 FC1 有了翻天覆地的变化,但是 PulseAudio 在 64-bit 机器上与 Skype 配合不佳——由于 alsa 的 PulseAudio 插件缺少64位版本的缘故。看来上了 Gentoo 的贼船还是很难下来的 :) 重新装了 Gentoo i686 版本后试图安装 emacs-23.0.60,也就是 app-editors/emacs-cvs 里的 emacs-cvs-23.0.9999。

前段时间有人反映这个版本的 emacs 编译不过,我这里倒是没有问题,但是运行时,如果是使用 USE flag="gtk" 编译得到的,运行时会报错出现 Gtk-CRITICAL **: gtk_box_pack_start ... chaild->parent=NULL 这样的信息,而其他 X toolkit 界面根本就不给出信息,也看不到界面。因为用 emacs -nw 和 emacs --disable-font-backend 是可以运行 emacs 的,所以怀疑是 libXft 或 freetype 的问题。但 emerge 这两个包多次后问题依旧。因为是新装的系统,所以按照惯例 emerge -uDN world 了一下,其间 mktemp 和 coreutils 互相 block,用这个帖子的方法解决了。之后费了老鼻子劲 emerge emacs-cvs 仍然没有解决问题。但重启一次后居然 emacs 就可以正常启动了。

其实还不是太正常……这个版本(2008年4月30日)的 emacs 在我的机器上启动时报告 Warning (initialization): Building Emacs overflowed pure space。Google 了一下,是代码树中 src/puresize.h 里定义的 PURESIZE 偏小的问题。似乎这个常量近几年来都是越定义越大,不过总有不够用的时候。在 emerge 或 make 的时候可以用 tee 记录编译过程保存到文件,然后打开文件搜寻 pure 可以找到实际使用的 PURESIZE,一般有问题的都是多了 1KB 多。这个错误有可能引起内存泄漏,虽然不一定严重。解决方法就是修改 puresize.h 增大 PURESIZE。可以直接改 #define PURESIZE 这行里的数字,但比较不那么 dirty 的办法是改 #define SYSTEM_PURESIZE_EXTRA 0 这行为 #define SYSTEM_PURESIZE_EXTRA 60000。之后的问题就是如何把改动放进 emerge 工作目录中。emacs-23.0.9999 有个 USE 可以保留部分代码在 /usr/share/emacs/src,但是 emerge 的时候似乎并不用它,我也还不清楚怎么样让 emerge 不使用新 cvs 的代码而用这部分。解决方法仍然很 dirty:改了 /usr/share/emacs/src/puresize.h 之后 emerge emacs-cvs,趁 work 目录出现而还没开始编译前把这个头文件拷过去。

总结的一条重要经验就是 gentoo 新系统,特别是用比较旧的版本和 profile 装的,一定要 emerge -uDNav world,可以省却不少麻烦。当然 emerge world 的时候也得注意 block 的处理。像这次 mktemp 和 coreutils 的冲突问题,Gentoo Forums 上也有不小心把 coreutils 删除,不得不用 chroot 或者重装解决问题的。
关键词(Tag): emacs cvs xft portage


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定