跳转到主要内容

Buildout食谱,用于从egg列表创建Nix表达式

项目描述

collective.recipe.nix

这是一个实验性的Buildout食谱,用于从Buildout eggs列表创建nix表达式。这是一个正在进行中的工作。请,贡献

最小化Buildout部分应包括 recipeeggs

[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 而不是生成自定义 buildPythonPackagepackage=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 (11.8 kB 查看哈希)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面