跳到主要内容

2016-09-09:一般讨论

时间:14:00 UTC

Hangout 链接:https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie

与会者

  • Jonathan Helmus、Filipe、Michael、Ray、Eric Dill、Björn Grüning、Matt Craig(迟到)

常设议程

  • 仓库数量?~1100
  • 贡献者数量?~220
  • 新的核心开发者?

笔记

Bioconda 更新

  • 当源 tarball 消失时,为 conda-build 2.0 重建二进制文件。Bioconda 正在存档源文件。
  • 自动化流程以存档源 tarball 并在容器中进行测试(作为创建捆绑容器以运行软件包的服务非常棒)。

核心开发者

  • Eric Dill(邀请)
  • Peter M. Landwehr(已邀请)

拆分构建

  • conda-build 问题(交叉引用?)conda/conda build#1338
  • continuum 编译器工具链一致地使用 gcc (Linux)、clang 和 gfortran (OS X)。

预发布版本/RC

  • 需要一位倡导者来撰写提案!

    *   Eric Dill will take this on. Hopefully a CFEP will land within one week, 2016-09-16
  • Eric 建议同时拥有 dev 和-dev 标签。前者适用于“前沿人士”,而后者适用于只想测试/使用某个特定事物(加上任何依赖项)的新版本的人。

  • dev 是个糟糕的名字。这些软件包更多用于测试而不是开发。测试?RC?

  • Filipe 认为我们不应该接受早于 RC 的版本(并非真的不接受,而是鼓励人们将他们的 dev 版本称为 RC。想法是 conda-forge 是一个发布二进制文件的地方,例如,夜间测试构建超出了 IMO 的范围。)

feather-feedstock 维护者提出的问题

  • 他们希望使用现代 Visual Studio 构建 Python 2.7,conda-forge 应该向他们建议,这将创建一个与 conda-forge 兼容的不同生态系统。

conda-build 2.0 和 conda-build-all。Mike 询问我们是否准备好使用 conda-build 2.0。conda-forge 需要检查

  • conda-build <2.0 的 pins 在哪里
  • 检查 conda-inspect
  • 检查上传脚本
  • 检查 conda-smithy

在构建脚本中使用 pip。

  • 在 Windows 上需要 conda > 4.2
  • 需要检查 entry_points 是否必须在 recipe 中声明。

议程

  • 下次会议:我们可以安排在 2016-09-16 吗?

  • 来自 bioconda 社区的更新。Tarball 存档和自动容器(Docker、rkt)构建。

  • 存档:bioconda/bioconda recipes#2194

  • 容器:bioconda/bioconda recipes#2297

  • conda-forge 是否对类似的集成感兴趣?

  • OSX - 恢复到可用、连贯的堆栈

  • libc++ (clang) vs libstdc++ (gcc/g++)

  • Apple 的 Blocks C 扩展(这些类似于 lambdas)不在最新的(或非 Apple)GCC 中:https://gcc.gnu.org/ml/gcc/2009-09/msg00264.html

  • 我们是否可以将 gfortran 和 LLVM 系统/c++ 库链接在一起,而不违反具有运行时异常的 GPL (compiler_rt + libc++) - 如果链接静态完成,据我所知不行,并且 gfortran 可以在 compiler_rt 之上构建吗? 这些都是很大的未知数。

  • clang 所需的最低 OSX 版本(我认为是 10.8?)

  • 实际上,从 10.7 开始 clang 就可用了。因此,考虑到您的兼容性约束,这将是可行的。

  • 此外,我看到的所有参考文献都表明,这仍然具有 C++11 支持。

  • 与 defaults 的兼容性(基于 10.7 构建,使用 gcc)- 人们会在哪里遇到问题?我认为只有在混合软件包时 - 我们如何确保我们拥有所有需要的软件包?

  • 与 Continuum 的元数据统一 - 我们是否可以接受在 about 部分添加一些字段以匹配 Anaconda 标准?

  • 示例见 https://github.com/ContinuumIO/anaconda-recipes/blob/master/colander/meta.yaml

  • license_family

  • doc_url

  • dev_url

  • 将 summary 限制为 80 个字符(更长的内容使用 description)

  • 我们可以将其添加到 linter,并在我们更新 recipes 时添加到 recipes 中吗?

  • 我们应该对 unicode 提供什么支持?任何支持?仅限 Summary/description?

  • CUDA/cuDNN 更新

  • 改进基础设施

    *   Better workflows with staged-recipes

    * Fast finish AppVeyor on merge ( [conda forge/staged recipes#1142](https://github.com/conda-forge/staged-recipes/pull/1142) )
    * Drop Travis CI matrix ( [conda forge/staged recipes#1234](https://github.com/conda-forge/staged-recipes/pull/1234) )
    * Use CircleCI for feedstock generation ( [conda forge/staged recipes#916](https://github.com/conda-forge/staged-recipes/issues/916) )
    * Keeping recipes out of PRs ( [conda forge/staged recipes#942](https://github.com/conda-forge/staged-recipes/issues/942) )
    * Bank work in partial conversion ( [conda forge/staged recipes#915](https://github.com/conda-forge/staged-recipes/issues/915) )
  • 通知(我们如何掌握它们)

  • MSYS2

    *   Available on defaults - was in conda 4.1.7, but that was pulled.  Coming in 4.1.8.
    • 讨论 Ray Donnelly 在 MSYS2 软件包方面的工作,以及我们希望如何使用这些软件包并将它们集成到 conda-forge 中。
    • 一些需要考虑的用例:OpenBLAS、FFTW、构建工具,其他?
  • 二进制数据

    *   Do we include it in recipes?
    • 如果我们允许,我们允许哪些类型(例如图标)?
    • 我们如何验证许可?
    • 我们如何验证它们的安全性?
  • Dev 版本:它们在哪里发布?

    *   Do we do them at conda-forge?

    * Maybe add a label.

    * Do we let others do them with a feedstock on their own repo?
    • 我们如何执行我们决定的任何事情?
  • 频道镜像

    *   Can this point be a little bit explained? I thought about this as well and would like to contribute to this point.

    * Eric Dill has put together a script for copying a package from one channel to another here: [conda forge/conda forge.github.io#134](https://github.com/conda-forge/conda-forge.github.io/pull/134)
    * I have a really, really crude script that copies all of the packages in one channel to another that I just put at: [](https://gist.github.com/mwcraig/8473cf840f6d29236d6d8af699404555)[https://gist.github.com/mwcraig/8473cf840f6d29236d6d8af699404555](https://gist.github.com/mwcraig/8473cf840f6d29236d6d8af699404555)
    * conda-build-all can copy from one channel to another: `conda build-all --inspect-channels conda-forge --upload-channels astropy some_packge_recipe` will copy the `some_package` from the channel conda-forge to astropy if it can, or build it if it doesn't exist on conda-forge. Discussion about what the desired behavior should be has started at: [SciTools/conda build all#46](https://github.com/SciTools/conda-build-all/issues/46)
  • Feedstock 历史记录

    *   Is it sacred?
    • 我们是否 rebase/force push?

          *   If so, under what conditions?
      • 我们如何避免多人同时执行此操作?

                *   I don't think you can.

        * IMHO, if it's just one author in staged recipes, sure. If feedstock, no force push - only to PRs to feedstock. If people don't mind merge PRs, it sure is a lot simpler to not rebase. I have messed up rebasing a few times recently... =(
  • 删除 numpy 1.10 并减少我们的构建矩阵。(Numba 现在可以与 numpy 1.11 一起使用。)

  • Feedstocks 哲学:显式 vs 隐式 / 可重现 vs 冗余

  • 软件包签名

    *   Should be easy to do. ( [](http://conda.pydata.org/docs/signed-packages.html)[http://conda.pydata.org/docs/signed-packages.html](http://conda.pydata.org/docs/signed-packages.html) )
    • 之前已经有人对此感兴趣。
  • HTTPError: 503 Server Error: Service Unavailable: Back-end server is at capacity for url...

    *   Seems we are regularly running into this issue under normal usage conditions.
    • 之前讨论过在 AppVeyor 上缓存软件包并尝试重用这些软件包来启动。
    • 也许我们需要考虑在所有 CI 上进行缓存。
    • 使用 constructor 构建我们自己的类似 Miniconda 的自解压脚本和软件包。
    • Continuum 方面已经进行了一些改进,应该会有所帮助。简而言之,repodata(给定频道的软件包索引)是为每个 anaconda.org 查询生成的。这是不必要的高成本,并且已经实施了一些缓存方案。
  • 处理删除未固定/错误固定的软件包。

    *   Has been done manually thus far.
    • 但这并不能很好地扩展。
    • 我们应该(半)自动化删除吗?
    • 我们应该热修复损坏的软件包吗?(conda forge/conda forge.github.io#170
    • 我们应该将它们标记为损坏
  • 当前无法构建的软件包

    *   In particular open source code that is out of scope for CIs.
    • 示例包括 Qt4、Qt5、可能 PyQt4、可能 PyQt5、gcc、VTK 等。

    • 我们如何指示它们是手动构建的?

    • 我们可以接受上传非构建的二进制文件吗?

    • 我们何时确定某些东西可以手动构建?

    • 人们在手动构建时应遵循哪些程序?

          *   Use a standard build docker image, VM, or vagrant file
      • 签名软件包?

      • 在可行的情况下实施可重现的构建(linux)

                *   [](https://reproducible-builds.org/)[https://reproducible-builds.org/](https://reproducible-builds.org/)
      • 我们需要在 conda-smithy 其他地方进行哪些更改?

    • 我们可以利用哪些其他构建基础设施?

          *   Would  be nice to provide some volunteer builder abstraction, so that we could  have an elastic worker farm that would be somewhat resilient.
      • 标准化构建镜像可能(相对)容易 - 但如何协调呢?
  • 分阶段发布

  • Windows BLAS 解决方案

    *   Still don't have a BLAS for Windows yet need something.
    • 不构建 BLAS

          *   NumPy has a small subset of BLAS functionality.
      • 不确定如何处理 SciPy(也找不到他们的 Windows wheels)。

      • 仅使用 C 支持构建 OpenBLAS。

        *   Will be pretty slow.
      • 应该适用于所有 Python。

      • 使用 MinGW 编译器构建 OpenBLAS。

        *   Works with Python 2.7 and 3.4.
      • 不适用于 Python 3.5?

      • 重用类似于 R 的 BLAS。

        *   Is there a package for something like this?
      • 它是否会遇到与 Python 3.5 相同的问题?

      • ATLAS?