从鸡蛋列表创建nix表达式的构建方法

collective.recipe.nix的Python项目详细描述


collective.recipe.nix

这是一个从 一份建造鸡蛋的清单。这是正在进行的工作。请,contribute

最小的构建部分应该包括recipeeggs

[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-cachetrue允许配方使用配置的构建 下载缓存(并创建file://url),或者只运行构建 再次借助配方创建的累积缓存 ([~/][.]collective.recipe.nix.cfg)。

已知问题:如果需求包在 setup_requires,必须使用 此配方的已传播生成输入选项。

配方选项

鸡蛋
要为其生成表达式的包列表
name
用于定义结果派生和 生成的文件名(默认为部件名)
前缀
为生成的输出设置前缀(或路径)的字符串(默认为工作 目录)
部分
基于MKDebug的表达式中现有的构建部分的列表 (默认为除当前节之外的所有节)
输出
筛选要生成的输出的完整生成表达式文件名列表 (默认为“无”以全部生成)
allow from cache
允许生成的表达式使用来自 构建下载缓存(默认为false
生成输入
来自nixpkgs的生成表达式的其他生成输入列表(将 可用于nix shell环境)或^{tt12}列表$ 为每个包的 buildPythonPackage-表达式
传播的生成输入
要插入其他映射的package=other.package映射列表 对软件包的要求(通常启用一些附加功能)
nixpkgs
>使用现有包的^ {tt15}$映射列表 从nixpkgs而不是生成自定义的buildPythonPackage(对于 像枕头一样的包装,需要额外的护理才能正确制作)
url
显式定义包的package=url#md5=hash映射列表 如果配方无法解析,请下载url和md5校验和 它自动

See the project repository for configuration examples.

通用示例

首先,用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

See the project repository for more configuration examples.

构建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)

  • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误