RedSnake64 / openwrt-yun

OpenWrt for Arduino Yún
GNU General Public License v2.0
12 stars 5 forks source link

Support for Python 3 #10

Open sscirrus opened 6 years ago

sscirrus commented 6 years ago

I am trying to play around with secure TLS websockets, which require a newer version of pyOpenSSL than the original 0.10-1, which requires Python 3+.

I know you've done incredible work to create newer software than the Yun 1.5.3 available on Arduino's website... does your repo support some newer pyOpenSSL than 0.10-1?

RedSnake64 commented 6 years ago

Unfortunately i've currently too little time to update the packages, so most of the them are currently outdated... First of all i have to update all packages to the latest version. Perhaps this adds support for the new pyOpenSSL version. Otherwise we have to find why the new version is not supported.

Building a new updated version can take a while...

sscirrus commented 6 years ago

I'm making progress. I managed to get a number of things installed.

What's happening now is a specific issue - this could help me get there. I have installed python 3.5, pip, and more.

$ pip3 install cffi
Collecting cffi
  Using cached cffi-1.11.2.tar.gz
Requirement already satisfied (use --upgrade to upgrade): pycparser in ./python3.5/site-
packages (from cffi)
Installing collected packages: cffi
  Running setup.py install for cffi
    Complete output from command /usr/bin/python3.5 -c "import setuptools, tokenize;__file__='/tmp/pip-build-q4oxnuiw/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-7m7pk7xb record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-mips-3.5
    creating build/lib.linux-mips-3.5/cffi
    copying cffi/recompiler.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/verifier.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/cffi_opcode.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/setuptools_ext.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/__init__.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/lock.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/api.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/vengine_gen.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/ffiplatform.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/cparser.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/backend_ctypes.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/error.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/commontypes.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/model.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/vengine_cpy.py -> build/lib.linux-mips-3.5/cffi
    copying cffi/_cffi_include.h -> build/lib.linux-mips-3.5/cffi
    copying cffi/parse_c_type.h -> build/lib.linux-mips-3.5/cffi
    copying cffi/_embedding.h -> build/lib.linux-mips-3.5/cffi
    copying cffi/_cffi_errors.h -> build/lib.linux-mips-3.5/cffi
    warning: build_py: byte-compiling is disabled, skipping.

    running build_ext
    building '_cffi_backend' extension
    creating build/temp.linux-mips-3.5
    creating build/temp.linux-mips-3.5/c
    mips-openwrt-linux-uclibc-gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mno-mips16 -mno-interlink-mips16 -Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mno-mips16 -mno-interlink-mips16 -DNDEBUG -fno-inline -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/usr/include/python3.5 -c c/_cffi_backend.c -o build/temp.linux-mips-3.5/c/_cffi_backend.o
    c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
     #include <ffi.h>
                     ^
    compilation terminated.
    error: command 'mips-openwrt-linux-uclibc-gcc' failed with exit status 1

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

$ opkg list-installed
# Not entire list:
libffi - 3.2.1-3
openssl-util - 1.0.2j-1
python3 - 3.5.0-3
python3-openssl - 3.5.0-3
python3-pip - 7.1.2-1

This page suggests that cffi is looking for libffi in the wrong place. Because libffi is installed by opkg, I find this plausible. But, when I do opkg files libffi, all I get is /usr/lib/libffi.so.6 and /usr/lib/libffi.so.6.0.4.

I wanted to create a symlink to help cffi find the libffi header files. But, all we have is source files.

So, I tried downloading the cffi tar file directly and extracting it. It wasn't clear how to install it (but if I could, I'd have the headers to point to!).

Please help me!