libgit2 / pygit2

Python bindings for libgit2
https://www.pygit2.org/
Other
1.58k stars 382 forks source link

Raspberry Pi fails to build. Missing git2.h #1134

Closed Swislok-Dev closed 2 years ago

Swislok-Dev commented 2 years ago
$ sudo pip3 install pygit2
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pygit2
  Downloading https://files.pythonhosted.org/packages/7e/8c/c162e50ad20c36b457aa97a9d96536fde316d90052fb03fc4ae22a7fe9ea/pygit2-1.9.0.tar.gz (290kB)
    100% |████████████████████████████████| 296kB 1.5MB/s 
  Installing build dependencies ... done
Collecting cffi>=1.9.1 (from pygit2)
  Using cached https://www.piwheels.org/simple/cffi/cffi-1.15.0-cp37-cp37m-linux_armv7l.whl
Collecting cached-property (from pygit2)
  Downloading https://files.pythonhosted.org/packages/48/19/f2090f7dad41e225c7f2326e4cfe6fff49e57dedb5b53636c9551f86b069/cached_property-1.5.2-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.9.1->pygit2)
  Using cached https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl
Building wheels for collected packages: pygit2
  Running setup.py bdist_wheel for pygit2 ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5gqihf7k/pygit2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-ebyj9197 --python-tag cp37:
  /tmp/pip-build-env-gh8ic2c6/lib/python3.7/site-packages/setuptools/installer.py:30: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
    SetuptoolsDeprecationWarning,
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-armv7l-3.7
  creating build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/__init__.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/config.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/_build.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/ffi.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/settings.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/submodule.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/callbacks.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/_run.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/refspec.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/blame.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/packbuilder.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/repository.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/remote.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/errors.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/credentials.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/utils.py -> build/lib.linux-armv7l-3.7/pygit2
  copying pygit2/index.py -> build/lib.linux-armv7l-3.7/pygit2
  creating build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/strarray.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/oid.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/blame.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/types.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/buffer.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/checkout.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/transport.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/attr.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/pack.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/commit.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/repository.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/index.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/refspec.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/stash.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/net.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/describe.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/clone.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/revert.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/indexer.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/errors.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/graph.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/common.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/merge.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/remote.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/callbacks.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/proxy.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/submodule.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/config.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  copying pygit2/decl/diff.h -> build/lib.linux-armv7l-3.7/pygit2/decl
  running build_ext
  generating cffi module 'build/temp.linux-armv7l-3.7/pygit2._libgit2.c'
  creating build/temp.linux-armv7l-3.7
  building 'pygit2._pygit2' extension
  creating build/temp.linux-armv7l-3.7/src
  arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -flto -fuse-linker-plugin -ffat-lto-objects -fPIC -I/usr/local/include -I/usr/include/python3.7m -c src/blob.c -o build/temp.linux-armv7l-3.7/src/blob.o
  In file included from src/blob.c:30:
  src/diff.h:33:10: fatal error: git2.h: No such file or directory
   #include <git2.h>
            ^~~~~~~~
  compilation terminated.
  error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1

  ----------------------------------------
  Failed building wheel for pygit2
  Running setup.py clean for pygit2
Failed to build pygit2
Installing collected packages: pycparser, cffi, cached-property, pygit2
  Running setup.py install for pygit2 ... error
    Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5gqihf7k/pygit2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-hefa2_91/install-record.txt --single-version-externally-managed --compile:
    running install
    /tmp/pip-build-env-gh8ic2c6/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      setuptools.SetuptoolsDeprecationWarning,
    running build
    running build_py
    creating build
    creating build/lib.linux-armv7l-3.7
    creating build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/__init__.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/config.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/_build.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/ffi.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/settings.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/submodule.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/callbacks.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/_run.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/refspec.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/blame.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/packbuilder.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/repository.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/remote.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/errors.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/credentials.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/utils.py -> build/lib.linux-armv7l-3.7/pygit2
    copying pygit2/index.py -> build/lib.linux-armv7l-3.7/pygit2
    creating build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/strarray.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/oid.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/blame.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/types.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/buffer.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/checkout.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/transport.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/attr.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/pack.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/commit.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/repository.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/index.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/refspec.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/stash.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/net.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/describe.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/clone.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/revert.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/indexer.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/errors.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/graph.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/common.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/merge.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/remote.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/callbacks.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/proxy.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/submodule.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/config.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    copying pygit2/decl/diff.h -> build/lib.linux-armv7l-3.7/pygit2/decl
    running build_ext
    generating cffi module 'build/temp.linux-armv7l-3.7/pygit2._libgit2.c'
    creating build/temp.linux-armv7l-3.7
    building 'pygit2._pygit2' extension
    creating build/temp.linux-armv7l-3.7/src
    arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -flto -fuse-linker-plugin -ffat-lto-objects -fPIC -I/usr/local/include -I/usr/include/python3.7m -c src/blob.c -o build/temp.linux-armv7l-3.7/src/blob.o
    In file included from src/blob.c:30:
    src/diff.h:33:10: fatal error: git2.h: No such file or directory
     #include <git2.h>
              ^~~~~~~~
    compilation terminated.
    error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1

    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5gqihf7k/pygit2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-hefa2_91/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-5gqihf7k/pygit2/

Not sure what else to do here. It libgit2 also won't install following the instructions.

Edit: This is running on Raspbian OS

jdavid commented 2 years ago

Don't know about Pi 4, but installing in Pi 3 doesn't work because we don't provide binary wheels for the arch. So you may have to apt install libgit2-dev, then install a compatible version of pygit2, 1.6 I think.