diff --git a/Makefile b/Makefile index a69fc49..41cab9e 100644 --- a/Makefile +++ b/Makefile @@ -2,9 +2,9 @@ DOCKER = docker ORG = dockcross BIN = bin -images: base android-arm linux-x86 linux-x64 manylinux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 windows-x86 windows-x64 +images: base android-arm linux-x86 linux-x64 manylinux-x64 manylinux-x86 linux-arm64 linux-armv5 linux-armv6 linux-armv7 windows-x86 windows-x64 -test: base.test android-arm.test linux-x86.test linux-x64.test manylinux-x64.test linux-arm64.test linux-armv5.test linux-armv6.test linux-armv7.test windows-x86.test windows-x64.test +test: base.test android-arm.test linux-x86.test linux-x64.test manylinux-x64.test manylinux-x86.test linux-arm64.test linux-armv5.test linux-armv6.test linux-armv7.test windows-x86.test windows-x64.test android-arm: base android-arm/Dockerfile $(DOCKER) build -t $(ORG)/android-arm android-arm @@ -81,6 +81,16 @@ 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 /opt/python/cp35-cp35m/bin/python test/run.py +manylinux-x86/Dockerfile: manylinux-x86/Dockerfile.in common.docker + sed '/common.docker/ r common.docker' manylinux-x86/Dockerfile.in > manylinux-x86/Dockerfile + +manylinux-x86: manylinux-x86/Dockerfile + $(DOCKER) build -t $(ORG)/manylinux-x86 -f manylinux-x86/Dockerfile . + +manylinux-x86.test: manylinux-x86 test/run.py + $(DOCKER) run --rm dockcross/manylinux-x86 > $(BIN)/dockcross-manylinux-x86 && chmod +x $(BIN)/dockcross-manylinux-x86 + $(BIN)/dockcross-manylinux-x86 /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 @@ -105,4 +115,4 @@ base.test: base test/run.py mkdir -p $(BIN) $(DOCKER) run --rm dockcross/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base -.PHONY: images base android-arm linux-x86 linux-x64 manylinux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 windows-x86 windows-x64 tests %.test +.PHONY: images base android-arm linux-x86 linux-x64 manylinux-x64 manylinux-x86 linux-arm64 linux-armv5 linux-armv6 linux-armv7 windows-x86 windows-x64 tests %.test diff --git a/README.rst b/README.rst index c0995f2..656f4d8 100644 --- a/README.rst +++ b/README.rst @@ -107,6 +107,14 @@ dockcross/manylinux-x64 Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build `_ +.. |manylinux-x86-images| image:: https://badge.imagelayers.io/dockcross/manylinux-x86:latest.svg + :target: https://imagelayers.io/?images=dockcross/manylinux-x86:latest + +dockcross/manylinux-x86 + |manylinux-x86-images| Docker `manylinux `_ image for building Linux i686 `Python wheel packages `_. + Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build `_ + + .. |windows-x64-images| image:: https://badge.imagelayers.io/dockcross/windows-x64:latest.svg :target: https://imagelayers.io/?images=dockcross/windows-x64:latest diff --git a/circle.yml b/circle.yml index 9a00a35..c4b9830 100644 --- a/circle.yml +++ b/circle.yml @@ -34,6 +34,8 @@ dependencies: - docker pull dockcross/linux-x86 - if [[ -e ~/docker/manylinux-x64.tar ]]; then docker load -i ~/docker/manylinux-x64.tar; fi - docker pull dockcross/manylinux-x64 + - if [[ -e ~/docker/manylinux-x86.tar ]]; then docker load -i ~/docker/manylinux-x86.tar; fi + - docker pull dockcross/manylinux-x86 - if [[ -e ~/docker/windows-x64.tar ]]; then docker load -i ~/docker/windows-x64.tar; fi - docker pull dockcross/windows-x64 - if [[ -e ~/docker/windows-x86.tar ]]; then docker load -i ~/docker/windows-x86.tar; fi @@ -63,6 +65,8 @@ test: - mkdir -p ~/docker; docker save dockcross/linux-x86 > ~/docker/linux-x86.tar - make manylinux-x64.test - mkdir -p ~/docker; docker save dockcross/manylinux-x64 > ~/docker/manylinux-x64.tar + - make manylinux-x86.test + - mkdir -p ~/docker; docker save dockcross/manylinux-x86 > ~/docker/manylinux-x86.tar - make windows-x64.test: timeout: 3000 - mkdir -p ~/docker; docker save dockcross/windows-x64 > ~/docker/windows-x64.tar @@ -86,5 +90,6 @@ deployment: - docker push dockcross/linux-x64 - docker push dockcross/linux-x86 - docker push dockcross/manylinux-x64 + - docker push dockcross/manylinux-x86 - docker push dockcross/windows-x64 - docker push dockcross/windows-x86 diff --git a/manylinux-x86/Dockerfile.in b/manylinux-x86/Dockerfile.in new file mode 100644 index 0000000..adb27c9 --- /dev/null +++ b/manylinux-x86/Dockerfile.in @@ -0,0 +1,38 @@ +FROM quay.io/pypa/manylinux1_i686: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 + +COPY manylinux-x64/install-skbuild.sh /usr/local/bin +RUN /usr/local/bin/install-skbuild.sh + +RUN yum -y install sudo + +ENV CROSS_TRIPLE i686-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-x86/${CROSS_TRIPLE}-noop.sh /usr/bin/${CROSS_TRIPLE}-noop + +COPY manylinux-x86/Toolchain.cmake ${CROSS_ROOT}/../lib/ +ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/../lib/Toolchain.cmake +ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x86 + +RUN curl -O https://cmake.org/files/v3.6/cmake-3.6.2-Linux-i386.tar.gz && \ + tar xzf cmake-3.6.2-Linux-i386.tar.gz && \ + cp -a cmake-3.6.2-Linux-i386/* /usr/ && \ + rm -rf cmake-3.6.2-Linux-i386 + +COPY linux-x86/linux32-entrypoint.sh /dockcross/ +ENTRYPOINT ["/dockcross/linux32-entrypoint.sh"] diff --git a/manylinux-x86/Toolchain.cmake b/manylinux-x86/Toolchain.cmake new file mode 100644 index 0000000..bebd7f5 --- /dev/null +++ b/manylinux-x86/Toolchain.cmake @@ -0,0 +1,16 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR i686) + +set(cross_triple "i686-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) + +# Discard path returned by pkg-config and associated with HINTS in module +# like FindOpenSSL. +set(CMAKE_IGNORE_PATH /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/lib/) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/${cross_triple}-noop) diff --git a/manylinux-x86/install-skbuild.sh b/manylinux-x86/install-skbuild.sh new file mode 100755 index 0000000..a028024 --- /dev/null +++ b/manylinux-x86/install-skbuild.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for PIP in /opt/python/*/bin/pip; do + $PIP install scikit-build==0.3.0 +done