Skip to content

Commit

Permalink
Merge pull request #1937 from wiredfool/alpine-setup
Browse files Browse the repository at this point in the history
Alpine setup.py fixes
  • Loading branch information
wiredfool committed Jun 8, 2016
2 parents 62551a8 + 187c0f4 commit 45b28a2
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 2 deletions.
43 changes: 43 additions & 0 deletions depends/alpine_Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
9 changes: 7 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,8 @@ def build_extensions(self):

_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
Expand Down Expand Up @@ -789,8 +791,11 @@ def add_multiarch_paths(self):
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')
Expand Down

0 comments on commit 45b28a2

Please sign in to comment.