如何在Travis CI中使用最新的升级版本?

时间:2017-07-24 09:07:02

标签: c++ boost travis-ci

我尝试以多种方式在Travis CI环境中安装boost 1.64。但他们都没有成功。 在我的第一次天真尝试中,我刚刚在travis脚本中添加了以下行:

install:
  - sudo apt-get install libboost1.64-all-dev

结果是错误消息:找不到包libboost1.64-all-dev

在第二次尝试中,我使用必要的boost版本指定了存储库。

before_install:
  - sudo add-apt-repository -y ppa:nschloe/boost-nightly
  - sudo apt-get update -qq
install:
  - sudo apt-get install libboost-all-dev
  # - sudo apt-get install libboost1.64-all-dev (also tried)

在第一种情况下安装了默认boost版本(1.54)。 在第二种情况下结果是相同的错误消息:找不到包libboost1.64-all-dev

在第三次尝试中,我手动输入了安装boost的说明:

install:
  - sudo wget -O boost_1_64_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.gz/download
  - sudo tar xzvf boost_1_64_0.tar.gz
  - cd boost_1_64_0/
  - sudo ./bootstrap.sh --prefix=/usr/local
  - sudo ./b2
  - sudo ./b2 install 

结果我的剧本花了30多分钟然后终止了。 是否有任何简单(或仅仅是正常工作)的方式来安装除Travis CI之外的默认升级版本?

3 个答案:

答案 0 :(得分:6)

预编译提升

以下是我采取的步骤:

  1. launchpad上搜索,直到我找到trusty环境的最新版本。这不是一件轻而易举的事,但目前维持的mhier ppa称为libboost-latest

  2. 我发现正确配置.travis.yml以使用ppa非常重要,所以我提供了一个工作片段,我希望能帮助其他人解决同样的问题。

  3. 以下适用于clang和gcc:

    language: cpp
    dist: trusty
    sudo: false
    os: linux
    
    matrix:
      include:
        - env: COMPILER=g++-6 BUILD=Debug STANDARD=14
          compiler: gcc
          addons:
            apt:
              update: true
              sources:
                - sourceline: 'ppa:mhier/libboost-latest'
                - ubuntu-toolchain-r-test
              packages:
                - g++-6
                - boost1.67
        - env: COMPILER=g++-6 BUILD=Release STANDARD=14
          compiler: gcc
          addons:
            apt:
              update: true
              sources:
                - sourceline: 'ppa:mhier/libboost-latest'
                - ubuntu-toolchain-r-test
              packages:
                - g++-6
                - boost1.67
    # the rest of your yaml file...
    

    希望mhier能保持这个ppa运行一段时间,否则你将不得不通过第1步,或者提供你自己的ppa。随着提升版本编号的进展,包裹编号将发生变化,因此请检查ppa page以使包裹名称保持最新。

    可以在monstar github project找到完整的工作示例。

    从源编译提升 您也可以在travis构建中编译源代码,尽管您有超时的风险。有关此内容的说明,请参阅boost best practice handbook

    的第12项

答案 1 :(得分:4)

要查看所有包都可用(特别是添加额外存储库时),可以运行“apt-cache search”命令,例如:

sudo apt-cache search libboost

然后你可以看到可用的版本。

手动构建时,默认情况下会构建“所有”(所有静态/共享调试/释放库),这会占用大量时间,因此可能会超时。

您可以尝试仅构建您实际需要的库,例如:

./bootstrap.sh --with-libraries=program_options,filesystem,system
./b2 link=shared threading=multi variant=release

(详见此处:http://www.boost.org/build/doc/html/bbv2/overview/invocation.html

答案 2 :(得分:1)

我遇到了同样的问题,限制命令的信息输出似乎可以解决问题。

充斥日志的三个:

    - tar -xzf boost_1_64_0.tar.gz
    - ./b2 -d0
    - ./b2 install -d0