Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions .github/workflows/wheels-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,9 @@ if [[ "$CIBW_PLATFORM" == "ios" ]]; then

IOS_SDK_PATH=$(xcrun --sdk $IOS_SDK --show-sdk-path)
CMAKE_SYSTEM_NAME=iOS
IOS_HOST_TRIPLE=$PLAT-apple-ios$IPHONEOS_DEPLOYMENT_TARGET
if [[ "$IOS_SDK" == "iphonesimulator" ]]; then
IOS_HOST_TRIPLE=$PLAT-apple-ios$IPHONEOS_DEPLOYMENT_TARGET-simulator
else
IOS_HOST_TRIPLE=$PLAT-apple-ios$IPHONEOS_DEPLOYMENT_TARGET
IOS_HOST_TRIPLE=$IOS_HOST_TRIPLE-simulator
fi

# GNU Autotools doesn't recognize the existence of arm64-apple-ios-simulator
Expand All @@ -60,11 +59,11 @@ if [[ "$CIBW_PLATFORM" == "ios" ]]; then
# Cmake has native support for iOS. However, most of that support is based
# on using the Xcode builder, which isn't very helpful for most of Pillow's
# dependencies. Therefore, we lean on the OSX configurations, plus CC/CFLAGS
# etc to ensure the right sysroot is selected.
# etc. to ensure the right sysroot is selected.
HOST_CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=$CMAKE_SYSTEM_NAME -DCMAKE_SYSTEM_PROCESSOR=$GNU_ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$IPHONEOS_DEPLOYMENT_TARGET -DCMAKE_OSX_SYSROOT=$IOS_SDK_PATH -DBUILD_SHARED_LIBS=NO"

# Meson needs to be pointed at a cross-platform configuration file
# This will be generated once CC etc have been evaluated.
# This will be generated once CC etc. have been evaluated.
HOST_MESON_FLAGS="--cross-file $WORKDIR/meson-cross.txt -Dprefer_static=true -Ddefault_library=static"

elif [[ "$(uname -s)" == "Darwin" ]]; then
Expand Down Expand Up @@ -171,7 +170,6 @@ function build_brotli {

function build_harfbuzz {
if [ -e harfbuzz-stamp ]; then return; fi

python3 -m pip install meson ninja

local out_dir=$(fetch_unpack https://github.com/harfbuzz/harfbuzz/releases/download/$HARFBUZZ_VERSION/harfbuzz-$HARFBUZZ_VERSION.tar.xz harfbuzz-$HARFBUZZ_VERSION.tar.xz)
Expand Down Expand Up @@ -291,7 +289,7 @@ if [[ -n "$IS_MACOS" ]]; then
mkdir -p "$BUILD_PREFIX/lib"

# Ensure pkg-config is available. This is done *before* setting CC, CFLAGS
# etc to ensure that the build is *always* a macOS build, even when building
# etc. to ensure that the build is *always* a macOS build, even when building
# for iOS.
build_pkg_config

Expand All @@ -317,7 +315,7 @@ if [[ -n "$IS_MACOS" ]]; then
# behavior into clang.
unset IPHONEOS_DEPLOYMENT_TARGET

# Now that we know CC etc, we can create a meson cross-configuration file
# Now that we know CC etc., we can create a meson cross-configuration file
create_meson_cross_config
fi
fi
Expand Down
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@ docs/_build/
# JetBrains
.idea

# Files downloaded as part of the build process
pillow-depends-main.zip
pillow-test-images.zip

# Extra test images installed from python-pillow/test-images
Tests/images/README.md
Tests/images/crash_1.tif
Expand Down
7 changes: 2 additions & 5 deletions Tests/oss-fuzz/test_fuzzers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,8 @@
from PIL import Image, features
from Tests.helper import skip_unless_feature

if sys.platform.startswith("win32") or sys.platform in {"ios", "android"}:
pytest.skip(
"Fuzzer doesn't run on Windows or mobile",
allow_module_level=True,
)
if sys.platform.startswith("win32") or sys.platform == "ios":
pytest.skip("Fuzzer doesn't run on Windows or iOS", allow_module_level=True)

libjpeg_turbo_version = features.version("libjpeg_turbo")
if libjpeg_turbo_version is not None:
Expand Down
5 changes: 1 addition & 4 deletions Tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
import pytest


@pytest.mark.skipif(
sys.platform in {"ios", "android"},
reason="Not required on mobile",
)
@pytest.mark.skipif(sys.platform == "ios", reason="Processes not supported on iOS")
@pytest.mark.parametrize(
"args, report",
((["PIL"], False), (["PIL", "--report"], True), (["PIL.report"], True)),
Expand Down
4 changes: 1 addition & 3 deletions checks/check_wheel.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ def test_wheel_features() -> None:
elif sys.platform == "ios":
# Can't distribute raqm due to licensing, and there's no system version;
# fribidi and harfbuzz won't be available if raqm isn't available.
expected_features.remove("fribidi")
expected_features.remove("raqm")
expected_features.remove("harfbuzz")
expected_features -= {"raqm", "fribidi", "harfbuzz"}

assert set(features.get_supported_features()) == expected_features
9 changes: 6 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,11 @@ test-requires = [
xbuild-tools = [ ]

[tool.cibuildwheel.macos]
# Disable platform guessing on macOS to avoid picking up homebrew etc
# Disable platform guessing on macOS to avoid picking up Homebrew etc.
config-settings = "raqm=enable raqm=vendor fribidi=vendor imagequant=disable platform-guessing=disable"

[tool.cibuildwheel.macos.environment]
# Isolate macOS build environment from homebrew etc
# Isolate macOS build environment from Homebrew etc.
PATH = "$(pwd)/build/deps/darwin/bin:$(dirname $(which python3)):/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"

[tool.cibuildwheel.ios]
Expand All @@ -131,7 +131,10 @@ test-sources = [
"pyproject.toml",
"selftest.py",
]
test-command = "python -m pytest -vv selftest.py checks/check_wheel.py Tests"
test-command = [
"python -m selftest",
"python -m pytest checks/check_wheel.py Tests",
]

# There's no numpy wheel for iOS (yet...)
test-requires = [ ]
Expand Down
Loading