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

Fails to install with python 3.12 due to aiohttp and uvloop dependencies #13

Open
paulwarwicker opened this issue May 26, 2024 · 6 comments

Comments

@paulwarwicker
Copy link

Very useful for my testing but hasn't been updated in some time. Now fails with python 3.12.

What happens:

(venv) ~ # pip install appdaemon-testing 
Collecting appdaemon-testing
  Using cached appdaemon_testing-0.1.4-py3-none-any.whl.metadata (5.7 kB)
Collecting appdaemon (from appdaemon-testing)
  Using cached appdaemon-4.4.2-py3-none-any.whl.metadata (15 kB)
Collecting aiohttp~=3.8.4 (from appdaemon->appdaemon-testing)
  Using cached aiohttp-3.8.6.tar.gz (7.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting aiohttp-jinja2~=1.5.1 (from appdaemon->appdaemon-testing)
  Using cached aiohttp_jinja2-1.5.1-py3-none-any.whl.metadata (8.1 kB)
Collecting astral~=3.2 (from appdaemon->appdaemon-testing)
  Using cached astral-3.2-py3-none-any.whl.metadata (1.7 kB)
Collecting bcrypt~=4.0.1 (from appdaemon->appdaemon-testing)
  Using cached bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl.metadata (9.0 kB)
Collecting deepdiff==6.3.0 (from appdaemon->appdaemon-testing)
  Using cached deepdiff-6.3.0-py3-none-any.whl.metadata (4.7 kB)
Collecting feedparser~=6.0.10 (from appdaemon->appdaemon-testing)
  Using cached feedparser-6.0.11-py3-none-any.whl.metadata (2.4 kB)
Collecting iso8601~=1.1.0 (from appdaemon->appdaemon-testing)
  Using cached iso8601-1.1.0-py3-none-any.whl.metadata (9.8 kB)
Collecting paho-mqtt~=1.6.1 (from appdaemon->appdaemon-testing)
  Using cached paho_mqtt-1.6.1-py3-none-any.whl
Collecting pid~=3.0.4 (from appdaemon->appdaemon-testing)
  Using cached pid-3.0.4-py2.py3-none-any.whl.metadata (5.0 kB)
Collecting python-dateutil~=2.8.2 (from appdaemon->appdaemon-testing)
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl.metadata (8.2 kB)
Collecting python-socketio<5.9,>=5.5 (from appdaemon->appdaemon-testing)
  Using cached python_socketio-5.8.0-py3-none-any.whl.metadata (3.2 kB)
Collecting pytz<2023.4.0,>=2022.7.1 (from appdaemon->appdaemon-testing)
  Using cached pytz-2023.3.post1-py2.py3-none-any.whl.metadata (22 kB)
Collecting pyyaml~=6.0 (from appdaemon->appdaemon-testing)
  Using cached PyYAML-6.0.1-cp312-cp312-linux_aarch64.whl
Collecting requests~=2.28.2 (from appdaemon->appdaemon-testing)
  Using cached requests-2.28.2-py3-none-any.whl.metadata (4.6 kB)
Collecting sockjs~=0.11.0 (from appdaemon->appdaemon-testing)
  Using cached sockjs-0.11.0-py3-none-any.whl.metadata (5.4 kB)
Collecting websocket-client~=1.5.1 (from appdaemon->appdaemon-testing)
  Using cached websocket_client-1.5.3-py3-none-any.whl.metadata (7.6 kB)
Collecting tomli~=2.0.1 (from appdaemon->appdaemon-testing)
  Using cached tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Collecting tomli-w~=1.0.0 (from appdaemon->appdaemon-testing)
  Using cached tomli_w-1.0.0-py3-none-any.whl.metadata (4.9 kB)
Collecting uvloop==0.17.0 (from appdaemon->appdaemon-testing)
  Using cached uvloop-0.17.0.tar.gz (2.3 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting ordered-set<4.2.0,>=4.0.2 (from deepdiff==6.3.0->appdaemon->appdaemon-testing)
  Using cached ordered_set-4.1.0-py3-none-any.whl.metadata (5.3 kB)
Requirement already satisfied: attrs>=17.3.0 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (23.2.0)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (3.3.2)
Requirement already satisfied: multidict<7.0,>=4.5 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (6.0.5)
Collecting async-timeout<5.0,>=4.0.0a3 (from aiohttp~=3.8.4->appdaemon->appdaemon-testing)
  Using cached async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Requirement already satisfied: yarl<2.0,>=1.0 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in ./venv/lib/python3.12/site-packages (from aiohttp~=3.8.4->appdaemon->appdaemon-testing) (1.3.1)
Collecting jinja2>=3.0.0 (from aiohttp-jinja2~=1.5.1->appdaemon->appdaemon-testing)
  Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting sgmllib3k (from feedparser~=6.0.10->appdaemon->appdaemon-testing)
  Using cached sgmllib3k-1.0.0-py3-none-any.whl
Requirement already satisfied: six>=1.5 in ./venv/lib/python3.12/site-packages (from python-dateutil~=2.8.2->appdaemon->appdaemon-testing) (1.16.0)
Collecting bidict>=0.21.0 (from python-socketio<5.9,>=5.5->appdaemon->appdaemon-testing)
  Using cached bidict-0.23.1-py3-none-any.whl.metadata (8.7 kB)
Collecting python-engineio>=4.3.0 (from python-socketio<5.9,>=5.5->appdaemon->appdaemon-testing)
  Using cached python_engineio-4.9.1-py3-none-any.whl.metadata (2.2 kB)
Requirement already satisfied: idna<4,>=2.5 in ./venv/lib/python3.12/site-packages (from requests~=2.28.2->appdaemon->appdaemon-testing) (3.7)
Collecting urllib3<1.27,>=1.21.1 (from requests~=2.28.2->appdaemon->appdaemon-testing)
  Using cached urllib3-1.26.18-py2.py3-none-any.whl.metadata (48 kB)
Requirement already satisfied: certifi>=2017.4.17 in ./venv/lib/python3.12/site-packages (from requests~=2.28.2->appdaemon->appdaemon-testing) (2024.2.2)
Collecting MarkupSafe>=2.0 (from jinja2>=3.0.0->aiohttp-jinja2~=1.5.1->appdaemon->appdaemon-testing)
  Using cached MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl.metadata (3.0 kB)
Collecting simple-websocket>=0.10.0 (from python-engineio>=4.3.0->python-socketio<5.9,>=5.5->appdaemon->appdaemon-testing)
  Using cached simple_websocket-1.0.0-py3-none-any.whl.metadata (1.3 kB)
Collecting wsproto (from simple-websocket>=0.10.0->python-engineio>=4.3.0->python-socketio<5.9,>=5.5->appdaemon->appdaemon-testing)
  Using cached wsproto-1.2.0-py3-none-any.whl.metadata (5.6 kB)
Collecting h11<1,>=0.9.0 (from wsproto->simple-websocket>=0.10.0->python-engineio>=4.3.0->python-socketio<5.9,>=5.5->appdaemon->appdaemon-testing)
  Using cached h11-0.14.0-py3-none-any.whl.metadata (8.2 kB)
Using cached appdaemon_testing-0.1.4-py3-none-any.whl (6.6 kB)
Using cached appdaemon-4.4.2-py3-none-any.whl (9.1 MB)
Using cached deepdiff-6.3.0-py3-none-any.whl (69 kB)
Using cached aiohttp_jinja2-1.5.1-py3-none-any.whl (11 kB)
Using cached astral-3.2-py3-none-any.whl (38 kB)
Using cached bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl (613 kB)
Using cached feedparser-6.0.11-py3-none-any.whl (81 kB)
Using cached iso8601-1.1.0-py3-none-any.whl (9.9 kB)
Using cached pid-3.0.4-py2.py3-none-any.whl (11 kB)
Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Using cached python_socketio-5.8.0-py3-none-any.whl (56 kB)
Using cached pytz-2023.3.post1-py2.py3-none-any.whl (502 kB)
Using cached requests-2.28.2-py3-none-any.whl (62 kB)
Using cached sockjs-0.11.0-py3-none-any.whl (23 kB)
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Using cached tomli_w-1.0.0-py3-none-any.whl (6.0 kB)
Using cached websocket_client-1.5.3-py3-none-any.whl (56 kB)
Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Using cached bidict-0.23.1-py3-none-any.whl (32 kB)
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Using cached ordered_set-4.1.0-py3-none-any.whl (7.6 kB)
Using cached python_engineio-4.9.1-py3-none-any.whl (57 kB)
Using cached urllib3-1.26.18-py2.py3-none-any.whl (143 kB)
Using cached MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl (33 kB)
Using cached simple_websocket-1.0.0-py3-none-any.whl (13 kB)
Using cached wsproto-1.2.0-py3-none-any.whl (24 kB)
Using cached h11-0.14.0-py3-none-any.whl (58 kB)
Building wheels for collected packages: uvloop, aiohttp
  Building wheel for uvloop (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for uvloop (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [240 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-312
      creating build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/_noop.py -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/__init__.py -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/_version.py -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/_testbase.py -> build/lib.linux-aarch64-cpython-312/uvloop
      running egg_info
      writing uvloop.egg-info/PKG-INFO
      writing dependency_links to uvloop.egg-info/dependency_links.txt
      writing requirements to uvloop.egg-info/requires.txt
      writing top-level names to uvloop.egg-info/top_level.txt
      reading manifest file 'uvloop.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*' found under directory 'vendor/libuv/.git'
      warning: no previously-included files matching '*' found under directory 'vendor/libuv/docs'
      warning: no previously-included files matching '*' found under directory 'vendor/libuv/img'
      adding license file 'LICENSE-APACHE'
      adding license file 'LICENSE-MIT'
      writing manifest file 'uvloop.egg-info/SOURCES.txt'
      /tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'uvloop.handles' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'uvloop.handles' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'uvloop.handles' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'uvloop.handles' to be distributed and are
              already explicitly excluding 'uvloop.handles' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      /tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'uvloop.includes' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'uvloop.includes' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'uvloop.includes' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'uvloop.includes' to be distributed and are
              already explicitly excluding 'uvloop.includes' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      copying uvloop/cbhandles.pxd -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/cbhandles.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/dns.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/errors.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/loop.c -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/loop.pxd -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/loop.pyi -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/loop.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/lru.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/pseudosock.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/py.typed -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/request.pxd -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/request.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/server.pxd -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/server.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/sslproto.pxd -> build/lib.linux-aarch64-cpython-312/uvloop
      copying uvloop/sslproto.pyx -> build/lib.linux-aarch64-cpython-312/uvloop
      creating build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/async_.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/async_.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/basetransport.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/basetransport.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/check.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/check.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/fsevent.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/fsevent.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/handle.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/handle.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/idle.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/idle.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/pipe.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/pipe.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/poll.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/poll.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/process.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/process.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/stream.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/stream.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/streamserver.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/streamserver.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/tcp.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/tcp.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/timer.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/timer.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/udp.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      copying uvloop/handles/udp.pyx -> build/lib.linux-aarch64-cpython-312/uvloop/handles
      creating build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/__init__.py -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/compat.h -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/consts.pxi -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/debug.h -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/debug.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/flowcontrol.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/fork_handler.h -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/python.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/stdlib.pxi -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/system.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      copying uvloop/includes/uv.pxd -> build/lib.linux-aarch64-cpython-312/uvloop/includes
      running build_ext
      checking for a BSD-compatible install... /usr/bin/install -c
      checking whether build environment is sane... yes
      checking for a race-free mkdir -p... ./install-sh -c -d
      checking for gawk... no
      checking for mawk... no
      checking for nawk... no
      checking for awk... awk
      checking whether make sets $(MAKE)... no
      checking whether make supports nested variables... no
      checking build system type... aarch64-unknown-linux-musl
      checking host system type... aarch64-unknown-linux-musl
      checking for gcc... no
      checking for cc... no
      checking for cl.exe... no
      checking for clang... no
      configure: error: in `/tmp/pip-install-qsgkb5fp/uvloop_a29779dd9b9c4630ae7392c4a6538141/build/libuv-aarch64':
      configure: error: no acceptable C compiler found in $PATH
      See `config.log' for more details
      Traceback (most recent call last):
        File "/root/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/root/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/root/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 410, in build_wheel
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 487, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 272, in <module>
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 184, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-n9xaeb6y/normal/lib/python3.12/site-packages/wheel/bdist_wheel.py", line 368, in run
          self.run_command("build")
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/command/build_ext.py", line 91, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-n9xaeb6y/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
          self.build_extensions()
        File "<string>", line 231, in build_extensions
        File "<string>", line 210, in build_libuv
        File "/usr/lib/python3.12/subprocess.py", line 571, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['./configure']' returned non-zero exit status 1.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for uvloop
  Building wheel for aiohttp (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for aiohttp (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [97 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-312
      creating build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_exceptions.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/abc.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/helpers.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/cookiejar.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_request.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_protocol.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/tcp_helpers.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_response.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_urldispatcher.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_app.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/client.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/typedefs.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/http_parser.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/pytest_plugin.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_middlewares.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_routedef.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/client_ws.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/tracing.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_server.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/hdrs.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/formdata.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/payload_streamer.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_ws.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/resolver.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/http_exceptions.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/connector.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/payload.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/__init__.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/log.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/test_utils.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_fileresponse.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/client_reqrep.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/client_proto.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_log.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/streams.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/base_protocol.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/locks.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/worker.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/multipart.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/http_websocket.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/http.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/http_writer.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/client_exceptions.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/web_runner.py -> build/lib.linux-aarch64-cpython-312/aiohttp
      running egg_info
      writing aiohttp.egg-info/PKG-INFO
      writing dependency_links to aiohttp.egg-info/dependency_links.txt
      writing requirements to aiohttp.egg-info/requires.txt
      writing top-level names to aiohttp.egg-info/top_level.txt
      reading manifest file 'aiohttp.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching 'aiohttp' anywhere in distribution
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.pyd' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      warning: no previously-included files matching '*.lib' found anywhere in distribution
      warning: no previously-included files matching '*.dll' found anywhere in distribution
      warning: no previously-included files matching '*.a' found anywhere in distribution
      warning: no previously-included files matching '*.obj' found anywhere in distribution
      warning: no previously-included files found matching 'aiohttp/*.html'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE.txt'
      writing manifest file 'aiohttp.egg-info/SOURCES.txt'
      copying aiohttp/_cparser.pxd -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_find_header.pxd -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_headers.pxi -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_helpers.pyi -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_helpers.pyx -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_http_parser.pyx -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_http_writer.pyx -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/_websocket.pyx -> build/lib.linux-aarch64-cpython-312/aiohttp
      copying aiohttp/py.typed -> build/lib.linux-aarch64-cpython-312/aiohttp
      creating build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_cparser.pxd.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_find_header.pxd.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyi.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyx.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_parser.pyx.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_writer.pyx.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_websocket.pyx.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/hdrs.py.hash -> build/lib.linux-aarch64-cpython-312/aiohttp/.hash
      running build_ext
      building 'aiohttp._websocket' extension
      creating build/temp.linux-aarch64-cpython-312
      creating build/temp.linux-aarch64-cpython-312/aiohttp
      gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/root/venv/include -I/usr/include/python3.12 -c aiohttp/_websocket.c -o build/temp.linux-aarch64-cpython-312/aiohttp/_websocket.o
      error: command 'gcc' failed: No such file or directory
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for aiohttp
Failed to build uvloop aiohttp
ERROR: Could not build wheels for uvloop, aiohttp, which is required to install pyproject.toml-based projects
(venv) ~ # 

uvloop version 0.19.0 and aiohttp 3.9.0 will build independently.

Any chance of a refresh or a clue as to what needs to change?

Thanks
-paul

@paulwarwicker paulwarwicker changed the title Fails to install with pyton 3.12 due to aiohttp and uvloop dependencies Fails to install with python 3.12 due to aiohttp and uvloop dependencies May 26, 2024
@paulwarwicker
Copy link
Author

@TickTockGoesTheClock
Copy link

Were you able to resolve the issue?
As I'm using the similar Appdaemon-Test-Framework package, which fails to install, I cannot test my automations.

@paulwarwicker
Copy link
Author

@TickTockGoesTheClock not easily. i had to craft an environment where appdaemon-testing could run but i have to jump through several hoops to get there.

what i had to do is create a docker image which has an older version of python. currently i'm using 3.8.19. then i have to run that docker image taking the volumes from appdaemon. i'm using HAOS with appdaemon as an add-on.
it installs pyenv and creates a venv with pytest-freezer, ics, arrow, pytest, requests and appdaemon-testing. these are prerequisites for my environment.

i can imagine it may have been abandoned unless @nickw444 replies. shame really because appdaemon-testing is very good.
i haven't found anything better but unfortunately i'm not up to making the necessary changes myself.

-paul

@TickTockGoesTheClock
Copy link

Well done. I think the road was bumpy, but you made it.

Right before your reply, I started to migrate my AppDaemon HA addon to an own docker image. HA runs in a proxmox and right next to HA, I deployed a fresh LXC with docker. There runs now Appdaemon as a container. I made the switch 30min ago. Turned the HA addon off and started the AD container. To test the code with pytest, I ssh into the docker LXC with VS Code, installed all requirements and necessary packages via pip and adjusted the python interpreter in VS Code.

Would I have migrated if pytest still had worked in the HA addon? Certainly no.

cheers

@nickw444
Copy link
Owner

i can imagine it may have been abandoned unless @nickw444 replies. shame really because appdaemon-testing is very good.

Not abandoned, but my personal time these days is rather limited, and I have mostly migrated away from Appdaemon for automations to prefer simple automations within Home Assistant, hence less of a need to maintain this personally.

That said, I am more than happy to add a willing maintainer to the repo who can manage improvements incoming pull requests.

@paulwarwicker
Copy link
Author

@nickw444 thanks for the reply. genuinely pleased to hear from you and totally understandable.

i am definitely keen but i just doubt my ability right now. i'm off on holiday shortly and will read around the subject as i had considered maintaining a fork. i will drop you an email from my personal account.

cheers
-paul

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

3 participants