systemd / python-systemd

Python wrappers for systemd functionality
GNU Lesser General Public License v2.1
465 stars 66 forks source link

Does not install into a venv on Ubuntu 20.04 #125

Open jecompton opened 1 year ago

jecompton commented 1 year ago

The README.md says I can just apt install the headers. However, the only systemd header package available is libsystemd-dev. The others, like libsystemd-journal-dev and libsystemd-daemon-dev do not exist for 20.04, so I can't install them.

If I try to pip install into my venv anyway, I get a bunch of compilation errors (as I figured). They seem related to unicode. Anyway, here's the last lines showing the pip install crashing:

      cython_utility:179:25: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
      In file included from /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/unicodeobject.h:1026,
                       from /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/Python.h:97,
                       from systemd/reader.c:23:
      /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
        580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
            |                                             ^~~~~~~~~~~~~~~~~~~
      cython_utility:179:25: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
      In file included from /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/unicodeobject.h:1026,
                       from /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/Python.h:97,
                       from systemd/reader.c:23:
      /home/jecompt/.pyenv/versions/3.9.5/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
        446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
            |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> systemd
thn80 commented 10 months ago

I am having the same issue on Debian 12.

axoroll7 commented 8 months ago

I am having the same issue on Debian 12.

It works for me on Debian 12, with "pkg-config", "libsystemd-dev", and "python3-dev".

EDIT : With Python 3.11.2 EDIT 2 : Python 3.11.2 from "python3-full"

ssbarnea commented 1 month ago

To reinstate it, it seems that the same fails on Ubuntu 24.04 too with py311 (deadsnakes), even if python was installed in full python3.11-full. Still the errors is a little bit different:

Building wheels for collected packages: systemd-python
  Building wheel for systemd-python (setup.py) ... error
  Running setup.py clean for systemd-python
Failed to build systemd-python
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [104 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-311
      creating build/lib.linux-aarch64-cpython-311/systemd
      copying systemd/__init__.py -> build/lib.linux-aarch64-cpython-311/systemd
      copying systemd/journal.py -> build/lib.linux-aarch64-cpython-311/systemd
      copying systemd/daemon.py -> build/lib.linux-aarch64-cpython-311/systemd
      creating build/lib.linux-aarch64-cpython-311/systemd/test
      copying systemd/test/test_daemon.py -> build/lib.linux-aarch64-cpython-311/systemd/test
      copying systemd/test/test_journal.py -> build/lib.linux-aarch64-cpython-311/systemd/test
      copying systemd/test/test_login.py -> build/lib.linux-aarch64-cpython-311/systemd/test
      copying systemd/test/test_id128.py -> build/lib.linux-aarch64-cpython-311/systemd/test
      running build_ext
      building 'systemd/_journal' extension
      creating build/temp.linux-aarch64-cpython-311
      creating build/temp.linux-aarch64-cpython-311/systemd
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/_journal.c -o build/temp.linux-aarch64-cpython-311/systemd/_journal.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/pyutil.c -o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-aarch64-cpython-311/systemd/_journal.o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -L/usr/lib/aarch64-linux-gnu -lsystemd -o build/lib.linux-aarch64-cpython-311/systemd/_journal.cpython-311-aarch64-linux-gnu.so
      building 'systemd/_reader' extension
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/_reader.c -o build/temp.linux-aarch64-cpython-311/systemd/_reader.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/pyutil.c -o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/strv.c -o build/temp.linux-aarch64-cpython-311/systemd/strv.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-aarch64-cpython-311/systemd/_reader.o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o build/temp.linux-aarch64-cpython-311/systemd/strv.o -L/usr/lib/aarch64-linux-gnu -lsystemd -o build/lib.linux-aarch64-cpython-311/systemd/_reader.cpython-311-aarch64-linux-gnu.so
      building 'systemd/_daemon' extension
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/_daemon.c -o build/temp.linux-aarch64-cpython-311/systemd/_daemon.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/pyutil.c -o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/util.c -o build/temp.linux-aarch64-cpython-311/systemd/util.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-aarch64-cpython-311/systemd/_daemon.o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o build/temp.linux-aarch64-cpython-311/systemd/util.o -L/usr/lib/aarch64-linux-gnu -lsystemd -o build/lib.linux-aarch64-cpython-311/systemd/_daemon.cpython-311-aarch64-linux-gnu.so
      building 'systemd/id128' extension
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/id128.c -o build/temp.linux-aarch64-cpython-311/systemd/id128.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/pyutil.c -o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-aarch64-cpython-311/systemd/id128.o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -L/usr/lib/aarch64-linux-gnu -lsystemd -o build/lib.linux-aarch64-cpython-311/systemd/id128.cpython-311-aarch64-linux-gnu.so
      building 'systemd/login' extension
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/login.c -o build/temp.linux-aarch64-cpython-311/systemd/login.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/pyutil.c -o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -g -fwrapv -O2 -fPIC -DPACKAGE_VERSION=\"235\" -DLIBSYSTEMD_VERSION=255 -I/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/include -I/usr/include/python3.11 -c systemd/strv.c -o build/temp.linux-aarch64-cpython-311/systemd/strv.o -std=c99 -Werror=implicit-function-declaration
      aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-aarch64-cpython-311/systemd/login.o build/temp.linux-aarch64-cpython-311/systemd/pyutil.o build/temp.linux-aarch64-cpython-311/systemd/strv.o -L/usr/lib/aarch64-linux-gnu -lsystemd -o build/lib.linux-aarch64-cpython-311/systemd/login.cpython-311-aarch64-linux-gnu.so
      /media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
      !!

              ********************************************************************************
              Please avoid running ``setup.py`` directly.
              Instead, use pypa/build, pypa/installer or other
              standards-based tools.

              See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
              ********************************************************************************

      !!
        self.initialize_options()
      installing to build/bdist.linux-aarch64/wheel
      running install
      running install_lib
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-5orjisse/systemd-python_bfb90fba293f41529c2bb525c79f69f9/setup.py", line 79, in <module>
          setup (name = 'systemd-python',
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/dist.py", line 1233, in run_command
          super().run_command(command)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/wheel/bdist_wheel.py", line 403, in run
          self.run_command("install")
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/dist.py", line 1233, in run_command
          super().run_command(command)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/command/install.py", line 78, in run
          return orig.install.run(self)
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/command/install.py", line 708, in run
          self.run_command(cmd_name)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/dist.py", line 1233, in run_command
          super().run_command(command)
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
          cmd_obj.ensure_finalized()
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized
          self.finalize_options()
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/command/install_lib.py", line 17, in finalize_options
          self.set_undefined_options('install',('install_layout','install_layout'))
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 296, in set_undefined_options
          setattr(self, dst_option, getattr(src_cmd_obj, src_option))
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/media/psf/c/a/ansible_collections/ansible/eda/.tox/u1/py311-unit/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
          raise AttributeError(attr)
      AttributeError: install_layout. Did you mean: 'install_platlib'?
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
ssbarnea commented 1 month ago

Here is an interesting discovery:

# this fails to install:
pip==24.0
setuptools==68.1.2
wheel==0.42.0

# this succeeds installing:
pip==24.2
setuptools==72.1.0
systemd-python==235
wheel==0.44.0

The tricky bit is that we do not have much control over which versions of these build deps are installed by default inside a new venv, especially when using a testing framework such tox. it should be noted that these do not see too old either.