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

pycrypto no longer supported (especially in aarch64-linux-gnu-gcc) #1048

Open
TheKaliHacks opened this issue Dec 8, 2023 · 4 comments
Open

Comments

@TheKaliHacks
Copy link

Expected Behaviour
Requirement already satisfied

Actual Behaviour
$ pip3 install -r requirements.txt
Defaulting to user installation because normal site-packages is not writeable
DEPRECATION: Loading egg at /usr/local/lib/python3.11/dist-packages/mitm6-0.3.0-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at pypa/pip#12330
Requirement already satisfied: pexpect in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (4.8.0)
Collecting pycrypto (from -r requirements.txt (line 2))
Using cached pycrypto-2.6.1.tar.gz (446 kB)
...
Building wheels for collected packages: pycrypto
Building wheel for pycrypto (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
....
In file included from /usr/include/python3.11/Python.h:86,
from src/_fastmath.c:31:
/usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
| ^~~~~~~~
/usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
| ^~~~~~~~
/usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec ts);
| ^~~~~~~~
src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory
33 | #include <longintrepr.h> /
for conversions */
| ^~~~~~~~~~~~~~~
compilation terminated.
error: command '/usr/bin/aarch64-linux-gnu-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: Failed building wheel for pycrypto
Running setup.py clean for pycrypto
Failed to build pycrypto
ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects

Version
pycrypto-2.6.1

Set in Kali
Description: Kali GNU/Linux Rolling
Release: 2023.4
Codename: kali-rolling

@13ghost212
Copy link

Is there any solution to this

@PythonCoderUnicorn
Copy link

this is the closest open issue to the one i have run into while installing , i copied the commands for Linux and most of the setup is fine except for pycrypto build

Building wheels for collected packages: pycrypto
  Building wheel for pycrypto (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [71 lines of output]
      checking for gcc... gcc
      checking whether the C compiler works... yes
      checking for C compiler default output file name... a.out
      checking for suffix of executables...
      checking whether we are cross compiling... no
      checking for suffix of object files... o
      checking whether we are using the GNU C compiler... yes
      checking whether gcc accepts -g... yes
      checking for gcc option to accept ISO C89... none needed
      checking for __gmpz_init in -lgmp... yes
      checking for __gmpz_init in -lmpir... no
      checking whether mpz_powm is declared... yes
      checking whether mpz_powm_sec is declared... yes
      checking how to run the C preprocessor... gcc -E
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for ANSI C header files... yes
      checking for sys/types.h... yes
      checking for sys/stat.h... yes
      checking for stdlib.h... yes
      checking for string.h... yes
      checking for memory.h... yes
      checking for strings.h... yes
      checking for inttypes.h... yes
      checking for stdint.h... yes
      checking for unistd.h... yes
      checking for inttypes.h... (cached) yes
      checking limits.h usability... yes
      checking limits.h presence... yes
      checking for limits.h... yes
      checking stddef.h usability... yes
      checking stddef.h presence... yes
      checking for stddef.h... yes
      checking for stdint.h... (cached) yes
      checking for stdlib.h... (cached) yes
      checking for string.h... (cached) yes
      checking wchar.h usability... yes
      checking wchar.h presence... yes
      checking for wchar.h... yes
      checking for inline... inline
      checking for int16_t... yes
      checking for int32_t... yes
      checking for int64_t... yes
      checking for int8_t... yes
      checking for size_t... yes
      checking for uint16_t... yes
      checking for uint32_t... yes
      checking for uint64_t... yes
      checking for uint8_t... yes
      checking for stdlib.h... (cached) yes
      checking for GNU libc compatible malloc... yes
      checking for memmove... yes
      checking for memset... yes
      configure: creating ./config.status
      config.status: creating src/config.h
      In file included from /usr/include/python3.11/Python.h:86,
                       from src/_fastmath.c:31:
      /usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
            |                                                            ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
            |                                                        ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec *ts);
            |                                                               ^~~~~~~~
      src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory
         33 | #include <longintrepr.h>                                /* for conversions */
            |          ^~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-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: Failed building wheel for pycrypto
  Running setup.py clean for pycrypto                                                                  
Failed to build pycrypto
ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects
Command 'python' not found, did you mean:                                                              
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

I have python3 on my VM.

@EtudiantInformatique78
Copy link

EtudiantInformatique78 commented May 7, 2024

I have an issue my pycrypto too.

error: subprocess-exited-with-error
  
  × Building wheel for pycrypto (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [71 lines of output]
      checking for gcc... gcc
      checking whether the C compiler works... yes
      checking for C compiler default output file name... a.out
      checking for suffix of executables...
      checking whether we are cross compiling... no
      checking for suffix of object files... o
      checking whether we are using the GNU C compiler... yes
      checking whether gcc accepts -g... yes
      checking for gcc option to accept ISO C89... none needed
      checking for __gmpz_init in -lgmp... yes
      checking for __gmpz_init in -lmpir... no
      checking whether mpz_powm is declared... yes
      checking whether mpz_powm_sec is declared... yes
      checking how to run the C preprocessor... gcc -E
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for ANSI C header files... yes
      checking for sys/types.h... yes
      checking for sys/stat.h... yes
      checking for stdlib.h... yes
      checking for string.h... yes
      checking for memory.h... yes
      checking for strings.h... yes
      checking for inttypes.h... yes
      checking for stdint.h... yes
      checking for unistd.h... yes
      checking for inttypes.h... (cached) yes
      checking limits.h usability... yes
      checking limits.h presence... yes
      checking for limits.h... yes
      checking stddef.h usability... yes
      checking stddef.h presence... yes
      checking for stddef.h... yes
      checking for stdint.h... (cached) yes
      checking for stdlib.h... (cached) yes
      checking for string.h... (cached) yes
      checking wchar.h usability... yes
      checking wchar.h presence... yes
      checking for wchar.h... yes
      checking for inline... inline
      checking for int16_t... yes
      checking for int32_t... yes
      checking for int64_t... yes
      checking for int8_t... yes
      checking for size_t... yes
      checking for uint16_t... yes
      checking for uint32_t... yes
      checking for uint64_t... yes
      checking for uint8_t... yes
      checking for stdlib.h... (cached) yes
      checking for GNU libc compatible malloc... yes
      checking for memmove... yes
      checking for memset... yes
      configure: creating ./config.status
      config.status: creating src/config.h
      In file included from /usr/include/python3.11/Python.h:87,
                       from src/_fastmath.c:31:
      /usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
            |                                                            ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
            |                                                        ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec *ts);
            |                                                               ^~~~~~~~
      src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory
         33 | #include <longintrepr.h>                                /* for conversions */
            |          ^~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-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: Failed building wheel for pycrypto
ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects

The line 87 on Python.h file is : #include "cpython/pytime.h"

In the cpython/pytime.h file, I have this warning : warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration

I think the error is related _PyTime_t API.

In this link about the lonintrepr.h issue, webknjaz claims

"Thanks! It usually doesn't make sense for us to be working on the next interpreter support until rc are out because the build deps like Cython can't keep up with the ABI changes anyway."

Is it because the project doesn't compile with python 3.11 ? I will try with older versions of python 3.

PS :

I tried with python3.10 and It works ! I think it's a dependency problem in python >=3.11

@raaznp
Copy link

raaznp commented Aug 6, 2024

edit requirements.txt file

change pycrypto to crpytodome

sudo pip3 install -r requirements.txt

Enjoy!!

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

5 participants