usando diferentes versiones de libc++ en travis para clang
makefile travis-ci (1)
Parece que no es posible hacerlo sin construir desde la fuente. La biblioteca range-v3 usa un script que hace exactamente esto.
travis.yml
mi travis.yml
para usarlo también:
language: generic
dist: trusty
sudo: required
matrix:
include:
- os: linux
compiler: gcc
env: GCC_VERSION=7
- CC=gcc-7
- CXX=g++-7
addons:
apt:
sources: [''ubuntu-toolchain-r-test'']
packages: [''g++-7'']
- os: linux
compiler: gcc
env: GCC_VERSION=6
- CC=gcc-6
- CXX=g++-6
addons:
apt:
sources: [''ubuntu-toolchain-r-test'']
packages: [''g++-6'']
- os: linux
compiler: gcc
env: GCC_VERSION=5
- CC=gcc-5
- CXX=g++-5
addons:
apt:
sources: [''ubuntu-toolchain-r-test'']
packages: [''g++-5'']
- os: linux
compiler: clang
env: CLANG_VERSION=5.0 LIBCXX=On
- CC=clang-5.0
- CXX=clang++-5.0
addons:
apt:
sources: [''ubuntu-toolchain-r-test'', ''llvm-toolchain-trusty-5.0'']
packages: [''clang-5.0'', ''g++-6'']
- os: linux
compiler: clang
env: CLANG_VERSION=4.0 LIBCXX=On
- CC=clang-4.0
- CXX=clang++-4.0
addons:
apt:
sources: [''ubuntu-toolchain-r-test'', ''llvm-toolchain-trusty-4.0'']
packages: [''clang-4.0'', ''g++-6'']
- os: linux
compiler: clang
env: CLANG_VERSION=3.9 LIBCXX=On
- CC=clang-3.9
- CXX=clang++-3.9
addons:
apt:
sources: [''ubuntu-toolchain-r-test'', ''llvm-toolchain-trusty-3.9'']
packages: [''clang-3.9'', ''g++-6'']
- os: linux
compiler: clang
env: CLANG_VERSION=3.8 LIBCXX=On
- CC=clang-3.8
- CXX=clang++-3.8
addons:
apt:
sources: [''ubuntu-toolchain-r-test'', ''llvm-toolchain-trusty-3.8'']
packages: [''clang-3.8'', ''g++-6'']
before_install:
- wget https://raw.githubusercontent.com/onqtam/doctest/master/doctest/doctest.h
- sudo mv ./doctest.h /usr/local/include/doctest.h
- |
if [ -n "$GCC_VERSION" ]; then
export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"
fi
if [ -n "$CLANG_VERSION" ]; then
export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"
fi
if [ "$LIBCXX" == "On" ]; then
sudo apt-get purge cmake
sudo apt-get install cmake3
cmake --version
sudo CXX="$CXX" CC="$CC"
sudo ./cmake/install_libcxx.sh
export CXXFLAGS="-stdlib=libc++"
fi
install:
- mkdir -p build && cd build
- cmake .. -DUNITTEST=ON
script:
- which $CXX
- $CXX --version
- cmake --build . --target unittest --config Release -- -j4
Travis usa Ubuntu Trusty y la versión predeterminada de libc ++ es svn199600
.
Sin embargo, me gustaría probar con diferentes versiones (más nuevas) como lo hago con diferentes versiones de clang.
Mi actual .travis.yml
tiene el siguiente aspecto:
language: generic
dist: trusty
sudo: required
matrix:
include:
- env: CXX=g++-7 CC=gcc-7
addons:
apt:
packages:
- g++-7
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise
- llvm-toolchain-precise-3.9
- llvm-toolchain-precise-3.8
- llvm-toolchain-precise-3.7
- llvm-toolchain-precise-3.6
- sourceline: ''deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main''
key_url: ''http://apt.llvm.org/llvm-snapshot.gpg.key''
- env: CXX=g++-6 CC=gcc-6
addons:
apt:
packages:
- g++-6
sources: *sources
- env: CXX=g++-5 CC=gcc-5
addons:
apt:
packages:
- g++-5
sources: *sources
- env: CXX=g++-4.9 CC=gcc-4.9
addons:
apt:
packages:
- g++-4.9
sources: *sources
- env: CXX=clang++-4.0 CC=clang-4.0
addons:
apt:
packages:
- clang-4.0
- libc++-dev
sources: *sources
- env: CXX=clang++-3.9 CC=clang-3.9
addons:
apt:
packages:
- clang-3.9
- libc++-dev
sources: *sources
- env: CXX=clang++-3.8 CC=clang-3.8
addons:
apt:
packages:
- clang-3.8
- libc++-dev
sources: *sources
- env: CXX=clang++-3.7 CC=clang-3.7
addons:
apt:
packages:
- clang-3.7
- libc++-dev
sources: *sources
- env: CXX=clang++-3.6 CC=clang-3.6
addons:
apt:
packages:
- clang-3.6
- libc++-dev
sources: *sources
script:
- ./build_and_test.sh
before_install:
- ./before_install.sh
Reemplazar libc++-dev
con libc++-dev-3.9
por ejemplo no ayuda (todavía usa la versión antigua de la biblioteca), incluso cuando se agrega la siguiente línea:
- sourceline: ''deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main''
También intenté agregar lo siguiente a mi before_install.sh
sin éxito (también es una biblioteca antigua):
sudo apt-add-repository "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.9 main"
sudo apt-get update
sudo apt-get install -y libc++-dev libc++-helpers libc++1 libc++abi-dev lldb-3.9
¿Cómo se hace correctamente sin construir desde la fuente?