beeware / briefcase

Tools to support converting a Python project into a standalone native application.
https://briefcase.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
2.65k stars 372 forks source link

can't build for ios #2042

Closed hemna closed 2 weeks ago

hemna commented 2 weeks ago

Describe the bug

trying to run briefcase create ios and it fails.

└─> briefcase create ios

Application 'peen' already exists; overwrite [y/N]? y

[peen] Removing old application bundle...

[peen] Generating application template...
Using app template: https://github.com/beeware/briefcase-iOS-Xcode-template.git, branch v0.3.20
Using existing template (sha 37a9ea7ae97113fde10412842e66ae500db8e9e8, updated Wed Oct  9 11:39:11 2024)

[peen] Installing support package...
Using support package https://briefcase-support.s3.amazonaws.com/python/3.10/iOS/Python-3.10-iOS-support.b10.tar.gz
Python-3.10-iOS-support.b10.tar.gz already downloaded
Unpacking support package... done

[peen] Installing application code...
Installing src/peen... done

[peen] Installing requirements...
/Users/I530566/devel/mine/hamradio/beeware-tutorial/.venv/lib/python3.10/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.
  warnings.warn("Setuptools is replacing distutils.")
Looking in indexes: https://pypi.org/simple, https://pypi.anaconda.org/beeware/simple
Collecting httpx
  Using cached httpx-0.27.2-py3-none-any.whl.metadata (7.1 kB)
Collecting aprsd
  Using cached aprsd-3.4.2-py3-none-any.whl.metadata (39 kB)
Collecting toga-iOS~=0.4.7
  Using cached toga_iOS-0.4.8-py3-none-any.whl.metadata (3.1 kB)
Collecting std-nslog~=1.0.3
  Using cached std_nslog-1.0.3-py3-none-any.whl.metadata (3.6 kB)
Collecting anyio (from httpx)
  Using cached anyio-4.6.2.post1-py3-none-any.whl.metadata (4.7 kB)
Collecting certifi (from httpx)
  Using cached certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)
Collecting httpcore==1.* (from httpx)
  Using cached httpcore-1.0.6-py3-none-any.whl.metadata (21 kB)
Collecting idna (from httpx)
  Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting sniffio (from httpx)
  Using cached sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)
Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx)
  Using cached h11-0.14.0-py3-none-any.whl.metadata (8.2 kB)
Collecting aprslib==0.7.2 (from aprsd)
  Using cached aprslib-0.7.2-py2.py3-none-any.whl.metadata (2.4 kB)
Collecting attrs==24.2.0 (from aprsd)
  Using cached attrs-24.2.0-py3-none-any.whl.metadata (11 kB)
Collecting ax253==0.1.5.post1 (from aprsd)
  Using cached ax253-0.1.5.post1-py3-none-any.whl.metadata (14 kB)
Collecting beautifulsoup4==4.12.3 (from aprsd)
  Using cached beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)
Collecting bidict==0.23.1 (from aprsd)
  Using cached bidict-0.23.1-py3-none-any.whl.metadata (8.7 kB)
Collecting bitarray==3.0.0 (from aprsd)
  Downloading bitarray-3.0.0.tar.gz (126 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting blinker==1.8.2 (from aprsd)
  Using cached blinker-1.8.2-py3-none-any.whl.metadata (1.6 kB)
Collecting charset-normalizer==3.4.0 (from aprsd)
  Downloading charset_normalizer-3.4.0-py3-none-any.whl.metadata (34 kB)
Collecting click==8.1.7 (from aprsd)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting click-params==0.5.0 (from aprsd)
  Using cached click_params-0.5.0-py3-none-any.whl.metadata (3.1 kB)
Collecting commonmark==0.9.1 (from aprsd)
  Using cached commonmark-0.9.1-py2.py3-none-any.whl.metadata (5.7 kB)
Collecting dataclasses==0.6 (from aprsd)
  Using cached dataclasses-0.6-py3-none-any.whl.metadata (3.0 kB)
Collecting dataclasses-json==0.6.7 (from aprsd)
  Using cached dataclasses_json-0.6.7-py3-none-any.whl.metadata (25 kB)
Collecting debtcollector==3.0.0 (from aprsd)
  Using cached debtcollector-3.0.0-py3-none-any.whl.metadata (2.3 kB)
Collecting deprecated==1.2.14 (from aprsd)
  Using cached Deprecated-1.2.14-py2.py3-none-any.whl.metadata (5.4 kB)
Collecting flask==3.0.3 (from aprsd)
  Using cached flask-3.0.3-py3-none-any.whl.metadata (3.2 kB)
Collecting flask-httpauth==4.8.0 (from aprsd)
  Using cached Flask_HTTPAuth-4.8.0-py3-none-any.whl.metadata (2.9 kB)
Collecting flask-socketio==5.4.1 (from aprsd)
  Using cached Flask_SocketIO-5.4.1-py3-none-any.whl.metadata (2.6 kB)
Collecting geographiclib==2.0 (from aprsd)
  Using cached geographiclib-2.0-py3-none-any.whl.metadata (1.4 kB)
Collecting geopy==2.4.1 (from aprsd)
  Using cached geopy-2.4.1-py3-none-any.whl.metadata (6.8 kB)
Collecting imapclient==3.0.1 (from aprsd)
  Using cached IMAPClient-3.0.1-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting importlib-metadata==8.5.0 (from aprsd)
  Using cached importlib_metadata-8.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting itsdangerous==2.2.0 (from aprsd)
  Using cached itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
Collecting jinja2==3.1.4 (from aprsd)
  Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting kiss3==8.0.0 (from aprsd)
  Using cached kiss3-8.0.0-py3-none-any.whl.metadata (4.8 kB)
Collecting loguru==0.7.2 (from aprsd)
  Using cached loguru-0.7.2-py3-none-any.whl.metadata (23 kB)
Collecting markupsafe==3.0.2 (from aprsd)
  Downloading markupsafe-3.0.2.tar.gz (20 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting marshmallow==3.23.0 (from aprsd)
  Using cached marshmallow-3.23.0-py3-none-any.whl.metadata (7.6 kB)
Collecting mypy-extensions==1.0.0 (from aprsd)
  Using cached mypy_extensions-1.0.0-py3-none-any.whl.metadata (1.1 kB)
Collecting netaddr==1.3.0 (from aprsd)
  Using cached netaddr-1.3.0-py3-none-any.whl.metadata (5.0 kB)
Collecting oslo-config==9.6.0 (from aprsd)
  Using cached oslo.config-9.6.0-py3-none-any.whl.metadata (3.0 kB)
Collecting oslo-i18n==6.4.0 (from aprsd)
  Using cached oslo.i18n-6.4.0-py3-none-any.whl.metadata (2.1 kB)
Collecting packaging==24.1 (from aprsd)
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting pbr==6.1.0 (from aprsd)
  Using cached pbr-6.1.0-py2.py3-none-any.whl.metadata (3.4 kB)
Collecting pluggy==1.5.0 (from aprsd)
  Using cached pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting pygments==2.18.0 (from aprsd)
  Using cached pygments-2.18.0-py3-none-any.whl.metadata (2.5 kB)
Collecting pyserial==3.5 (from aprsd)
  Using cached pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
Collecting pyserial-asyncio==0.6 (from aprsd)
  Using cached pyserial_asyncio-0.6-py3-none-any.whl.metadata (1.3 kB)
Collecting python-engineio==4.10.1 (from aprsd)
  Using cached python_engineio-4.10.1-py3-none-any.whl.metadata (2.2 kB)
Collecting python-socketio==5.11.4 (from aprsd)
  Using cached python_socketio-5.11.4-py3-none-any.whl.metadata (3.2 kB)
Collecting pytz==2024.2 (from aprsd)
  Using cached pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting pyyaml==6.0.2 (from aprsd)
  Using cached pyyaml-6.0.2.tar.gz (130 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting requests==2.32.3 (from aprsd)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting rfc3986==2.0.0 (from aprsd)
  Using cached rfc3986-2.0.0-py2.py3-none-any.whl.metadata (6.6 kB)
Collecting rich==12.6.0 (from aprsd)
  Using cached rich-12.6.0-py3-none-any.whl.metadata (18 kB)
Collecting rush==2021.4.0 (from aprsd)
  Using cached rush-2021.4.0-py3-none-any.whl.metadata (3.5 kB)
Collecting shellingham==1.5.4 (from aprsd)
  Using cached shellingham-1.5.4-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting simple-websocket==1.1.0 (from aprsd)
  Using cached simple_websocket-1.1.0-py3-none-any.whl.metadata (1.5 kB)
Collecting six==1.16.0 (from aprsd)
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting soupsieve==2.6 (from aprsd)
  Using cached soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB)
Collecting stevedore==5.3.0 (from aprsd)
  Using cached stevedore-5.3.0-py3-none-any.whl.metadata (2.3 kB)
Collecting tabulate==0.9.0 (from aprsd)
  Using cached tabulate-0.9.0-py3-none-any.whl.metadata (34 kB)
Collecting thesmuggler==1.0.1 (from aprsd)
  Using cached thesmuggler-1.0.1-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting typing-extensions==4.12.2 (from aprsd)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting typing-inspect==0.9.0 (from aprsd)
  Using cached typing_inspect-0.9.0-py3-none-any.whl.metadata (1.5 kB)
Collecting tzlocal==5.2 (from aprsd)
  Using cached tzlocal-5.2-py3-none-any.whl.metadata (7.8 kB)
Collecting update-checker==0.18.0 (from aprsd)
  Using cached update_checker-0.18.0-py3-none-any.whl.metadata (2.3 kB)
Collecting urllib3==2.2.3 (from aprsd)
  Using cached urllib3-2.2.3-py3-none-any.whl.metadata (6.5 kB)
Collecting validators==0.22.0 (from aprsd)
  Using cached validators-0.22.0-py3-none-any.whl.metadata (4.7 kB)
Collecting werkzeug==3.0.4 (from aprsd)
  Using cached werkzeug-3.0.4-py3-none-any.whl.metadata (3.7 kB)
Collecting wrapt==1.16.0 (from aprsd)
  Downloading wrapt-1.16.0-py3-none-any.whl.metadata (6.6 kB)
Collecting wsproto==1.2.0 (from aprsd)
  Using cached wsproto-1.2.0-py3-none-any.whl.metadata (5.6 kB)
Collecting zipp==3.20.2 (from aprsd)
  Using cached zipp-3.20.2-py3-none-any.whl.metadata (3.7 kB)
Collecting fonttools<5.0.0,>=4.42.1 (from toga-iOS~=0.4.7)
  Using cached fonttools-4.54.1-py3-none-any.whl.metadata (163 kB)
Collecting rubicon-objc<0.5.0,>=0.4.9 (from toga-iOS~=0.4.7)
  Using cached rubicon_objc-0.4.9-py3-none-any.whl.metadata (5.9 kB)
Collecting toga-core==0.4.8 (from toga-iOS~=0.4.7)
  Using cached toga_core-0.4.8-py3-none-any.whl.metadata (5.3 kB)
Collecting travertino>=0.3.0 (from toga-core==0.4.8->toga-iOS~=0.4.7)
  Using cached travertino-0.3.0-py3-none-any.whl.metadata (4.3 kB)
Collecting exceptiongroup>=1.0.2 (from anyio->httpx)
  Using cached exceptiongroup-1.2.2-py3-none-any.whl.metadata (6.6 kB)
Using cached httpx-0.27.2-py3-none-any.whl (76 kB)
Using cached httpcore-1.0.6-py3-none-any.whl (78 kB)
Using cached aprsd-3.4.2-py3-none-any.whl (2.3 MB)
Using cached aprslib-0.7.2-py2.py3-none-any.whl (44 kB)
Using cached attrs-24.2.0-py3-none-any.whl (63 kB)
Using cached ax253-0.1.5.post1-py3-none-any.whl (20 kB)
Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
Using cached bidict-0.23.1-py3-none-any.whl (32 kB)
Using cached blinker-1.8.2-py3-none-any.whl (9.5 kB)
Using cached certifi-2024.8.30-py3-none-any.whl (167 kB)
Downloading charset_normalizer-3.4.0-py3-none-any.whl (49 kB)
Using cached click-8.1.7-py3-none-any.whl (97 kB)
Using cached click_params-0.5.0-py3-none-any.whl (13 kB)
Using cached commonmark-0.9.1-py2.py3-none-any.whl (51 kB)
Using cached dataclasses-0.6-py3-none-any.whl (14 kB)
Using cached dataclasses_json-0.6.7-py3-none-any.whl (28 kB)
Using cached debtcollector-3.0.0-py3-none-any.whl (23 kB)
Using cached Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB)
Using cached flask-3.0.3-py3-none-any.whl (101 kB)
Using cached Flask_HTTPAuth-4.8.0-py3-none-any.whl (7.0 kB)
Using cached Flask_SocketIO-5.4.1-py3-none-any.whl (18 kB)
Using cached geographiclib-2.0-py3-none-any.whl (40 kB)
Using cached geopy-2.4.1-py3-none-any.whl (125 kB)
Using cached h11-0.14.0-py3-none-any.whl (58 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached IMAPClient-3.0.1-py2.py3-none-any.whl (182 kB)
Using cached importlib_metadata-8.5.0-py3-none-any.whl (26 kB)
Using cached itsdangerous-2.2.0-py3-none-any.whl (16 kB)
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Using cached kiss3-8.0.0-py3-none-any.whl (11 kB)
Using cached loguru-0.7.2-py3-none-any.whl (62 kB)
Using cached marshmallow-3.23.0-py3-none-any.whl (49 kB)
Using cached mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)
Using cached netaddr-1.3.0-py3-none-any.whl (2.3 MB)
Using cached oslo.config-9.6.0-py3-none-any.whl (132 kB)
Using cached oslo.i18n-6.4.0-py3-none-any.whl (46 kB)
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Using cached pbr-6.1.0-py2.py3-none-any.whl (108 kB)
Using cached pluggy-1.5.0-py3-none-any.whl (20 kB)
Using cached pygments-2.18.0-py3-none-any.whl (1.2 MB)
Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Using cached pyserial_asyncio-0.6-py3-none-any.whl (7.6 kB)
Using cached python_engineio-4.10.1-py3-none-any.whl (57 kB)
Using cached python_socketio-5.11.4-py3-none-any.whl (76 kB)
Using cached pytz-2024.2-py2.py3-none-any.whl (508 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached rfc3986-2.0.0-py2.py3-none-any.whl (31 kB)
Using cached rich-12.6.0-py3-none-any.whl (237 kB)
Using cached rush-2021.4.0-py3-none-any.whl (18 kB)
Using cached shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Using cached simple_websocket-1.1.0-py3-none-any.whl (13 kB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached soupsieve-2.6-py3-none-any.whl (36 kB)
Using cached stevedore-5.3.0-py3-none-any.whl (49 kB)
Using cached tabulate-0.9.0-py3-none-any.whl (35 kB)
Using cached thesmuggler-1.0.1-py2.py3-none-any.whl (3.9 kB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Using cached typing_inspect-0.9.0-py3-none-any.whl (8.8 kB)
Using cached tzlocal-5.2-py3-none-any.whl (17 kB)
Using cached update_checker-0.18.0-py3-none-any.whl (7.0 kB)
Using cached urllib3-2.2.3-py3-none-any.whl (126 kB)
Using cached validators-0.22.0-py3-none-any.whl (26 kB)
Using cached werkzeug-3.0.4-py3-none-any.whl (227 kB)
Downloading wrapt-1.16.0-py3-none-any.whl (23 kB)
Using cached wsproto-1.2.0-py3-none-any.whl (24 kB)
Using cached zipp-3.20.2-py3-none-any.whl (9.2 kB)
Using cached toga_iOS-0.4.8-py3-none-any.whl (435 kB)
Using cached toga_core-0.4.8-py3-none-any.whl (139 kB)
Using cached std_nslog-1.0.3-py3-none-any.whl (4.8 kB)
Using cached fonttools-4.54.1-py3-none-any.whl (1.1 MB)
Using cached rubicon_objc-0.4.9-py3-none-any.whl (63 kB)
Using cached anyio-4.6.2.post1-py3-none-any.whl (90 kB)
Using cached sniffio-1.3.1-py3-none-any.whl (10 kB)
Using cached exceptiongroup-1.2.2-py3-none-any.whl (16 kB)
Using cached travertino-0.3.0-py3-none-any.whl (16 kB)
Building wheels for collected packages: bitarray, markupsafe, pyyaml
  Building wheel for bitarray (setup.py): started
  Building wheel for bitarray (setup.py): finished with status 'error'
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [19 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.ios-13.0-arm64-iphoneos-cpython-310
      creating build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/util.py -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/__init__.py -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/test_bitarray.py -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/test_util.py -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/bitarray.h -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/pythoncapi_compat.h -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/test_281.pickle -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/py.typed -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/__init__.pyi -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      copying bitarray/util.pyi -> build/lib.ios-13.0-arm64-iphoneos-cpython-310/bitarray
      running build_ext
      building 'bitarray._bitarray' extension
      error: CCompiler.compile: Cannot compile native modules
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for bitarray
  Running setup.py clean for bitarray
  Building wheel for markupsafe (pyproject.toml): started
  Building wheel for markupsafe (pyproject.toml): finished with status 'done'
  Created wheel for markupsafe: filename=MarkupSafe-3.0.2-py3-none-any.whl size=9304 sha256=feb52b7d0c10e201474e1edb835c90d47e14334446a3079870b4b878e60699b1
  Stored in directory: /Users/I530566/Library/Caches/pip/wheels/6b/a7/76/330d3979389a2d294838832f620ac3fd32b4ce50d1524c1e29
  Building wheel for pyyaml (pyproject.toml): started
  Building wheel for pyyaml (pyproject.toml): finished with status 'done'
  Created wheel for pyyaml: filename=PyYAML-6.0.2-cp310-cp310-macosx_14_0_arm64.whl size=45364 sha256=00fad989016e42fd3c9a8d1168a312cbc08972a403b80a96081b64c53bf5c06e
  Stored in directory: /Users/I530566/Library/Caches/pip/wheels/92/98/bd/e8cdef76a754cb8d04e8d08c82b1e06df63e77faf387b18dd3
Successfully built markupsafe pyyaml
Failed to build bitarray
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (bitarray)
Installing app requirements for iPhone device... errored

Steps to reproduce

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior

that the project is created

Screenshots

My pyproject.toml

└─> cat -p pyproject.toml
# This project was generated with 0.3.20 using template: https://github.com/beeware/briefcase-template@v0.3.20
[tool.briefcase]
project_name = "Peen"
bundle = "com.hemna"
version = "0.0.1"
url = "https://hemna.com/peen"
license.file = "LICENSE"
author = "Walter A. Boring IV"
author_email = "waboring@hemna.com"

[tool.briefcase.app.peen]
formal_name = "Peen"
description = "My first application"
long_description = """More details about the app should go here.
"""
sources = [
    "src/peen",
]
test_sources = [
    "tests",
]

requires = [
  "httpx",
  "aprsd",
]
test_requires = [
    "pytest",
]

[tool.briefcase.app.peen.macOS]
universal_build = true
requires = [
    "toga-cocoa~=0.4.7",
    "std-nslog~=1.0.3",
]

[tool.briefcase.app.peen.linux]
requires = [
    "toga-gtk~=0.4.7",
]

[tool.briefcase.app.peen.linux.system.debian]
system_requires = [
    # Needed to compile pycairo wheel
    "libcairo2-dev",
    # Needed to compile PyGObject wheel
    "libgirepository1.0-dev",
]

system_runtime_requires = [
    # Needed to provide GTK and its GI bindings
    "gir1.2-gtk-3.0",
    "libgirepository-1.0-1",
    # Dependencies that GTK looks for at runtime
    "libcanberra-gtk3-module",
    # Needed to provide WebKit2 at runtime
    # Note: Debian 11 and Ubuntu 20.04 require gir1.2-webkit2-4.0 instead
    # "gir1.2-webkit2-4.1",
]

[tool.briefcase.app.peen.linux.system.rhel]
system_requires = [
    # Needed to compile pycairo wheel
    "cairo-gobject-devel",
    # Needed to compile PyGObject wheel
    "gobject-introspection-devel",
]

system_runtime_requires = [
    # Needed to support Python bindings to GTK
    "gobject-introspection",
    # Needed to provide GTK
    "gtk3",
    # Dependencies that GTK looks for at runtime
    "libcanberra-gtk3",
    # Needed to provide WebKit2 at runtime
    # "webkit2gtk3",
]

[tool.briefcase.app.peen.linux.system.suse]
system_requires = [
    # Needed to compile pycairo wheel
    "cairo-devel",
    # Needed to compile PyGObject wheel
    "gobject-introspection-devel",
]

system_runtime_requires = [
    # Needed to provide GTK
    "gtk3",
    # Needed to support Python bindings to GTK
    "gobject-introspection", "typelib(Gtk) = 3.0",
    # Dependencies that GTK looks for at runtime
    "libcanberra-gtk3-module",
    # Needed to provide WebKit2 at runtime
    # "libwebkit2gtk3", "typelib(WebKit2)",
]

[tool.briefcase.app.peen.linux.system.arch]
system_requires = [
    # Needed to compile pycairo wheel
    "cairo",
    # Needed to compile PyGObject wheel
    "gobject-introspection",
    # Runtime dependencies that need to exist so that the
    # Arch package passes final validation.
    # Needed to provide GTK
    "gtk3",
    # Dependencies that GTK looks for at runtime
    "libcanberra",
    # Needed to provide WebKit2
    # "webkit2gtk",
]

system_runtime_requires = [
    # Needed to provide GTK
    "gtk3",
    # Needed to provide PyGObject bindings
    "gobject-introspection-runtime",
    # Dependencies that GTK looks for at runtime
    "libcanberra",
    # Needed to provide WebKit2 at runtime
    # "webkit2gtk",
]

[tool.briefcase.app.peen.linux.appimage]
manylinux = "manylinux_2_28"

system_requires = [
    # Needed to compile pycairo wheel
    "cairo-gobject-devel",
    # Needed to compile PyGObject wheel
    "gobject-introspection-devel",
    # Needed to provide GTK
    "gtk3-devel",
    # Dependencies that GTK looks for at runtime, that need to be
    # in the build environment to be picked up by linuxdeploy
    "libcanberra-gtk3",
    "PackageKit-gtk3-module",
    "gvfs-client",
]

linuxdeploy_plugins = [
    "DEPLOY_GTK_VERSION=3 gtk",
]

[tool.briefcase.app.peen.linux.flatpak]
flatpak_runtime = "org.gnome.Platform"
flatpak_runtime_version = "47"
flatpak_sdk = "org.gnome.Sdk"

[tool.briefcase.app.peen.windows]
requires = [
    "toga-winforms~=0.4.7",
]

# Mobile deployments
[tool.briefcase.app.peen.iOS]
requires = [
    "toga-iOS~=0.4.7",
    "std-nslog~=1.0.3",
]

[tool.briefcase.app.peen.android]
requires = [
    "toga-android~=0.4.7",
]

base_theme = "Theme.MaterialComponents.Light.DarkActionBar"

build_gradle_dependencies = [
    "com.google.android.material:material:1.12.0",
    # Needed for DetailedList
    # "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0",
    # Needed for MapView
    # "org.osmdroid:osmdroid-android:6.1.20",
]

# Web deployments
[tool.briefcase.app.peen.web]
requires = [
    "toga-web~=0.4.7",
]
style_framework = "Shoelace v2.3"

Environment

Logs

Additional context

No response

rmartin16 commented 2 weeks ago

The aprsd package is depending on bitarray==3.0.0 but the latest version of bitarray for iOS is 2.7.3. Currently, your best options are to use a version of aprsd that can use bitarray==2.7.3 or use beeware/mobile-forge to build a wheel for bitarray==3.0.0 for iOS. As a note, a similar issue could happen for other non-pure-Python dependencies that aren't already available from BeeWare on Anaconda.

freakboy3742 commented 2 weeks ago

Closing on the basis that there's not much we can do here; we can't control pip's error message, which is technically accurate (if not especially helpful); and the iOS binary requirement is documented.