Buildout食谱,用于从egg列表创建Nix表达式
项目描述
collective.recipe.nix
这是一个实验性的Buildout食谱,用于从Buildout eggs列表创建nix表达式。这是一个正在进行中的工作。请,贡献。
最小化Buildout部分应包括 recipe 和 eggs
[releaser]
recipe = collective.recipe.nix
eggs = zest.releaser[recommended]
该食谱生成三种类型的表达式
基于 [name].nix 的 mkDerivation,可用于 nix-shell 和 nix-build
基于 [name]-env.nix 的 buildEnv,可用于 nix-build
基于 [name]-[package].nix 的 buildPythonPackage,可用于 nix-env -i -f
对于像Plone这样的大型项目,建议使用本地镜像包 index / find-links,以避免在食谱解析每个包的fetchurl信息时出现连接问题。可能的解决方案包括将 allow-from-cache 设置为 true,以允许食谱使用配置的Buildout下载缓存(并创建 file:// URL),或者只需使用由食谱创建的累积缓存再次运行Buildout([~/][.]collective.recipe.nix.cfg)。
已知问题: 如果要求包在 setup_requires 中定义了设置依赖项,则必须手动使用此食谱的 propagated-build-inputs 选项来定义这些依赖项。
食谱选项
- eggs
要生成表达式的包列表
- name
定义用于结果推导和生成的文件名的字符串(默认为部分名称)
- prefix
设置生成输出的前缀(或路径)的字符串(默认为工作目录)
- parts
要安装到基于 mkDerivation 的表达式的现有Buildout部分列表(默认为除了当前部分之外的所有部分)
- outputs
生成的完整表达式文件列表,用于过滤要生成的输出(默认不生成任何内容,生成所有内容)
- 允许从缓存中获取
布尔值(true)允许生成的表达式使用来自 buildout 下载缓存的包(默认为 false)
- 构建输入
生成表达式所需从 nixpkgs 获取的附加构建输入列表(在 nix-shell 环境中可用),或为每个包的 buildPythonPackage-expression 注入构建输入的 package=nixpkgsPackage 映射列表
- 传播的构建输入
为包注入附加要求的 package=other.package 映射列表(通常用于启用一些附加功能)
- nixpkgs
使用现有包从 nixpkgs 而不是生成自定义 buildPythonPackage 的 package=pythonPackages.package 映射列表(对于像 Pillow 这样的包很有用,这些包需要额外的注意才能正确构建)
- urls
用于显式定义包下载 URL 和 MD5 校验和的 package=url#md5=hash 映射列表,对于自动解析失败的情况
通用用法示例
首先,使用 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.nix
eggs = zest.releaser[recommended]
运行 buildout
$ 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 优化的 buildout 版本(可在 nixpkgs 中找到)一起,此配方可以用于使用 buildout 安装构建 Nix 衍生品,如 Nix 衍生品构建器中的操作(请参阅当前示例实现的生成 mkDerivation 表达式)
[buildout]
extends = https://dist.plone.org/release/5-latest/versions.cfg
parts = plone
versions = versions
[instance]
recipe = plone.recipe.zope2instance
eggs = Plone
user = admin:admin
environment-vars =
PTS_LANGUAGES en
zope_i18n_allowed_languages en
var = /tmp
[plone]
recipe = collective.recipe.nix
parts = instance
eggs = ${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)
更新了预定义的传播构建输入,以满足一些已知的设置要求 [datakurre]
1.0.2 (2015-07-28)
修复了 c.recipe.nix 部分包含在结果 nix 表达式中的问题 [datakurre]
1.0.1 (2015-07-28)
修复了 buildout 不能包含 “ 字符的问题 [datakurre]
修复了从构建的衍生品中移除 ~/.installed.cfg 的问题
1.0.0 (2015-07-26)
第一个版本。
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
collective.recipe.nix-1.0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 157c7c19fed2c75cbe9355d5721cd28b0bb5228a5c1fd22fdfc2b947af0731cf |
|
MD5 | 15e542af5d3e3e1051cedbbdf8d9c3f4 |
|
BLAKE2b-256 | 183b67256119721b31685043d48c3e9cad36b325d05c7dde610d647d71abd653 |