构建lxml的配方
项目描述
- 版本::
- 0.8.1
摘要
一个构建静态链接lxml库的buildout配方。
用法
请参阅目录 src/z3c/recipe/staticlxml 中的readme。
变更日志
请参阅 CHANGES.txt 文件。
贡献者
Steve McMahon
Reinout van Rees
Christian Zagrodnick
Remco Wendt
详细文档
支持选项
该配方支持以下选项
- egg
设置为所需的lxml egg,例如 lxml 或 lxml==2.1.2
- libxslt-url, libxml2-url
从这些库下载源tarball的URL。如果没有设置,将搜索buildout的[versions]部分,如果没有找到,则使用默认值
http://dist.repoze.org/lemonade/dev/cmmi/libxslt-1.1.24.tar.gz http://dist.repoze.org/lemonade/dev/cmmi/libxml2-2.6.32.tar.gz
- build-libxslt, build-libxml2
设置为 true(默认)如果应该构建,否则设置为 false。对于静态构建需要设置为 true。
- libxslt-patch, libxml2-patch
应用于库的可选补丁文件的名称
- static-build
布尔值,true 或 false。在OS X上默认为 true。
- xml2-location
如果未构建 libxml2,则需要。
- xslt-location
如果未构建 libxslt,则需要。
- xslt-config
到 xslt-config 二进制的路径。如果 build-libxslt 设置为 true,则不需要。
- xml2-config
到 xml2-config 二进制的路径。如果 build-libxml2 设置为 true,则不需要。
- force
设置为 true 以强制每次重建库。
示例用法
这是一个示例 buildout
[buildout] parts = lxml pylxml develop = . log-level = DEBUG download-directory = downloads download-cache = downloads versions=versions [versions] lxml = 2.1.3 [pylxml] recipe=zc.recipe.egg interpreter=pylxml eggs= lxml [lxml] recipe = z3c.recipe.staticlxml egg = lxml
这将构建一个 静态 版本的 lxml egg,也就是说,它不会依赖于 libxml2 和 libxslt。
egg 安装在你的 buildout 的 egg 目录中(它不会被安装为开发 egg)。如果你在 ~/.buildout/default.cfg 中配置了全局的 eggs-directory,静态的 lxml egg 因此被放置在那个全局 egg 目录中。
如果你为 lxml egg 指定了一个特定版本,则会检查 egg 目录中是否存在现有的 lxml egg。如果找到,则按原样使用。当然,指定 force = true 的意思是不会执行此检查。
合理性检查
这并不是对配方可以配置的所有方式的完整练习,而是一个合理性检查,以确保所有部分(特别是,我们依赖的配方)按预期工作。
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = lxml ... newest = false ... ... [lxml] ... recipe = z3c.recipe.staticlxml ... libxml2-url = file://%s/foo.tgz ... libxslt-url = file://%s/foo.tgz ... xml2-config = none ... xslt-config = none ... egg = lxml ... static-build = false ... """ % (distros, distros))
>>> print system('bin/buildout') Installing lxml. lxml: CMMI libxml2 ... lxml: Using libxml2 download url /distros/foo.tgz... libxml2: Unpacking and configuring configuring foo... echo building foo building foo echo installing foo installing foo lxml: CMMI libxslt ... lxml: Using libxslt download url /distros/foo.tgz... libxslt: Unpacking and configuring configuring foo... echo building foo building foo echo installing foo installing foo... lxml: Building lxml ...
贡献者
Stefan Eletzhofer,作者
Steve McMahon
Reinout van Rees
Christian Zagrodnick
变更历史
0.10 (2013-12-09)
添加了使用 cmmi 的 patch / patch_options 命令内部修补 libxslt 和 libxml2 的可能性 (#7) [shanx]
修复了在 Suse Linux 等某些 64 位 Linux 上运行的问题。 [icemac]
pep8 更改 [seletz]
0.9 (2013-03-18)
检查 ld 是否会接受 –no-as-needed 链接标志而不会出现“未知选项”错误。如果接受,则使用该标志。这应该可以解决缺失 clock_gettime 的问题。 [smcmahon]
寻找 gcc >= 4.5。如果找到,则添加 LDFLAGS 以强制 librt 的 no-as-needed 链接。这应该可以解决最近 gcc 的缺失 clock_gettime 问题。 [smcmahon]
0.8.1(未发布)
BUGFIX:CVE-2011-3919 添加 CVE-2011-3919 的内联补丁,直到我们从上游获得修复。 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3919 http://people.canonical.com/~ubuntu-security/cve/2011/CVE-2011-3919.html http://git.gnome.org/browse/libxml2/commit/?id=5bd3c061823a8499b27422aee04ea20aae24f03e
0.8 (2011-08-12)
更新默认的 libxml/libxslt 下载位置为 http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz 和 http://xmlsoft.org/sources/libxslt-1.1.26.tar.gz 分别。这些更新版本修复了 jladage 报告的 Lion 编译问题。
使用 Python 的 doctest 模块而不是已弃用的 zope.testing.doctest。
0.7.2 (2010-08-13)
使烟测试更加模糊,以便在使用较新的 zc.recipe.cmmi 版本或在 Mac OS X 上运行测试时忽略输出差异。
通过在 libxml/libxslt 构建中添加 –with-pic 作为额外选项来修复 64 位 Linux 上的“relocation R_x86_64_32”错误。 [reinout]
0.7.1 (2009-05-18)
删除了意外检查的 pdb [wosc]
更新了我们使用 zc.recipe.cmmi 的方式,从 1.2.0 版本开始 需要 在构造时知道 URL。(新的用法与 1.1.x 兼容)。 [wosc]
0.7 (2009-05-18)
按照 zc.recipe.egg 的要求,以换行符分隔的方式传递 include-dirs、library-dirs 和 rpath。这修复了 Linux 上的非静态构建。 [zagy]
请在 buildout 的 [版本] 部分查看 libxml2/libxslt-URLs [wosc]
0.6 (2009-03-19)
关闭构建 exslt crypt 功能。该功能在 exslt.org 本身已不再存在。它使用 libgcrypt,这可能导致在 osx 和有时在 linux 上出现关于 ‘gcry_*’ 的运行时错误。[reinout]
0.5 (2009-03-16)
该配方在执行昂贵的下载/编译之前检查现有的 egg。之前,该检查是在编译 libmxl/libxslt 后隐式完成的。如果这不是一个合适的静态 egg,将打印 egg 名称并警告删除它。[reinout]
修复了 readme 中的错别字。[seletz]
0.4 (2009-02-18)
修复以防止频繁重建 lxml,从而减少 lxml 税。[seletz]
0.3 (2008-12-01)
仅在 darwin 上添加 iconv。[seletz]
0.2.1 (2008-11-28)
在 OS X 上将 static-build 默认设置为 true [seletz]
将 build-libxslt 和 build-libxml2 默认设置为 true [seletz]
记录默认选项 [seletz]
0.2 (2008-11-27)
修复文档 REsT [seletz]
由于 setup.cfg 故障而重新发布 [seletz]
0.1 (2008-11-27)
添加 iconv 库,它使完全静态构建成为可能。这实际上是 lxml setup 中的一个错误。[seletz]
更新文档,删除垃圾代码 [seletz]
添加了适用于 Mac OS X 的调整。[seletz]
添加了 liblxml2、libxslt 和 lxml 的基本构建步骤。[seletz]
使用 ZopeSkel 创建了配方。[seletz]