Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macos deployment target #80

Closed
dcnieho opened this issue Feb 8, 2023 · 7 comments
Closed

macos deployment target #80

dcnieho opened this issue Feb 8, 2023 · 7 comments

Comments

@dcnieho
Copy link
Contributor

dcnieho commented Feb 8, 2023

Despite your pyproject.toml listing 11.0 as a deployment target, the arm64 (but not the x86_64) wheels for 3.10 and 3.9 seem to have 13.0 as deployment target, see here: https://pypi.org/project/imgui-bundle/#files. That is causing trouble for some of my users who are on an M1, its a pretty high requirement to reach. Is it possible to correct that?

@dcnieho
Copy link
Contributor Author

dcnieho commented Feb 9, 2023

Hmm, i have another M1 Mac user who (without xcode installed) had no problem a while ago. The WHEEL file in their imgui_bundle-0.8.2.dist-info lists this:

Wheel-Version: 1.0
Generator: skbuild 0.16.6
Root-Is-Purelib: false
Tag: cp310-cp310-macosx_10_16_x86_64

which surprises me. Apparently they run through rosetta:
sysconfig.get_platform()
'macosx-10.9-x86_64'
sysconfig.get_config_vars()['HOST_GNU_TYPE']
'x86_64-apple-darwin13.4.0'

Thats fine, but what surprises me is that they have a macosx_10_16 wheel while whats on pypi for 0.8.2 is a macosx_11_0 wheel.

Whats the lowest deployment target you can get away with by the way? The lower the better is my understand, because the more compatible.

@dcnieho
Copy link
Contributor Author

dcnieho commented Feb 9, 2023

The other user now managed to install after installing xcode (compile failed since they didn't have it, xcrun not found). This is whats in the wheel file of the installed package:
Wheel-Version: 1.0
Generator: skbuild 0.16.6
Root-Is-Purelib: false
Tag: cp310-cp310-macosx_10_16_x86_64

sysconfig.get_platform()
'macosx-10.9-x86_64'
sysconfig.get_config_vars()['HOST_GNU_TYPE']
'x86_64-apple-darwin13.4.0'

So same as the other guy for which it did work

@pthom
Copy link
Owner

pthom commented Feb 9, 2023

I'm sorry I'm on holiday, and do not have much time for this.
Some details: the mac wheels are built by cibuildwheel.

For x86_64, they are built on github. For ARM, I cannot trust github builders since they are running on Intel Mac and a dependency on Intel IPP is added even if they are trying to build for ARM.

So I have to build them on my own mac. I build them with cibuildwheel also, and I just replace archs = ["arm64"] inside pyproject.toml

So the build should be targeting 11.0, since pyproject mentions:
MACOSX_DEPLOYMENT_TARGET="11.0"

And this is what I see during the build:
image

However, near the end, I can read an unhelpful message in the build log:

  [WARNING] This wheel needs a higher macOS version than is set in MACOSX_DEPLOYMENT_TARGET variable.  To silence this warning, set MACOSX_DEPLOYMENT_TARGET to at least 13_0 or recreate these files with lower MACOSX_DEPLOYMENT_TARGET:
  _skbuild/macosx-11.0-arm64-3.9/setuptools/bdist.macosx-11.0-arm64/wheel/imgui_bundle/_imgui_bundle.cpython-311-darwin.so[WARNING] This wheel needs a higher macOS version than is set in MACOSX_DEPLOYMENT_TARGET variable.  To silence this warning, set MACOSX_DEPLOYMENT_TARGET to at least 13_0 or recreate these files with lower MACOSX_DEPLOYMENT_TARGET:
  _skbuild/macosx-11.0-arm64-3.9/setuptools/bdist.macosx-11.0-arm64/wheel/imgui_bundle/_imgui_bundle.cpython-311-darwin.socreating _skbuild/macosx-11.0-arm64-3.9/setuptools/bdist.macosx-11.0-arm64/wheel/imgui_bundle-0.8.3.dist-info/WHEEL
  creating '/private/var/folders/w1/w77kvvl9613022ksfxj7v8xh0000gn/T/pip-wheel-2w3mmnbn/.tmp-p0oakfmp/imgui_bundle-0.8.3-cp39-cp39-macosx_13_0_arm64.whl' and adding '_skbuild/macosx-11.0-arm64-3.9/setuptools/bdist.macosx-11.0-arm64/wheel' to it

Attached are the full logs:

cib_err.txt
cib_log.txt

@dcnieho
Copy link
Contributor Author

dcnieho commented Feb 13, 2023

Enjoy your holiday! No rush!

I do see -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 in the command lines, i am not sure what that acts on though.

Maybe its the OpenCV? Have you tried specifying -mmacosx-version-min=11 for the compiler command lines? How have you chosen 11.0 by the way? The lower the better I think, as long as the compiler toolchain still supports what you need. It seems 10.9 is common, for my own project i had to use 10.14 due to need for c++17 features (if i recall correctly, thats the first version where those are properly supported).

@pthom
Copy link
Owner

pthom commented Nov 1, 2023

Closing this, as I cannot reproduce it, and it was probably solved in the next releases. Please reopen if still present.

@pthom pthom closed this as completed Nov 1, 2023
@dcnieho
Copy link
Contributor Author

dcnieho commented Jun 6, 2024

@pthom I cannot reopen, but this issue persists. I have a user on OSX 13.4.1 on an M1 pro for who the wheel gets compiled through xcode when trying to install imgui_bundle. For students of this user who do not have xcode, the install fails completely (of course).

I asked the user to give me some info about their environment.
The potentially relevant bit of pip inspect > inspect.json is:

  "environment": {
    "implementation_name": "cpython",
    "implementation_version": "3.11.7",
    "os_name": "posix",
    "platform_machine": "x86_64",
    "platform_release": "22.5.0",
    "platform_system": "Darwin",
    "platform_version": "Darwin Kernel Version 22.5.0: Thu Jun  8 22:22:20 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T6000",
    "python_full_version": "3.11.7",
    "platform_python_implementation": "CPython",
    "python_version": "3.11",
    "sys_platform": "darwin"
  }

A selection of what pip debug --verbose
gives us:

pip version: pip 23.3.1 from /opt/anaconda3/envs/testvoorDied/lib/python3.11/site-packages/pip (python 3.11)
sys.version: 3.11.7 (main, Dec 15 2023, 12:09:04) [Clang 14.0.6 ]
sys.executable: /opt/anaconda3/envs/testvoorDied/bin/python
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: darwin
sys.implementation:
  name: cpython
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /opt/anaconda3/envs/testvoorDied/lib/python3.11/site-packages/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
[...]
Compatible tags: 1964
  cp311-cp311-macosx_10_16_x86_64
  cp311-cp311-macosx_10_16_intel
  cp311-cp311-macosx_10_16_fat64
  cp311-cp311-macosx_10_16_fat32
  cp311-cp311-macosx_10_16_universal2
  cp311-cp311-macosx_10_16_universal
[...]
  cp311-abi3-macosx_10_16_x86_64
  cp311-abi3-macosx_10_16_intel
  cp311-abi3-macosx_10_16_fat64
  cp311-abi3-macosx_10_16_fat32
  cp311-abi3-macosx_10_16_universal2
  cp311-abi3-macosx_10_16_universal
[...]
  cp311-none-macosx_10_16_x86_64
  cp311-none-macosx_10_16_intel
  cp311-none-macosx_10_16_fat64
  cp311-none-macosx_10_16_fat32
  cp311-none-macosx_10_16_universal2
  cp311-none-macosx_10_16_universal
[...]
  cp310-abi3-macosx_10_16_x86_64
  cp310-abi3-macosx_10_16_intel
  cp310-abi3-macosx_10_16_fat64
  cp310-abi3-macosx_10_16_fat32
  cp310-abi3-macosx_10_16_universal2
  cp310-abi3-macosx_10_16_universal
[...]
  cp39-abi3-macosx_10_16_x86_64
  cp39-abi3-macosx_10_16_intel
  cp39-abi3-macosx_10_16_fat64
  cp39-abi3-macosx_10_16_fat32
  cp39-abi3-macosx_10_16_universal2
  cp39-abi3-macosx_10_16_universal
[...]
  py311-none-macosx_10_16_x86_64
  py311-none-macosx_10_16_intel
  py311-none-macosx_10_16_fat64
  py311-none-macosx_10_16_fat32
  py311-none-macosx_10_16_universal2
  py311-none-macosx_10_16_universal
[...]
  py3-none-macosx_10_16_x86_64
  py3-none-macosx_10_16_intel
  py3-none-macosx_10_16_fat64
  py3-none-macosx_10_16_fat32
  py3-none-macosx_10_16_universal2
  py3-none-macosx_10_16_universal
[...]
  cp311-none-any
  py311-none-any
  py3-none-any
  py310-none-any
  py39-none-any
  py38-none-any
  py37-none-any
  py36-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any

and a whole bunch of variations with lower Python versions and lower deployment targets (10_15, etc).

The problem is that your packages on pypi are imgui_bundle-1.3.0-cp311-cp311-macosx_11_0_x86_64.whl and imgui_bundle-1.3.0-cp311-cp311-macosx_11_0_arm64.whl, in other words, they target a higher deployment targets than this user (and a bunch more) have.

Compared to our discussion from before, i see that your wheels now target 11.0 at least, instead of 13.0. But thats still too high.

Could you try specifying 10.14? I am pointing out that one as some code i have that uses pretty new C++ features compiles and bundles fine with MACOSX_DEPLOYMENT_TARGET: 10.14 in my github runner, and the lower the better (the more compatible).

@dcnieho
Copy link
Contributor Author

dcnieho commented Jun 6, 2024

So that's the following locations where you could set 10.14 instead of 11.0:

environment = { MACOSX_DEPLOYMENT_TARGET="11.0" }

MACOSX_DEPLOYMENT_TARGET: "11.0"

MACOSX_DEPLOYMENT_TARGET: "11.0"

MACOSX_DEPLOYMENT_TARGET: "11.0"

pthom added a commit that referenced this issue Jun 6, 2024
dcnieho added a commit to dcnieho/imgui_bundle that referenced this issue Jun 10, 2024
dcnieho added a commit to dcnieho/imgui_bundle that referenced this issue Jun 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants