diff --git a/Makefile b/Makefile index 6224294..6a6e27a 100644 --- a/Makefile +++ b/Makefile @@ -71,12 +71,15 @@ linux-ppc64le.test: linux-ppc64le test/run.py $(DOCKER) run --rm dockcross/linux-ppc64le > $(BIN)/dockcross-linux-ppc64le && chmod +x $(BIN)/dockcross-linux-ppc64le $(BIN)/dockcross-linux-ppc64le python test/run.py --languages C -manylinux-x64: base manylinux-x64/Dockerfile - $(DOCKER) build -t $(ORG)/manylinux-x64 manylinux-x64 +manylinux-x64/Dockerfile: manylinux-x64/Dockerfile.in common.docker + cpp -o manylinux-x64/Dockerfile -I$(shell pwd) manylinux-x64/Dockerfile.in + +manylinux-x64: manylinux-x64/Dockerfile + $(DOCKER) build -t $(ORG)/manylinux-x64 -f manylinux-x64/Dockerfile . manylinux-x64.test: manylinux-x64 test/run.py $(DOCKER) run --rm dockcross/manylinux-x64 > $(BIN)/dockcross-manylinux-x64 && chmod +x $(BIN)/dockcross-manylinux-x64 - $(BIN)/dockcross-manylinux-x64 python test/run.py + $(BIN)/dockcross-manylinux-x64 /opt/python/cp35-cp35m/bin/python test/run.py windows-x86: base windows-x86/Dockerfile windows-x86/settings.mk $(DOCKER) build -t $(ORG)/windows-x86 windows-x86 diff --git a/circle.yml b/circle.yml index 71f6714..097a1f8 100644 --- a/circle.yml +++ b/circle.yml @@ -19,6 +19,7 @@ dependencies: - docker pull dockcross/linux-ppc64le - docker pull dockcross/linux-x64 - docker pull dockcross/linux-x86 + - docker pull dockcross/manylinux-x64 - docker pull dockcross/windows-x64 - docker pull dockcross/windows-x86 @@ -34,6 +35,7 @@ test: - make linux-ppc64le.test - make linux-x64.test - make linux-x86.test + - make manylinux-x64.test - make windows-x64.test: timeout: 3000 - make windows-x86.test: @@ -54,5 +56,6 @@ deployment: - docker push dockcross/linux-ppc64le - docker push dockcross/linux-x64 - docker push dockcross/linux-x86 + - docker push dockcross/manylinux-x64 - docker push dockcross/windows-x64 - docker push dockcross/windows-x86 diff --git a/common.docker b/common.docker index 0acc314..1e49aa9 100644 --- a/common.docker +++ b/common.docker @@ -1,3 +1,7 @@ +#ifdef linux +#undef linux +#endif + WORKDIR /usr/share RUN git clone "https://github.com/nojhan/liquidprompt.git" && \\ cd liquidprompt && \\ @@ -5,7 +9,7 @@ RUN git clone "https://github.com/nojhan/liquidprompt.git" && \\ COPY imagefiles/.bashrc /root/ WORKDIR /usr/src -RUN git clone "https://cmake.org/cmake.git" CMake && \\ +RUN git clone "git://cmake.org/cmake.git" CMake && \\ cd CMake && \\ git checkout v3.6.1 && \\ cd .. && mkdir CMake-build && cd CMake-build && \\ @@ -13,7 +17,7 @@ RUN git clone "https://cmake.org/cmake.git" CMake && \\ --parallel=$(nproc) \\ --prefix=/usr && \\ make -j$(nproc) && \\ - ./bin/cmake -DCMAKE_USE_SYSTEM_CURL:BOOL=ON \\ + ./bin/cmake \\ -DCMAKE_BUILD_TYPE:STRING=Release \\ -DCMAKE_USE_OPENSSL:BOOL=ON . && \\ make install && \\ @@ -23,7 +27,7 @@ RUN git clone "https://cmake.org/cmake.git" CMake && \\ RUN git clone "https://github.com/martine/ninja.git" && \\ cd ninja && \\ git checkout v1.7.1 && \\ - python ./configure.py --bootstrap && \\ + ([ -e /opt/python/cp35-cp35m/bin/python ] && /opt/python/cp35-cp35m/bin/python ./configure.py --bootstrap) || python ./configure.py --bootstrap && \\ ./ninja && \\ cp ./ninja /usr/bin/ && \\ cd .. && rm -rf ninja diff --git a/manylinux-x64/Dockerfile.in b/manylinux-x64/Dockerfile.in new file mode 100644 index 0000000..2c0af67 --- /dev/null +++ b/manylinux-x64/Dockerfile.in @@ -0,0 +1,25 @@ +FROM quay.io/pypa/manylinux1_x86_64:latest +MAINTAINER Matt McCormick "matt.mccormick@kitware.com" + +#include "common.docker" + +RUN cd /opt && \\ + wget "http://smarden.org/runit/runit-2.1.2.tar.gz" && \\ + tar xvzf runit-2.1.2.tar.gz && \\ + cd admin/runit-2.1.2 && \\ + ./package/install + +ENV CROSS_TRIPLE x86_64-linux-gnu +ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin +ENV AS=${CROSS_ROOT}/as \\ + AR=${CROSS_ROOT}/ar \\ + CC=${CROSS_ROOT}/gcc \\ + CPP=${CROSS_ROOT}/cpp \\ + CXX=${CROSS_ROOT}/g++ \\ + LD=${CROSS_ROOT}/ld + +COPY linux-x64/${CROSS_TRIPLE}-noop.sh /usr/bin/${CROSS_TRIPLE}-noop + +COPY manylinux-x64/Toolchain.cmake ${CROSS_ROOT}/../lib/ +ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/../lib/Toolchain.cmake +ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x64 diff --git a/manylinux-x64/Toolchain.cmake b/manylinux-x64/Toolchain.cmake new file mode 100644 index 0000000..ef7cd91 --- /dev/null +++ b/manylinux-x64/Toolchain.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(cross_triple "x86_64-linux-gnu") + +set(CMAKE_C_COMPILER /opt/rh/devtoolset-2/root/usr/bin/gcc) +set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-2/root/usr/bin/g++) +set(CMAKE_ASM_COMPILER /opt/rh/devtoolset-2/root/usr/bin/as) +set(CMAKE_Fortran_COMPILER /opt/rh/devtoolset-2/root/usr/bin/gfortran) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/${cross_triple}-noop)