找回密码
 注册
查看: 3532|回复: 7

我的xft-2.1.2.ebuild文件

[复制链接]
发表于 2003-10-4 15:19:18 | 显示全部楼层 |阅读模式
研究了很久,才知道如何修改原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/"

LICENSE="fontconfig"
SLOT="0"
KEYWORDS="~x86 ppc alpha sparc hppa arm"

RDEPEND="x11-base/xfree
        >=media-libs/fontconfig-2.1-r1"

DEPEND="${RDEPEND}
        >=sys-devel/autoconf-2.53a"

PROVIDE="virtual/xft"

src_unpack() {
        unpack ${P}.tar.gz  #<--这个应该不用再解释了。

        cd ${S}

        # 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

        einfo "Running autoconf..."
        export WANT_AUTOCONF_2_5=1
        autoconf --force
}

src_compile() {
        econf --x-includes=/usr/X11R6/include \
                --x-libraries=/usr/X11R6/lib \
                --includedir=/usr/X11R6/include \
                --libdir=/usr/X11R6/lib \  #<--加入这一句
                || die "Xft2 config failed"
        emake || die "Xft2 make failed"
}

src_install() {
        einstall pkgconfigdir=${D}/usr/lib/pkgconfig \ #<--这个很容易明白,将xft.pc装在/usr/lib/pkgconfig中
                datadir=${D}/usr/share \
                libdir=${D}/usr/X11R6/lib \ #<--将xft的lib都装在这个文件夹中,下面的意思类似
                includedir=${D}/usr/X11R6/include || die

}

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
 楼主| 发表于 2003-10-4 15:25:35 | 显示全部楼层
如果是自己编译的话,可能在install时要用这样的命令:
#./configure --prefix=/usr/X11R6
#make
#pkgconfigdir=/usr/lib/pkgconfig make install
不过我没有试过,不知行不行。
使用emerge 安装的话,在emerge xfree时会出现block标识。这个是比较麻烦的事,不知如何解决?
回复

使用道具 举报

发表于 2003-10-4 17:54:58 | 显示全部楼层
不错不错,收了。

不过因为 xft 在 gentoo 中被 mask 了,所以我是手动安装的。
编译的时候 xrender.pc 找不到,还好不影响编译。
我等一下去修改一下我的那篇 xft 汉化篇,把 xft 安装部分链接你这里来。
==========
(刚 emerge -s xft 了一下,怎么现在 xft 解禁了吗?!)
回复

使用道具 举报

发表于 2003-10-4 19:44:52 | 显示全部楼层
我直接手工编译的,
ld.so.conf里面,/usr/local/lib在/usr/X11R6/lib的前面。。所以升级X也没关系
回复

使用道具 举报

 楼主| 发表于 2003-10-4 23:04:06 | 显示全部楼层
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/下使用的.呵呵.
回复

使用道具 举报

发表于 2003-10-22 19:09:06 | 显示全部楼层
能否将你的ebuild作为附件帖出来,我剪贴保存后编译出错
回复

使用道具 举报

 楼主| 发表于 2003-10-22 20:13:45 | 显示全部楼层
附件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2003-10-23 09:16:35 | 显示全部楼层
谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-12 05:17 , Processed in 0.022930 second(s), 17 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表