LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1511|回复: 18

x11-libs/cairo-1.8.6加入newspr初探

[复制链接]
发表于 2008-12-25 14:52:24 | 显示全部楼层 |阅读模式
今天升级到1.8.6,gentoo-china还没有加入newspr,于是掀起我的好奇心。
1.先建立一个新overlay,名字叫new-gentoo,把/usr/local/portage/layman/make.conf变成:
  1. PORTDIR_OVERLAY="
  2. /usr/local/portage/layman/gentoo-china
  3. $PORTDIR_OVERLAY
  4. /usr/local/portage/layman/new-gentoo
  5. "
复制代码

2.完善new-gentoo:
#mkdir -p /usr/local/portage/layman/new-gentoo/x11-libs/cairo/files
#mkdir -p /usr/local/portage/layman/new-gentoo/profiles
#vi /usr/local/portage/layman/new-gentoo/profiles/repo_name
repo_name内容是:new-gentoo

3.加入cairo的ebuild:
#cp /usr/portage/x11-libs/cairo/cairo-1.8.6.ebuild /usr/local/portage/layman/new-gentoo/x11-libs/cairo/cairo-1.8.6-r1.ebuild
#vi /usr/local/portage/layman/new-gentoo/x11-libs/cairo/cairo-1.8.6-r1.ebuild改变一些东西,参考gentoo-china的cairo-1.8.4-r1.ebuild,这里展示的不够好,但是大概就是那个意思:把不同的行数和内容展示出来。
  1. 5                EAPI="1"        #这个是什么意思?没有懂。
  2. 22         newspr? ( >=media-libs/freetype-2.3.7 )
  3. 23         !newspr? ( >=media-libs/freetype-2.1.9 )
  4. 61 pkg_setup () {
  5. 62     if use newspr && \
  6. 63         ! built_with_use --missing false x11-libs/libXft newspr; then
  7. 64         eerror "You need to rebuild libXft with newspr USE enabled"
  8. 65         eerror "before you can compile cairo with newspr."
  9. 66         die "Please rebuild libXft with newspr enabled."
  10. 67     fi
  11. 68 }
  12. 69
  13. 70 src_unpack() {
  14. 71     unpack ${A}
  15. 72     cd "${S}"
  16. 73
  17. 74     if use newspr; then
  18. 75         epatch "${FILESDIR}"/${PN}-02_no-private-symbol-export.patch
  19. 76         epatch "${FILESDIR}"/${PN}-04_lcd_filter.patch
  20. 77 #        epatch "${FILESDIR}"/${PN}-1.8.2-memoryleak.patch
  21. 78 #        epatch "${FILESDIR}"/${PN}-optimise-invert.patch
  22. 79     fi
  23. 80
  24. 81     # We need to run elibtoolize to ensure correct so versioning on FreeBSD
  25. 82     elibtoolize
  26. 83 }
复制代码

1)cairo-02_no-private-symbol-export.patch和cairo-04_lcd_filter.patch是没有改变的,复制就行。
cp /usr/portage/x11-libs/cairo/files/cairo-02_no-private-symbol-export.patch /usr/portage/x11-libs/cairo/files/cairo-04_lcd_filter.patch /usr/local/portage/layman/new-gentoo/x11-libs/cairo/files/

2)cairo-1.8.2-memoryleak.patch可以不要了,我看见cairo-1.8.6的src/cairo-xcb-surface.c的2416行下面已经加入了这个patch.

3)cairo-1.8.4-optimise-invert.patch可以不要了,cairo-1.8.6的src/cairo-matrix.c里面也加入了这个patch.

4.生成摘要:
#cd /usr/local/portage/layman/new-gentoo/x11-libs/cairo/
#ebuild cairo-1.8.6-r1.ebuild digest

但是我不知道为什么还是不行。USE="newspr" emerge -pvuDN world时显示是:
[ebuild     U ] x11-libs/cairo-1.8.6-r1 [1.8.4-r1] USE="X opengl -debug -directfb -doc -glitz -svg -xcb (-newspr%*)" 0 kB [1=>2]

Total: 1 package (1 upgrade), Size of downloads: 0 kB
Portage tree and overlays:
[0] /usr/portage
[1] /usr/local/portage/layman/gentoo-china
[2] /usr/local/portage/layman/new-gentoo

请教是什么原因?acevery您好,请问是你管理gentoo-china的cairo吗?每次问好像都有你回答。
发表于 2008-12-25 16:32:01 | 显示全部楼层
可能是因为你没有把newspr加到IUSE中吧。

其实你不需要把整个gentoo-china overlay在layman中重命名,你完全可以建立一个自己机子上的overlay,只有x11-libs/cairo一个软件的
具体的步骤你可以看看手册。

现在就弄cairo的补丁
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-25 16:56:14 | 显示全部楼层
Post by acevery;1929555
可能是因为你没有把newspr加到IUSE中吧。

其实你不需要把整个gentoo-china overlay在layman中重命名,你完全可以建立一个自己机子上的overlay,只有x11-libs/cairo一个软件的
具体的步骤你可以看看手册。

现在就弄cairo的补丁

是的,在IUSE里面加入"+newspr"就成功了,但我刚才忽略了,谢谢提醒。

还有我上面说了是建立自己的overlay,名字是new-gentoo,而且只有一个x11-libs/cairo的软件。

具体补丁我的理解有错误吗?还望指正,我是初次接触。
1)cairo-02_no-private-symbol-export.patch和cairo-04_lcd_filter.patch是没有改变的,复制就行。
cp /usr/portage/x11-libs/cairo/files/cairo-02_no-private-symbol-export.patch /usr/portage/x11-libs/cairo/files/cairo-04_lcd_filter.patch /usr/local/portage/layman/new-gentoo/x11-libs/cairo/files/

2)cairo-1.8.2-memoryleak.patch可以不要了,我看见cairo-1.8.6的src/cairo-xcb-surface.c的2416行下面已经加入了这个patch.

3)cairo-1.8.4-optimise-invert.patch可以不要了,cairo-1.8.6的src/cairo-matrix.c里面也加入了这个patch.
回复 支持 反对

使用道具 举报

发表于 2008-12-25 17:08:33 | 显示全部楼层
已经更新好了
回复 支持 反对

使用道具 举报

发表于 2008-12-25 17:11:00 | 显示全部楼层
Post by LaoLiulaoliu;1929589
是的,在IUSE里面加入"+newspr"就成功了,但我刚才忽略了,谢谢提醒。

还有我上面说了是建立自己的overlay,名字是new-gentoo,而且只有一个x11-libs/cairo的软件。


没有看清楚,不好意思。

Post by LaoLiulaoliu;1929589

具体补丁我的理解有错误吗?还望指正,我是初次接触。


没有错误,的确是不需要那两个补丁了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-25 18:06:30 | 显示全部楼层
谢谢。圣诞快乐!
还有EAPI="1"       
这个是什么意思?没有懂。
回复 支持 反对

使用道具 举报

发表于 2008-12-25 19:10:12 | 显示全部楼层
Post by LaoLiulaoliu;1929638
谢谢。圣诞快乐!
还有EAPI="1"       
这个是什么意思?没有懂。

是指定 EAPI的版本为1。
版本不同的EAPI提供了的特性会有一些差异。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-25 20:24:24 | 显示全部楼层
好的,谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-26 11:32:53 | 显示全部楼层
那么就是说也可以在后一个版本中指定EAPI="2"了?
那些patch是在./configure之前还是之后打的。mplayer的一个dshowserver.patch我一直想自己打,但是要求是./configure之后,make之前打补丁。
回复 支持 反对

使用道具 举报

发表于 2008-12-26 12:20:54 | 显示全部楼层
是的,也可以指定用EAPI2。
一般补丁都是在configure之前打的。dshowserver.patch是打在什么文件上面的?怎么会要求在configure之后打。
回复 支持 反对

使用道具 举报

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

本版积分规则

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