研究了很久,才知道如何修改原xft-2.0.1-r2.ebuild文件,使xft2.1.2可以在系统中正常工作。
原来的2.0.1版中,所有的xft lib文件都被装在/usr/lib中,然后在/usr/X11R6/lib中做一个由/usr/X11R6/lib/libXft.so->/usr/lib/libXft.2.0的链接。如果仅仅是把dosym语句改成/usr/X11R6/lib/libXft.so->/usr/lib/libXft.2.1.1这样的话,这个xft的有些功能就没有被用到,firefly补丁的效果也体现不出来。因此,就需要在src_compile()中加入--prefix=/usr/X11R6.这个一来,后面的dosym就可以注释掉了。但是这样有一个缺点:xft.pc将会被装在/usr/X11R6/lib/pkgconfig中,而不是/usr/lib/pkgconfig,有些依赖xft的程序将会在安装时认为系统中没有安装xft。经过多次试验,最后发现,将xft-2.1.2.ebuild修改成如下即可达到希望的效果:
[code:1]
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: $ #<-----将这一行改成这样比较不容易出问题。
IUSE=""
inherit eutils
S="${WORKDIR}/${P}" #<--这个表示使用ebuild文件的版本号
DESCRIPTION="X FreeType library, also known as Xft2.0"
SRC_URI="http://fontconfig.org/release/${P}.tar.gz" #<--同上
HOMEPAGE="http://fontconfig.org/"
# Update from XFree86 cvs tree
# epatch ${FILESDIR}/xft-2.0.1-cvs-update-20021221.patch
# Fix the Bold characters。 <--patch from firefly
epatch ${FILESDIR}/xft-2.1.2-CJK-fixwidth-embededbitmaps-artificial_bold-20030606.patch
pkg_preinst() {
if [ "${ROOT}" = "/" -a ! -d /root/.Xft -a \
-f /usr/X11R6/include/X11/Xft/XftFreetype.h ]
then
mv -f /usr/X11R6/include/X11/Xft /root/.Xft
fi
}
pkg_postinst() {
einfo "Your old Xft1.1 includes have been saved to /root/.Xft,"
einfo "if they were present ..."
}[/code:1]
上面的--prefix使用的是portage默认的/usr
To lucida:
手动安装是没有什么问题的,不会给emerge给发现,^Q^
只是安装后,xft.pc不在/usr/lib/pkgconfig中,有些程序configure的时候会认为系统中没有安装xft.当然,你可以从/usr/X11R6k/lib/pkgconfig中将xft.pc复制到/usr/lib/pkgconfig中,但总是一个麻烦.所有我就试验了一下,把xft的ebuild修改成正常可用的模式.
To kuye:
gentoo中官方发布的xft**.ebuild,最新也只有2.0.1-r2.我是自己修改后,将它放在/usr/local/portage/x11-libs/xft/下使用的.呵呵.