从鸡蛋列表创建nix表达式的构建方法
collective.recipe.nix的Python项目详细描述
collective.recipe.nix
这是一个从 一份建造鸡蛋的清单。这是正在进行的工作。请,contribute。
最小的构建部分应该包括recipe和eggs:
[releaser]recipe=collective.recipe.nixeggs=zest.releaser[recommended]
配方生成三种表达式:
- 基于mkderivation的[name].nix可用于nix shell和nix build
- 基于build env的[name]-env.nix可用于nix build
- 基于[name]-[package].nix的buildpythonpackage可用于nix env-i-f
对于像plone这样的大型项目,建议使用本地镜像包 index/find-links以避免配方解析时出现连接问题 每个包获取url信息。可能的补救措施包括设置 allow-from-cache到true允许配方使用配置的构建 下载缓存(并创建file://url),或者只运行构建 再次借助配方创建的累积缓存 ([~/][.]collective.recipe.nix.cfg)。
已知问题:如果需求包在 setup_requires,必须使用 此配方的已传播生成输入选项。
配方选项
- 鸡蛋
- 要为其生成表达式的包列表
- name
- 用于定义结果派生和 生成的文件名(默认为部件名)
- 前缀
- 为生成的输出设置前缀(或路径)的字符串(默认为工作 目录)
- 部分
- 基于MKDebug的表达式中现有的构建部分的列表 (默认为除当前节之外的所有节)
- 输出
- 筛选要生成的输出的完整生成表达式文件名列表 (默认为“无”以全部生成)
- allow from cache
- 允许生成的表达式使用来自 构建下载缓存(默认为false)
- 生成输入
- 来自nixpkgs的生成表达式的其他生成输入列表(将 可用于nix shell环境)或^{tt12}列表$ 为每个包的 buildPythonPackage-表达式
- 传播的生成输入
- 要插入其他映射的package=other.package映射列表 对软件包的要求(通常启用一些附加功能)
- nixpkgs
- url
- 显式定义包的package=url#md5=hash映射列表 如果配方无法解析,请下载url和md5校验和 它自动
通用示例
首先,用buildout定义./default.nix:
with import <nixpkgs> {}; stdenv.mkDerivation { name = "myEnv"; buildInputs = [ libxml2 libxslt pythonPackages.ldap pythonPackages.pillow pythonPackages.readline pythonPackages.zc_buildout_nix ]; shellHook = '' export SSL_CERT_FILE=~/.nix-profile/etc/ca-bundle.crt ''; }
以及示例./buildout.cfg:
[buildout]parts=releaser[releaser]recipe=collective.recipe.nixeggs=zest.releaser[recommended]
运行构建:
$ nix-shell --run buildout-nix
现在您应该可以使用以下推荐的插件运行zest.releaser:
$ nix-shell releaser.nix --run fullrelease
或者使用以下命令将zest.releaser安装到当前的nix配置文件中:
$ nix-env -i -f releaser-zest_releaser.nix
构建plone
的示例再加上nixpkgs优化的构建版本(nixpkgs中提供),这个 配方可用于使用与nix中相同的buildout install构建nix派生 派生生成器(请参见生成的基于mkderivation的表达式 当前示例实现):
[buildout]extends=https://dist.plone.org/release/5-latest/versions.cfgparts=ploneversions=versions[instance]recipe=plone.recipe.zope2instanceeggs=Ploneuser=admin:adminenvironment-vars= PTS_LANGUAGES en zope_i18n_allowed_languages envar=/tmp[plone]recipe=collective.recipe.nixparts=instanceeggs=${instance:eggs}outputs=plone.nix[versions]Pillow=setuptools=zc.buildout=zc.recipe.egg=
$ nix-shell --run buildout-nix
$ nix-build plone.nix -o plone
$ plone/bin/instance fg
更改日志
1.0.3(2015-08-30)
- 使用某些已知的设置更新预定义的传播生成输入需要 [数据库]
1.0.2(2015-07-28)
- 修复在生成的nix exp中包含c.recipe.nix部分的问题表达式 [数据库]
1.0.1(2015-07-28)
- 修复BuildOut不能包含“字符”的问题 [数据库]
- 修复以从生成的派生中删除~/.installed.cfg
1.0.0(2015-07-26)
- 第一次释放。