No ci skip here because let's see CI run w/new version numbers. I'm starting to think (again) this bump should happen immediately after the release instead of right before the next? But I know @wiredfool had some objection to this at some point. As a compromise, maybe we could change to 2.9.0dev immediately following the release of 2.8.0.
It made the PyPI listing page very long and requires a lot of scrolling to get down to the files, annoying for downstream packagers.
Instead it's linked from the README.
[CI skip]
When installing Pillow onto a Vagrant virtual machine with Linux as the guest OS, and Windows as the host OS, setup.py fails with the error "Text file busy." The temporary installation directory is a shared folder from the host OS, mounted in the guest OS, and the underlying Windows file system doesn't allow deleting the "multiarch" temporary file while a file handle for it is still open. This change closes the file handle once it is no longer being used, but before the file itself is unlinked.
Though I hate the 'dev' designation I want something to indicate master is where development for the next major version happens. I think we've previously disagreed on simply 'X.X.X' so I'm going with 'X.X.Xdev' to see if that is more palatable. :-)
The subprocess command in Python 3 returns a bytes object. If the
homebrew subprocess check returns a not-empty result, then setup crashes
trying to combine the bytes with the string constants with and error
like "TypeError: Can't mix strings and bytes in path components."
XQuartz ships an older freetype that still has a top-level "ft2build.h"
header file. Homebrew's freetype is newer and does not have this file,
it only has "freetype2/ft2build.h".
setup.py finds the header in XQuartz first, but Homebrew's compiler
wrappers intentionally strip out the XQuartz include paths during the
build unless the package depends on it explicitly.
We want to prefer Homebrew's freetype anyway, so if it's installed,
let's not even bother to search the XQuartz paths.
platforma.processor() will return x86_64 on a 64 bit linux system;
however, this it wrong for 32 bit compiled python. By looking at
platform.architecture() first it correctly notes the 32bit
compile.
Somehow I merged pino's commit into rel_2.3 branch (which I since removed because it was confusing me). Not sure what happened, but this is his code that got lost.
I've recently included Pillow with a py2app build of a frozen application on OS X. When Pillow is installed on a machine that has X11, the preference for X11's libfreetype causes a new dependency for my frozen app. I don't want my users to be required to install X11 if they don't have to (it's not included by default after OS X 10.8).
This PR adds a preference for homebrew's libfreetype (if available), which py2app detects and includes, and which doesn't create an X11 dependency in apps that are frozen and use Pillow (PIL).
This change allows Pillow to discover installed libs on OSX when using the homebrew package manager outside of `/usr/local/`.
It relies on the commands module, which goes away in Python 3. If it seems like a good change to add, I can switch the code over to subprocess.
Pillow now uses the webpmux library to envelop the webp images in RIFF. This allows for easy support of exif and icc_profile metadata.
Also included tests that verify compatibility with jpeg for exif and icc_profile metadata.
If the user does not have webp with webpmux enabled, pillow will fall back to the previous approach, meaning no exif or icc_profile metadata will be read or written to.