diff --git a/depends/alpine_Dockerfile b/depends/alpine_Dockerfile new file mode 100644 index 000000000..1ab624690 --- /dev/null +++ b/depends/alpine_Dockerfile @@ -0,0 +1,43 @@ +# This is a sample Dockerfile to build Pillow on Alpine Linux +# with all/most of the dependencies working. +# +# Tcl/Tk isn't detecting +# Freetype has different metrics so tests are failing. +# sudo and bash are required for the webp build script. + +FROM alpine +USER root + +RUN apk --no-cache add python \ + build-base \ + python-dev \ + py-pip \ + # Pillow depenencies + jpeg-dev \ + zlib-dev \ + freetype-dev \ + lcms2-dev \ + openjpeg-dev \ + tiff-dev \ + tk-dev \ + tcl-dev + +# install from pip, without webp +#RUN LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "pip install Pillow" + +# install from git, run tests, including webp +RUN apk --no-cache add git \ + bash \ + sudo + +RUN git clone https://github.com/python-pillow/Pillow.git /Pillow +RUN pip install virtualenv && virtualenv /vpy && source /vpy/bin/activate && pip install nose + +RUN echo "#!/bin/bash" >> /test && \ + echo "source /vpy/bin/activate && cd /Pillow " >> test && \ + echo "pushd depends && ./install_webp.sh && ./install_imagequant.sh && popd" >> test && \ + echo "LIBRARY_PATH=/lib:/usr/lib make install && make test" >> test + +RUN chmod +x /test + +CMD ["/test"] diff --git a/setup.py b/setup.py index 76e2dfc97..511422e7b 100644 --- a/setup.py +++ b/setup.py @@ -405,6 +405,8 @@ class pil_build_ext(build_ext): _add_directory(library_dirs, "/usr/lib") _add_directory(include_dirs, "/usr/include") + # alpine, at least + _add_directory(library_dirs, "/lib") # on Windows, look for the OpenJPEG libraries in the location that # the official installer puts them @@ -789,8 +791,11 @@ class pil_build_ext(build_ext): if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) with open(tmpfile, 'wb') as fp: - ret = subprocess.call([ - 'dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=fp) + try: + ret = subprocess.call(['dpkg-architecture', + '-qDEB_HOST_MULTIARCH'], stdout=fp) + except: + return try: if ret >> 8 == 0: fp = open(tmpfile, 'r')