├── .gitignore └── manylinux ├── run.sh ├── Dockerfile-x86_64 ├── Dockerfile-i686 ├── build.sh └── cmd.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.o 3 | \#*\# 4 | *\# 5 | *~ 6 | *.orig 7 | 8 | -------------------------------------------------------------------------------- /manylinux/run.sh: -------------------------------------------------------------------------------- 1 | 2 | for ARCH in i686 x86_64; do 3 | docker build --pull=true --rm=true -t simpleitk_manylinux_${ARCH} -f Dockerfile-${ARCH} . 4 | 5 | if [ -n "$ExternalData_OBJECT_STORES" -a -d "$ExternalData_OBJECT_STORES" ] ; then 6 | external_data_args="-v ${ExternalData_OBJECT_STORES}:/var/io/.ExternalData -e ExternalData_OBJECT_STORES=/var/io/.ExternalData" 7 | fi 8 | 9 | docker run --rm -e USER=$USER -e USERID=$UID -u=$UID $external_data_args -v $(pwd):/var/io -t simpleitk_manylinux_${ARCH} 10 | 11 | # use this command to debug 12 | #docker run --rm -i -t --entrypoint=/bin/bash -u=root $external_data_args -v $(pwd):/var/io simpleitk_manylinux_${ARCH} 13 | done 14 | -------------------------------------------------------------------------------- /manylinux/Dockerfile-x86_64: -------------------------------------------------------------------------------- 1 | FROM quay.io/pypa/manylinux1_x86_64 2 | MAINTAINER Insight Software Consortium 3 | 4 | RUN yum erase git 'cmake*' curl -y && yum install zlib-devel gettext -y 5 | 6 | WORKDIR /tmp/ 7 | ADD https://cmake.org/files/v3.6/cmake-3.6.0.tar.gz \ 8 | https://www.openssl.org/source/openssl-1.0.2h.tar.gz \ 9 | https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.gz \ 10 | /tmp/ 11 | 12 | ADD https://curl.haxx.se/download/curl-7.48.0.tar.gz /tmp/ 13 | #RUN cd /tmp && wget --no-check-certificate http://curl.haxx.se/download/curl-7.50.1.tar.gz 14 | 15 | COPY build.sh ./ 16 | RUN bash -v build.sh && rm -rf /tmp/* 17 | 18 | RUN yum erase zlib-devel gettext -y 19 | 20 | # Normal user, no password 21 | RUN useradd -m --password "" sitk 22 | 23 | USER sitk 24 | ENV HOME /tmp 25 | 26 | # User is expected to mount directory to "/io" 27 | ENTRYPOINT [ "/var/io/cmd.sh" ] 28 | 29 | 30 | -------------------------------------------------------------------------------- /manylinux/Dockerfile-i686: -------------------------------------------------------------------------------- 1 | FROM quay.io/pypa/manylinux1_i686 2 | MAINTAINER Insight Software Consortium 3 | 4 | 5 | RUN yum erase git 'cmake*' curl -y && yum install zlib-devel gettext -y 6 | 7 | WORKDIR /tmp/ 8 | 9 | ADD https://cmake.org/files/v3.6/cmake-3.6.0.tar.gz \ 10 | https://www.openssl.org/source/openssl-1.0.2h.tar.gz \ 11 | https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.gz \ 12 | /tmp/ 13 | 14 | #RUN cd /tmp && wget --no-check-certificate http://curl.haxx.se/download/curl-7.50.1.tar.gz 15 | #ADD curl-7.48.0.tar.gz /tmp 16 | ADD https://curl.haxx.se/download/curl-7.50.1.tar.gz /tmp 17 | 18 | COPY build.sh ./ 19 | RUN linux32 bash -v build.sh && rm -rf /tmp/* 20 | 21 | RUN yum erase zlib-devel gettext -y 22 | 23 | # Normal user, no password 24 | RUN useradd -m --password "" sitk 25 | 26 | USER sitk 27 | ENV HOME /tmp 28 | 29 | # User is expected to mount directory to "/io" 30 | ENTRYPOINT [ "/usr/bin/linux32", "/var/io/cmd.sh" ] 31 | -------------------------------------------------------------------------------- /manylinux/build.sh: -------------------------------------------------------------------------------- 1 | 2 | NPROC=$(cat /proc/cpuinfo | grep processor | wc -l) 3 | 4 | OPENSSL_ROOT=openssl-1.0.2h 5 | OPENSSL_HASH=1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919 6 | CURL_ROOT=curl-7.50.1 7 | GIT_ROOT=git-2.8.2 8 | CMAKE_ROOT=cmake-3.6.0 9 | 10 | function check_var { 11 | if [ -z "$1" ]; then 12 | echo "required variable not defined" 13 | exit 1 14 | fi 15 | } 16 | 17 | function do_openssl_build { 18 | ./config no-ssl2 no-shared -fPIC --prefix=/usr/local/ssl > /dev/null 19 | make -j${NPROC} > /dev/null 20 | make install > /dev/null 21 | } 22 | 23 | function check_sha256sum { 24 | local fname=$1 25 | check_var ${fname} 26 | local sha256=$2 27 | check_var ${sha256} 28 | 29 | echo "${sha256} ${fname}" > ${fname}.sha256 30 | sha256sum -c ${fname}.sha256 31 | rm ${fname}.sha256 32 | } 33 | 34 | 35 | function build_openssl { 36 | local openssl_fname=$1 37 | check_var ${openssl_fname} 38 | local openssl_sha256=$2 39 | check_var ${openssl_sha256} && 40 | check_sha256sum ${openssl_fname}.tar.gz ${openssl_sha256} && 41 | tar -xzf ${openssl_fname}.tar.gz && 42 | (cd ${openssl_fname} && do_openssl_build) && 43 | rm -rf ${openssl_fname} ${openssl_fname}.tar.gz 44 | } 45 | 46 | build_openssl $OPENSSL_ROOT $OPENSSL_HASH || exit 1 47 | 48 | # CURL 49 | tar -zxf ${CURL_ROOT}.tar.gz && 50 | (cd ${CURL_ROOT} && 51 | LIBS="-ldl" ./configure \ 52 | --prefix=/usr/local \ 53 | --with-ssl=/usr/local/ssl \ 54 | -enable-threaded-resolver \ 55 | --enable-static=no && 56 | make -j${NPROC} && 57 | make install ) || 58 | exit 1 59 | 60 | # GIT 61 | tar -zxf ${GIT_ROOT}.tar.gz && 62 | (cd ${GIT_ROOT} && 63 | ./configure \ 64 | --with-curl=/usr/local \ 65 | --prefix=/usr/local \ 66 | --enable-pthreads 67 | make -j${NPROC} && 68 | make install ) || 69 | exit 1 70 | 71 | 72 | tar xvzf ${CMAKE_ROOT}.tar.gz && 73 | mkdir /tmp/cmake-build && 74 | (cd /tmp/cmake-build && 75 | ../${CMAKE_ROOT}/bootstrap --parallel=${NPROC} -- \ 76 | -DCMAKE_BUILD_TYPE:STRING=Release \ 77 | -DCMAKE_USE_OPENSSL:BOOL=ON \ 78 | -DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl \ 79 | -DCMAKE_USE_SYSTEM_CURL:BOOL=OFF && 80 | make -j${NPROC} && 81 | make install) || 82 | exit 1 83 | 84 | #rm -rf /usr/local/ssl 85 | -------------------------------------------------------------------------------- /manylinux/cmd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | export SRC_DIR="/tmp/SimpleITK" 5 | export BLD_DIR="/tmp/SimpleITK-build" 6 | export OUT_DIR="/var/io" 7 | 8 | 9 | function build_simpleitk { 10 | 11 | NPROC=$(cat /proc/cpuinfo | grep processor | wc -l) 12 | 13 | git clone https://itk.org/SimpleITK.git ${SRC_DIR} && 14 | (cd ${SRC_DIR} && git checkout v0.10.0 ) && 15 | (cd ${SRC_DIR} && git checkout cf5c9eb -- ./SimpleITKConfig.cmake.in ) && 16 | rm -rf ${BLD_DIR} && 17 | mkdir -p ${BLD_DIR} && cd ${BLD_DIR} && 18 | cmake \ 19 | -DSimpleITK_BUILD_DISTRIBUTE:BOOL=ON \ 20 | -DSimpleITK_BUILD_STRIP:BOOL=ON \ 21 | -DCMAKE_BUILD_TYPE:STRING=Release \ 22 | -DBUILD_TESTING:BOOL=ON \ 23 | -DBUILD_SHARED_LIBS:BOOL=OFF \ 24 | -DWRAP_CSHARP:BOOL=OFF \ 25 | -DWRAP_LUA:BOOL=OFF\ 26 | -DWRAP_PYTHON:BOOL=OFF \ 27 | -DWRAP_JAVA:BOOL=OFF \ 28 | -DWRAP_TCL:BOOL=OFF \ 29 | -DWRAP_R:BOOL=OFF \ 30 | -DWRAP_RUBY:BOOL=OFF \ 31 | ${SRC_DIR}/SuperBuild && 32 | make -j ${NPROC} && \ 33 | find ./ -name \*.o -delete 34 | } 35 | 36 | 37 | 38 | 39 | function build_simpleitk_python { 40 | 41 | NPROC=$(cat /proc/cpuinfo | grep processor | wc -l) 42 | 43 | rm -rf ${BLD_DIR}-${PYTHON} && 44 | mkdir -p ${BLD_DIR}-${PYTHON} && 45 | cd ${BLD_DIR}-${PYTHON} && 46 | cmake \ 47 | -D "CMAKE_CXX_FLAGS:STRING=-fvisibility=hidden -fvisibility-inlines-hidden ${CFLAGS}" \ 48 | -D "CMAKE_C_FLAGS:STRING=-fvisibility=hidden ${CXXFLAGS}" \ 49 | -DCMAKE_MODULE_PATH:PATH=${SRC_DIR} \ 50 | -DSimpleITK_DIR:PATH=${BLD_DIR}/SimpleITK-build \ 51 | -DSWIG_EXECUTABLE:FILEPATH=${BLD_DIR}/Swig/bin/swig \ 52 | -DSWIG_DIR:PATH=${BLD_DIR}/Swig/ \ 53 | -DSimpleITK_BUILD_DISTRIBUTE:BOOL=ON \ 54 | -DSimpleITK_BUILD_STRIP:BOOL=ON \ 55 | -DCMAKE_BUILD_TYPE:STRING=Release \ 56 | -DSimpleITK_PYTHON_WHEEL:BOOL=ON \ 57 | -DSimpleITK_PYTHON_EGG:BOOL=OFF \ 58 | -DPYTHON_EXECUTABLE:FILEPATH=/opt/python/${PYTHON}/bin/python \ 59 | -DPYTHON_INCLUDE_DIR:PATH=$( find -L /opt/python/${PYTHON}/include/ -name Python.h -exec dirname {} \; ) \ 60 | -DPYTHON_LIBRARY:FILEPATH=$( find -L /opt/python/${PYTHON}/lib -name libpython\*.a ) \ 61 | -DPYTHON_VIRTUALENV_SCRIPT:FILEPATH=${BLD_DIR}/virtualenv/virtualenv.py \ 62 | ${SRC_DIR}/Wrapping/Python && 63 | make -j ${NPROC} && 64 | make dist 65 | 66 | } 67 | 68 | build_simpleitk || exit 1 69 | 70 | PYTHON_VERSIONS="cp27-cp27m cp27-cp27mu cp33-cp33m cp34-cp34m cp35-cp35m" 71 | 72 | for PYTHON in ${PYTHON_VERSIONS}; do 73 | build_simpleitk_python && 74 | ctest -j ${NPROC} && 75 | auditwheel repair $(find ${BLD_DIR}-${PYTHON}/ -name SimpleITK*.whl) -w /var/io/wheelhouse/ 76 | done 77 | 78 | 79 | 80 | 81 | 82 | --------------------------------------------------------------------------------