Compile error when installing with python 3.10.2
Closed this issue · 2 comments
Problem
When trying to install manifest-tool with python 3.10.2 it exits the setup because gcc failed. (see error below)
python ver.: 3.10.2
pip ver.: 21.2.3
gcc ver.: 11.2.1
Installing with python 3.8 does work.
Command line error
command line error
`Installing collected packages: manifest-tool
Running setup.py install for manifest-tool ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-yjw7bx_w/manifest-tool_f7bbb78c03ab4282b4d77d300a46b960/setup.py'"'"'; __file__='"'"'/tmp/pip-install-yjw7bx_w/manifest-tool_f7bbb78c03ab4282b4d77d300a46b960/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-3i6fei9c/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/wnijenhuis/.local/include/python3.10/manifest-tool
cwd: /tmp/pip-install-yjw7bx_w/manifest-tool_f7bbb78c03ab4282b4d77d300a46b960/
Complete output (120 lines):
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.10
creating build/lib.linux-x86_64-3.10/manifesttool
copying manifesttool/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool
creating build/lib.linux-x86_64-3.10/manifesttool/package_tool
copying manifesttool/package_tool/package_tool.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool
copying manifesttool/package_tool/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool
creating build/lib.linux-x86_64-3.10/manifesttool/mtool
copying manifesttool/mtool/payload_format.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool
copying manifesttool/mtool/mtool.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool
copying manifesttool/mtool/ecdsa_helper.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool
copying manifesttool/mtool/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool
creating build/lib.linux-x86_64-3.10/manifesttool/dev_tool
copying manifesttool/dev_tool/dev_tool.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool
copying manifesttool/dev_tool/defaults.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool
copying manifesttool/dev_tool/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool
creating build/lib.linux-x86_64-3.10/manifesttool/delta_tool
copying manifesttool/delta_tool/delta_tool.py -> build/lib.linux-x86_64-3.10/manifesttool/delta_tool
copying manifesttool/delta_tool/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/delta_tool
creating build/lib.linux-x86_64-3.10/manifesttool/common
copying manifesttool/common/common_helpers.py -> build/lib.linux-x86_64-3.10/manifesttool/common
copying manifesttool/common/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/common
creating build/lib.linux-x86_64-3.10/manifesttool/package_tool/package_format
copying manifesttool/package_tool/package_format/tar_package.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/package_format
copying manifesttool/package_tool/package_format/package_format.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/package_format
copying manifesttool/package_tool/package_format/embedded_package.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/package_format
copying manifesttool/package_tool/package_format/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/package_format
creating build/lib.linux-x86_64-3.10/manifesttool/package_tool/asn1
copying manifesttool/package_tool/asn1/package_schema.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/asn1
copying manifesttool/package_tool/asn1/package_encoder.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/asn1
copying manifesttool/package_tool/asn1/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/asn1
creating build/lib.linux-x86_64-3.10/manifesttool/package_tool/actions
copying manifesttool/package_tool/actions/parse.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/actions
copying manifesttool/package_tool/actions/create.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/actions
copying manifesttool/package_tool/actions/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/package_tool/actions
creating build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1
copying manifesttool/mtool/asn1/manifest_codec.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1
copying manifesttool/mtool/asn1/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1
creating build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
copying manifesttool/mtool/actions/schema.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
copying manifesttool/mtool/actions/public_key.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
copying manifesttool/mtool/actions/parse.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
copying manifesttool/mtool/actions/create.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
copying manifesttool/mtool/actions/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/actions
creating build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v3
copying manifesttool/mtool/asn1/v3/manifest_schema_v3.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v3
copying manifesttool/mtool/asn1/v3/manifest_encoder_v3.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v3
copying manifesttool/mtool/asn1/v3/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v3
creating build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v1
copying manifesttool/mtool/asn1/v1/manifest_schema_v1.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v1
copying manifesttool/mtool/asn1/v1/manifest_encoder_v1.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v1
copying manifesttool/mtool/asn1/v1/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/mtool/asn1/v1
creating build/lib.linux-x86_64-3.10/manifesttool/dev_tool/pelion
copying manifesttool/dev_tool/pelion/pelion.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/pelion
copying manifesttool/dev_tool/pelion/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/pelion
creating build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
copying manifesttool/dev_tool/actions/update.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
copying manifesttool/dev_tool/actions/init.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
copying manifesttool/dev_tool/actions/create.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
copying manifesttool/dev_tool/actions/__init__.py -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
running egg_info
writing manifest_tool.egg-info/PKG-INFO
writing dependency_links to manifest_tool.egg-info/dependency_links.txt
writing entry points to manifest_tool.egg-info/entry_points.txt
writing requirements to manifest_tool.egg-info/requires.txt
writing top-level names to manifest_tool.egg-info/top_level.txt
reading manifest file 'manifest_tool.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'manifest_tool.egg-info/SOURCES.txt'
copying manifesttool/package_tool/package-schema.json -> build/lib.linux-x86_64-3.10/manifesttool/package_tool
copying manifesttool/mtool/manifest-input-schema.json -> build/lib.linux-x86_64-3.10/manifesttool/mtool
copying manifesttool/dev_tool/actions/code_template.txt -> build/lib.linux-x86_64-3.10/manifesttool/dev_tool/actions
running build_ext
building 'manifesttool.armbsdiff' extension
creating build/temp.linux-x86_64-3.10
creating build/temp.linux-x86_64-3.10/bsdiff
gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DLZ4_MEMORY_USAGE=10 -Ibsdiff -I/usr/include/python3.10 -c bsdiff/bsdiff.c -o build/temp.linux-x86_64-3.10/bsdiff/bsdiff.o --std=c99 -O3
gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DLZ4_MEMORY_USAGE=10 -Ibsdiff -I/usr/include/python3.10 -c bsdiff/bsdiff_helper.c -o build/temp.linux-x86_64-3.10/bsdiff/bsdiff_helper.o --std=c99 -O3
bsdiff/bsdiff_helper.c: In function ‘do_diff’:
bsdiff/bsdiff_helper.c:158:42: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t’ {aka ‘long int’} [-Wformat=]
158 | "Wrote diff file %s, size %lld. Max undeCompressBuffer frame size was %lld, max deCompressBuffer frame size was %lld.\n",
| ~~~^
| |
| long long int
| %ld
159 | delta_file, patch_file_size, max_frame_size,
| ~~~~~~~~~~~~~~~
| |
| int64_t {aka long int}
bsdiff/bsdiff_helper.c:158:86: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 4 has type ‘int64_t’ {aka ‘long int’} [-Wformat=]
158 | "Wrote diff file %s, size %lld. Max undeCompressBuffer frame size was %lld, max deCompressBuffer frame size was %lld.\n",
| ~~~^
| |
| long long int
| %ld
159 | delta_file, patch_file_size, max_frame_size,
| ~~~~~~~~~~~~~~
| |
| int64_t {aka long int}
bsdiff/bsdiff_helper.c:158:128: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 5 has type ‘int64_t’ {aka ‘long int’} [-Wformat=]
158 | "Wrote diff file %s, size %lld. Max undeCompressBuffer frame size was %lld, max deCompressBuffer frame size was %lld.\n",
| ~~~^
| |
| long long int
| %ld
159 | delta_file, patch_file_size, max_frame_size,
160 | max_deCompressBuffer_size
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int64_t {aka long int}
gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DLZ4_MEMORY_USAGE=10 -Ibsdiff -I/usr/include/python3.10 -c bsdiff/bsdiff_python.c -o build/temp.linux-x86_64-3.10/bsdiff/bsdiff_python.o --std=c99 -O3
bsdiff/bsdiff_python.c:19:10: fatal error: Python.h: No such file or directory
19 | #include <Python.h>
| ^~~~~~~~~~
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-yjw7bx_w/manifest-tool_f7bbb78c03ab4282b4d77d300a46b960/setup.py'"'"'; __file__='"'"'/tmp/pip-install-yjw7bx_w/manifest-tool_f7bbb78c03ab4282b4d77d300a46b960/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-3i6fei9c/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers`
Hi @Vibrionales,
We have not had a chance to update the tool for Python 3.10 yet and it seems that the Python ecosystem likes to change/break almost everthing while it moves up the versions. We would recommend using for example virtualenv
with a Python 3.8 installed as a secondary Python installment and use that.
However, in your particular problem - sudo apt install python3.8-dev
will likely resolve your issue, since it seems compiler cannot find the Python.h
header file (which should come as part of of the -dev package). You will also probably need sudo apt install python3.8-distutils
.
It does actually work, I just installed it on Ubuntu 22.04 LTS release.
I'm quite sure you're just missing python-dev package.
$ virtualenv ~/venv/3.10-manifest
created virtual environment CPython3.10.6.final.0-64 in 149ms
creator CPython3Posix(dest=/home/jannek/venv/3.10-manifest, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/jannek/.local/share/virtualenv)
added seed packages: pip==22.3.1, setuptools==65.6.3, wheel==0.38.4
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
$ source ~/venv/3.10-manifest/bin/activate
(3.10-manifest) jannek@jannek-P720:~$ pip install manifest-tool
Collecting manifest-tool
Using cached manifest-tool-2.4.1.tar.gz (94 kB)
Preparing metadata (setup.py) ... done
Collecting PyYAML<=5.4.1,>=4.2b1
Using cached PyYAML-5.4.1-cp310-cp310-linux_x86_64.whl
Collecting asn1ate<=0.6.0,>=0.5
Using cached asn1ate-0.6.0-py3-none-any.whl (29 kB)
Collecting cryptography<=3.4.8,>=2.5
Using cached cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl (3.0 MB)
Collecting jsonschema<=3.2.0,>=2.6.0
Using cached jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
Collecting pyasn1<=0.4.8,>=0.3.1
Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting requests<=2.26.0,>=2.20.0
Using cached requests-2.26.0-py2.py3-none-any.whl (62 kB)
Collecting pyparsing>=2.0.0
Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Collecting cffi>=1.12
Using cached cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (441 kB)
Collecting attrs>=17.4.0
Using cached attrs-22.2.0-py3-none-any.whl (60 kB)
Requirement already satisfied: setuptools in ./venv/3.10-manifest/lib/python3.10/site-packages (from jsonschema<=3.2.0,>=2.6.0->manifest-tool) (65.6.3)
Collecting pyrsistent>=0.14.0
Using cached pyrsistent-0.19.2-py3-none-any.whl (57 kB)
Collecting six>=1.11.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2022.12.7-py3-none-any.whl (155 kB)
Collecting idna<4,>=2.5
Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting charset-normalizer~=2.0.0
Using cached charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.13-py2.py3-none-any.whl (140 kB)
Collecting pycparser
Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Building wheels for collected packages: manifest-tool
Building wheel for manifest-tool (setup.py) ... done
Created wheel for manifest-tool: filename=manifest_tool-2.4.1-cp310-cp310-linux_x86_64.whl size=338398 sha256=2b2d611ffb68eae1efadeef72484a5a7149fa6e749311e6d65acc3e379b76055
Stored in directory: /home/jannek/.cache/pip/wheels/66/3f/23/5814fb8d3b7bd12482db5e3a5747d9431244878d2da89b3380
Successfully built manifest-tool
Installing collected packages: pyasn1, urllib3, six, PyYAML, pyrsistent, pyparsing, pycparser, idna, charset-normalizer, certifi, attrs, requests, jsonschema, cffi, asn1ate, cryptography, manifest-tool
Successfully installed PyYAML-5.4.1 asn1ate-0.6.0 attrs-22.2.0 certifi-2022.12.7 cffi-1.15.1 charset-normalizer-2.0.12 cryptography-3.4.8 idna-3.4 jsonschema-3.2.0 manifest-tool-2.4.1 pyasn1-0.4.8 pycparser-2.21 pyparsing-3.0.9 pyrsistent-0.19.2 requests-2.26.0 six-1.16.0 urllib3-1.26.13