#7273: PIL spkg uses libraries it must not use
---------------------------+------------------------------------------------
   Reporter:  GeorgSWeber  |       Owner:  mabshoff
       Type:  defect       |      Status:  new     
   Priority:  blocker      |   Milestone:  sage-4.2
  Component:  packages     |    Keywords:          
Work_issues:               |      Author:          
   Reviewer:               |      Merged:          
---------------------------+------------------------------------------------
 From the pil-1.1.6.spkg's "setup.py":
 {{{
 # --------------------------------------------------------------------
 # Library pointers.
 #
 # Use None to look for the libraries in well-known library locations.
 # Use a string to specify a single directory, for both the library and
 # the include files.  Use a tuple to specify separate directories:
 # (libpath, includepath).  Examples:
 #
 # JPEG_ROOT = "/home/libraries/jpeg-6b"
 # TIFF_ROOT = "/opt/tiff/lib", "/opt/tiff/include"
 #
 # If you have "lib" and "include" directories under a common parent,
 # you can use the "libinclude" helper:
 #
 # TIFF_ROOT = libinclude("/opt/tiff")

 FREETYPE_ROOT = None
 JPEG_ROOT = None
 TIFF_ROOT = None
 ZLIB_ROOT = None
 TCL_ROOT = None

 # FIXME: add mechanism to explicitly *disable* the use of a library

 # --------------------------------------------------------------------
 }}}
 and any of these libraries the setup thinks it finds will be set as
 {{{
 -DHAVE_LIBJPEG -DHAVE_LIBZ
 }}}
 and the like in "building '_imaging' extension".

 This means that if a Sage binary is built on a computer with having some
 of these libraries, then this binary will *not* work (might not even
 start) on a computer not having at least these libraries available.

 Even more fun (again taken from PIL's setup.py):
 {{{
         elif sys.platform == "darwin":
             # attempt to make sure we pick freetype2 over other versions
             add_directory(include_dirs, "/sw/include/freetype2")
             add_directory(include_dirs, "/sw/lib/freetype2/include")
             # fink installation directories
             add_directory(library_dirs, "/sw/lib")
             add_directory(include_dirs, "/sw/include")
             # darwin ports installation directories
             add_directory(library_dirs, "/opt/local/lib")
             add_directory(include_dirs, "/opt/local/include")
 }}}
 Last, but not least, pil-1.1.6 as contained in Sage-4.2.alpha1 breaks the
 Sage build, at least on my computer. It somehow thinks it could find
 "libjpeg" and its includes, but then cannot:
 {{{
 ...
 running build_ext
 --- using frameworks at /System/Library/Frameworks
 building '_imaging' extension
 gcc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-
 prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/
 Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/
 Headers -I/Users/Shared/sage/sage-4.2.alpha1/local/include/freetype2 -
 IlibImaging -I/opt/local/include -I/Users/Shared/sage/sage-4.2.alpha1/
 local/include -I/usr/local/include -I/usr/include -I/Users/Shared/sage/
 sage-4.2.alpha1/local/include/python2.6 -c decode.c -o build/
 temp.macosx-10.3-i386-2.6/decode.o
 In file included from decode.c:653:
 libImaging/Jpeg.h:11:21: error: jpeglib.h: No such file or directory
 In file included from decode.c:653:
 libImaging/Jpeg.h:17: error: field 'pub' has incomplete type
 libImaging/Jpeg.h:26: error: field 'pub' has incomplete type
 libImaging/Jpeg.h:49: error: field 'cinfo' has incomplete type
 libImaging/Jpeg.h:62: error: field 'pub' has incomplete type
 libImaging/Jpeg.h:90: error: field 'cinfo' has incomplete type
 error: command 'gcc' failed with exit status 1

 The full install.log is at
 http://sage.math.washington.edu/home/weberg/logs/sage-4.2.alpha1_install.log
 }}}
 But the problem with the binaries *will* occur on any platform, not only
 Darwin.

 So we either have to also include a jpeg.spkg, a tiff.spkg, and so on in
 Sage (and make sure PIL uses these !!!), or cripple PIL to not use any of
 these libraries (even if they *were* present).

 The former is problematic, as far as I remember e.g. the tiff license is
 not GPL compatible (apart from the technical aspects), but I might be
 mistaken. Crippling might render PIL pretty useless, however.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7273>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to