pytries / marisa-trie

Static memory-efficient Trie-like structures for Python based on marisa-trie C++ library.
https://marisa-trie.readthedocs.io/en/latest/
MIT License
1.02k stars 91 forks source link

build armv7l #102

Closed vermut closed 2 months ago

vermut commented 2 months ago

@jakvot it says that there is no such arch armv7l. Shall we build armv7 ?

BoboTiG commented 2 months ago

Is https://github.com/pypa/cibuildwheel/issues/642 still relevant? 🤔

vermut commented 2 months ago

Unfortunately, I believe that it is. Also https://github.com/pypa/cibuildwheel/issues/1421 This PR won't work.

Probably the only way is convince https://www.piwheels.org/project/marisa-trie/ to start supporting 3.12.

amastrogiacomo1968 commented 2 months ago

Is there any solution for those who have Raspberry Pi 4 (32-bit) with HassOS? Thank you

vermut commented 2 months ago

Is there any solution for those who have Raspberry Pi 4 (32-bit) with HassOS? Thank you

You can try to build it manually yourself on directly on RPi inside HA container. Something like

apk add alpine-sdk
pip3 install marisa-trie==1.1.1

But no promises. And make backup before you do that.

amastrogiacomo1968 commented 2 months ago

Is there any solution for those who have Raspberry Pi 4 (32-bit) with HassOS? Thank you

You can try to build it manually yourself on directly on RPi inside HA container. Something like

apk add alpine-sdk
pip3 install marisa-trie==1.1.1

But no promises. And make backup before you do that.

Nothing to do, it gives me an error when I install marisa-trie==1.1.1

vermut commented 2 months ago

Nothing to do, it gives me an error when I install marisa-trie==1.1.1

which error exactly?

amastrogiacomo1968 commented 2 months ago

Nothing to do, it gives me an error when I install marisa-trie==1.1.1

which error exactly?

Screenshot_20240508-202118_Home Assistant

jakvot commented 2 months ago

This worked for me on odroid-xu4 (arm 32 bit, v7l): homeassistant:/config# apk add alpine-sdk fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/main/armv7/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/community/armv7/APKINDEX.tar.gz (1/32) Upgrading libcrypto3 (3.1.4-r5 -> 3.1.4-r6) (2/32) Upgrading libssl3 (3.1.4-r5 -> 3.1.4-r6) (3/32) Installing libattr (2.5.1-r5) (4/32) Installing attr (2.5.1-r5) (5/32) Installing libcap2 (2.69-r1) (6/32) Installing libcap-getcap (2.69-r1) (7/32) Installing fakeroot (1.32.1-r0) (8/32) Installing lzip (1.23-r1) (9/32) Installing openssl (3.1.4-r6) (10/32) Installing patch (2.7.6-r10) (11/32) Installing pkgconf (2.1.0-r0) (12/32) Installing libacl (2.3.1-r4) (13/32) Installing tar (1.35-r2) (14/32) Installing abuild (3.12.0-r0) Executing abuild-3.12.0-r0.pre-install (15/32) Installing jansson (2.14-r4) (16/32) Installing binutils (2.41-r0) (17/32) Installing libmagic (5.45-r1) (18/32) Installing file (5.45-r1) (19/32) Installing libatomic (13.2.1_git20231014-r0) (20/32) Installing gmp (6.3.0-r0) (21/32) Installing isl26 (0.26-r1) (22/32) Installing mpfr4 (4.2.1-r0) (23/32) Installing mpc1 (1.3.1-r1) (24/32) Installing gcc (13.2.1_git20231014-r0) (25/32) Installing libstdc++-dev (13.2.1_git20231014-r0) (26/32) Installing musl-dev (1.2.4_git20230717-r4) (27/32) Installing libc-dev (0.7.2-r5) (28/32) Installing g++ (13.2.1_git20231014-r0) (29/32) Installing make (4.4.1-r2) (30/32) Installing fortify-headers (1.1-r3) (31/32) Installing build-base (0.5-r3) (32/32) Installing alpine-sdk (1.0-r1) Executing busybox-1.36.1-r15.trigger Executing ca-certificates-20240226-r0.trigger OK: 257 MiB in 223 packages homeassistant:/config# pip install marisa-trie==1.1.1 --no-cache-dir --no-binary=marisa-tr ie Looking in indexes: https://pypi.org/simple, https://wheels.home-assistant.io/musllinux-in dex/ Collecting marisa-trie==1.1.1 Downloading marisa_trie-1.1.1.tar.gz (410 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 410.7/410.7 kB 4.9 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Requirement already satisfied: setuptools in /usr/local/lib/python3.12/site-packages (from marisa-trie==1.1.1) (69.2.0) Building wheels for collected packages: marisa-trie Building wheel for marisa-trie (setup.py) ... done Created wheel for marisa-trie: filename=marisa_trie-1.1.1-cp312-cp312-linux_armv7l.whl s ize=170548 sha256=7b21967a84ddc1e231e5ae30db29ee05b8780bbbf9154480f0fea0fbeccb6f18 Stored in directory: /tmp/pip-ephem-wheel-cache-g25drvd2/wheels/98/06/71/b331d07455b08d2 4df218c5d479219369deac6e87ce7e2bb45 Successfully built marisa-trie Installing collected packages: marisa-trie Successfully installed marisa-trie-1.1.1 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting b ehaviour with the system package manager. It is recommended to use a virtual environment i nstead: https://pip.pypa.io/warnings/venv homeassistant:/config#

vermut commented 2 months ago

For HA users we solved it via custom wheels repo: https://wheels.home-assistant.io/musllinux/ For the rest of the world... probably we need to teach cibuildwheel to support qemu-based cross-compilation the way HA is doing it.

vermut commented 2 months ago

This PR is blocked by cibuildwheel, cibuildwheel is blocked by lack of arm in manylinux, and manylinux is reluctant to use QEMU because it's cumbersome and hard to reproduce.

I say we close it for now, if someone again needs RPi wheels an option would be reusing what HomeAssistant is doing: https://github.com/home-assistant/wheels-custom-integrations/blob/master/.github/workflows/wheels.yml