c++ - 在 Travis-CI 上使用 Conan 和 Python3

标签 c++ python-3.x travis-ci conan

我有一个使用 Travis-CI 和 Conan 的 C++ 项目。我在 Travis-CI 上构建的 Linux 在尝试下载 libcurl 时失败了:

libcurl/7.61.1@bincrafters/stable: Building your package in /home/travis/.conan/data/libcurl/7.61.1/bincrafters/stable/build/b6dbf799dd7e6d1c740e159bea361666320a3db8
libcurl/7.61.1@bincrafters/stable: Configuring sources in /home/travis/.conan/data/libcurl/7.61.1/bincrafters/stable/source
/usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_.py:150: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecurePlatformWarning
ERROR: Error downloading file https://curl.haxx.se/download/curl-7.61.1.tar.gz: 'HTTPSConnectionPool(host='curl.haxx.se', port=443): Max retries exceeded with url: /download/curl-7.61.1.tar.gz (Caused by SSLError(CertificateError("hostname 'curl.haxx.se' doesn't match 'c.sni.fastly.net'",),))'
Waiting 5 seconds to retry...
/usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_.py:150: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecurePlatformWarning
libcurl/7.61.1@bincrafters/stable: WARN: Trying to remove corrupted source folder
libcurl/7.61.1@bincrafters/stable: WARN: This can take a while for big packages
ERROR: libcurl/7.61.1@bincrafters/stable: Error in source() method, line 131
    tools.get("https://curl.haxx.se/download/curl-%s.tar.gz" % self.version)
    ConanException: Error downloading file https://curl.haxx.se/download/curl-7.61.1.tar.gz: 'HTTPSConnectionPool(host='curl.haxx.se', port=443): Max retries exceeded with url: /download/curl-7.61.1.tar.gz (Caused by SSLError(CertificateError("hostname 'curl.haxx.se' doesn't match 'c.sni.fastly.net'",),))'
The command "conan install .. --build missing" exited with 1.

根据错误中的建议,我尝试让 Travis 使用 Python3 来查看是否可以解决问题,但我没有成功。首先,我将 python3 添加到我的 packages: 中,如下所示:

matrix:
  include:
    - os: linux
      dist: trusty
      sudo: required
      env:
        - CC_COMPILER=gcc-7
        - CXX_COMPILER=g++-7
        - BUILD_TYPE=RelWithDebInfo
      addons:
        apt:
          packages:
            - python3
            - gcc-7
            - g++-7
          sources:
            - ubuntu-toolchain-r-test

但是我收到了和上面一样的错误。然后我尝试使用 alias 命令:

install:
  - |
    if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
      sudo pip install conan
      alias python=python3
    fi

然而,我得到了相同的结果。

如何让 Travis-CI 为 Conan 使用 python3?还是有其他方法可以让我的 conan install 命令正常工作?

谢谢!

最佳答案

使用 conan new pkg/version -s -cilg 生成的默认 CI 脚本可能会有所帮助。它们包含如下内容:

linux: &linux
   os: linux
   dist: xenial
   sudo: required
   language: python
   python: "3.6"
   services:
     - docker

matrix:
   include:
      - <<: *linux
        env: ...

install:
  - chmod +x .travis/install.sh
  - ./.travis/install.sh

安装脚本:

pip install conan --upgrade
pip install conan_package_tools

conan user

所以它没有声明为包,而是在根级别定义,这似乎足以在以后通过裸pip install使用它。

关于c++ - 在 Travis-CI 上使用 Conan 和 Python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53171865/

相关文章:

c++ - 以非交互方式安装 boost 二进制文件

C++ vector 调试实现

python - 属性错误 : 'ParsedRequirement' object has no attribute 'req'

c++ - 包括具有 "/"字符的库

C++ 将 'this' 指针传递给基类然后将其存储为子类的另一个基类的预期行为是什么

python - 使用 PyGame 显示 PyMunk - Python

Python Pandas - 将 groupby 函数的结果返回到父表

python - 过去2个月的平均值

travis-ci - api请求travis ci build的响应中remaining_requests是什么意思?

maven - 在 Travis CI 上调用两个单独的构建脚本作为矩阵