samuelcolvin / xdelta3-python

Fast delta encoding in python using xdelta3
Other
34 stars 15 forks source link

How to install package using branch fix-large-decode #9

Open SmileSydney opened 4 years ago

SmileSydney commented 4 years ago

I've been using the master branch installed via pip but I'm hitting the xdelta3.XDeltaError.

I tried installing via pip install -e git+https://github.com/samuelcolvin/xdelta3-python.git@fix-large-decode but getting this error:

xdelta3/_xdelta3.c:3:10: fatal error: xdelta3.h: No such file or directory                                                                                       3 | #include "xdelta3.h"
        |          ^~~~~~~~~~~
  compilation terminated.

Any tips on how to build with the original xdelta libraries via pip install?

samuelcolvin commented 4 years ago

did you clone recursively to include the xdelta submodule?

SmileSydney commented 4 years ago

I believe the pip clones recursively by default.

I get this error on both branches: fix-large-decode and master

This is the output from pip install -e git+https://github.com/samuelcolvin/xdelta3-python.git@fix-large-decode:

Collecting xdelta3
  Cloning https://github.com/samuelcolvin/xdelta3-python.git (to revision fix-large-decode) to /tmp/pip-install-_2q86lxq/xdelta3
  Running command git clone -q https://github.com/samuelcolvin/xdelta3-python.git /tmp/pip-install-_2q86lxq/xdelta3
  Running command git checkout -b fix-large-decode --track origin/fix-large-decode
  Switched to a new branch 'fix-large-decode'
  Branch 'fix-large-decode' set up to track remote branch 'fix-large-decode' from 'origin'.
  Running command git submodule update --init --recursive -q
Building wheels for collected packages: xdelta3
  Building wheel for xdelta3 (setup.py): started
  Building wheel for xdelta3 (setup.py): finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-_2q86lxq/xdelta3/setup.py'"'"'; __file__='"'"'/tmp/pip-install-_2q86lxq/xdelta3/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-_1h2i_gv --python-tag cp37
       cwd: /tmp/pip-install-_2q86lxq/xdelta3/
  Complete output (20 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/xdelta3
  copying xdelta3/__init__.py -> build/lib.linux-x86_64-3.7/xdelta3
  copying xdelta3/version.py -> build/lib.linux-x86_64-3.7/xdelta3
  copying xdelta3/main.py -> build/lib.linux-x86_64-3.7/xdelta3
  copying xdelta3/_xdelta3.c -> build/lib.linux-x86_64-3.7/xdelta3
  running build_ext
  building '_xdelta3' extension
  creating build/temp.linux-x86_64-3.7
  creating build/temp.linux-x86_64-3.7/xdelta3
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DSIZEOF_SIZE_T=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DXD3_USE_LARGEFILE64=1 -I./xdelta3/lib -I/usr/local/include/python3.7m -c xdelta3/_xdelta3.c -o build/temp.linux-x86_64-3.7/xdelta3/_xdelta3.o
  xdelta3/_xdelta3.c:3:10: fatal error: xdelta3.h: No such file or directory
   #include "xdelta3.h"
            ^~~~~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for xdelta3
  Running setup.py clean for xdelta3
Failed to build xdelta3
samuelcolvin commented 4 years ago

then perhaps you need xdelta3 installed locally before attempting to install xdelta3-python. I'm afraid I haven't work on this for a long time, so can't really help.

SmileSydney commented 4 years ago

Thanks for looking at it - I wouldn't remember what I ate for breakfast yesterday.

This is what I found so far:

samuelcolvin commented 4 years ago

You can't I'm afraid. So your options are:

samuelcolvin commented 4 years ago

Or in theory you could edit setup.py to do what make prepare does, but that's pretty ugly.