Skip to content

add openwrt compatible wheel #119

Open

Description

@derpeter

i wanted to use sdbus on openwrt but the public available whl files are not matching the tag on openwrt. Im not sure what we be the best way to fix this. pip on openwrt supports the following tag:

cp313-cp313-musllinux_1_2_aarch64
cp313-cp313-musllinux_1_1_aarch64
cp313-cp313-musllinux_1_0_aarch64
cp313-cp313-linux_aarch64
cp313-abi3-musllinux_1_2_aarch64
cp313-abi3-musllinux_1_1_aarch64
cp313-abi3-musllinux_1_0_aarch64
cp313-abi3-linux_aarch64
cp313-none-musllinux_1_2_aarch64
cp313-none-musllinux_1_1_aarch64
cp313-none-musllinux_1_0_aarch64
cp313-none-linux_aarch64
cp312-abi3-musllinux_1_2_aarch64
cp312-abi3-musllinux_1_1_aarch64
cp312-abi3-musllinux_1_0_aarch64
cp312-abi3-linux_aarch64
cp311-abi3-musllinux_1_2_aarch64
cp311-abi3-musllinux_1_1_aarch64
cp311-abi3-musllinux_1_0_aarch64
cp311-abi3-linux_aarch64
cp310-abi3-musllinux_1_2_aarch64
cp310-abi3-musllinux_1_1_aarch64
cp310-abi3-musllinux_1_0_aarch64
cp310-abi3-linux_aarch64
cp39-abi3-musllinux_1_2_aarch64
cp39-abi3-musllinux_1_1_aarch64
cp39-abi3-musllinux_1_0_aarch64
cp39-abi3-linux_aarch64
cp38-abi3-musllinux_1_2_aarch64
cp38-abi3-musllinux_1_1_aarch64
cp38-abi3-musllinux_1_0_aarch64
cp38-abi3-linux_aarch64
cp37-abi3-musllinux_1_2_aarch64
cp37-abi3-musllinux_1_1_aarch64
cp37-abi3-musllinux_1_0_aarch64
cp37-abi3-linux_aarch64
cp36-abi3-musllinux_1_2_aarch64
cp36-abi3-musllinux_1_1_aarch64
cp36-abi3-musllinux_1_0_aarch64
cp36-abi3-linux_aarch64
cp35-abi3-musllinux_1_2_aarch64
cp35-abi3-musllinux_1_1_aarch64
cp35-abi3-musllinux_1_0_aarch64
cp35-abi3-linux_aarch64
cp34-abi3-musllinux_1_2_aarch64
cp34-abi3-musllinux_1_1_aarch64
cp34-abi3-musllinux_1_0_aarch64
cp34-abi3-linux_aarch64
cp33-abi3-musllinux_1_2_aarch64
cp33-abi3-musllinux_1_1_aarch64
cp33-abi3-musllinux_1_0_aarch64
cp33-abi3-linux_aarch64
cp32-abi3-musllinux_1_2_aarch64
cp32-abi3-musllinux_1_1_aarch64
cp32-abi3-musllinux_1_0_aarch64
cp32-abi3-linux_aarch64
py313-none-musllinux_1_2_aarch64
py313-none-musllinux_1_1_aarch64
py313-none-musllinux_1_0_aarch64
py313-none-linux_aarch64
py3-none-musllinux_1_2_aarch64
py3-none-musllinux_1_1_aarch64
py3-none-musllinux_1_0_aarch64
py3-none-linux_aarch64
py312-none-musllinux_1_2_aarch64
py312-none-musllinux_1_1_aarch64
py312-none-musllinux_1_0_aarch64
py312-none-linux_aarch64
py311-none-musllinux_1_2_aarch64
py311-none-musllinux_1_1_aarch64
py311-none-musllinux_1_0_aarch64
py311-none-linux_aarch64
py310-none-musllinux_1_2_aarch64
py310-none-musllinux_1_1_aarch64
py310-none-musllinux_1_0_aarch64
py310-none-linux_aarch64
py39-none-musllinux_1_2_aarch64
py39-none-musllinux_1_1_aarch64
py39-none-musllinux_1_0_aarch64
py39-none-linux_aarch64
py38-none-musllinux_1_2_aarch64
py38-none-musllinux_1_1_aarch64
py38-none-musllinux_1_0_aarch64
py38-none-linux_aarch64
py37-none-musllinux_1_2_aarch64
py37-none-musllinux_1_1_aarch64
py37-none-musllinux_1_0_aarch64
py37-none-linux_aarch64
py36-none-musllinux_1_2_aarch64
py36-none-musllinux_1_1_aarch64
py36-none-musllinux_1_0_aarch64
py36-none-linux_aarch64
py35-none-musllinux_1_2_aarch64
py35-none-musllinux_1_1_aarch64
py35-none-musllinux_1_0_aarch64
py35-none-linux_aarch64
py34-none-musllinux_1_2_aarch64
py34-none-musllinux_1_1_aarch64
py34-none-musllinux_1_0_aarch64
py34-none-linux_aarch64
py33-none-musllinux_1_2_aarch64
py33-none-musllinux_1_1_aarch64
py33-none-musllinux_1_0_aarch64
py33-none-linux_aarch64
py32-none-musllinux_1_2_aarch64
py32-none-musllinux_1_1_aarch64
py32-none-musllinux_1_0_aarch64
py32-none-linux_aarch64
py31-none-musllinux_1_2_aarch64
py31-none-musllinux_1_1_aarch64
py31-none-musllinux_1_0_aarch64
py31-none-linux_aarch64
py30-none-musllinux_1_2_aarch64
py30-none-musllinux_1_1_aarch64
py30-none-musllinux_1_0_aarch64
py30-none-linux_aarch64
cp313-none-any
py313-none-any
py3-none-any
py312-none-any
py311-none-any
py310-none-any
py39-none-any
py38-none-any
py37-none-any
py36-none-any
py35-none-any
py34-none-any
py33-none-any
py32-none-any
py31-none-any
py30-none-any

i guess cp39-abi3-linux_aarch64 would be the best fit?

Activity

  1. igo95862 commented on May 21, 2026

    @igo95862
    Collaborator

    Are you trying to install binary pre-compiled package? The binary package on PyPI is only compiled against glibc and I believe OpenWrt uses musl. It is also compiled against systemd and I don't believe OpenWrt uses it.

    The fastest way would be installing source package which will attempt to compile the package. This means you would need the C compiler on the device and all the Python and systemd/elogind headers.

  2. derpeter commented on May 22, 2026

    @derpeter
    Author

    Yes im trying to install the pre compiled package as systemd as depency is not available. I tried different approaches to compile it on other hosts so far without success. I assume alpine might be a good build env as it also uses musel. But im not sore about these tags mentioned above. In generell i guess it would be nice to have a fitting pre-compiled package in pypi or openwrt

  3. igo95862 commented on May 22, 2026

    @igo95862
    Collaborator

    Last time I checked Alpine doesn't really do LTS releases which makes it difficult to compile universal wheel.

  4. derpeter commented on May 22, 2026

    @derpeter
    Author

    good point. I'm talking in parallel with an openWRT developer. maybe making an openwrt package is the more feasible solution. So far i did had no success to build it on a running openwrt as pkg-config seems to be not available (or i did not find the dependencies)

  5. igo95862 commented on May 22, 2026

    @igo95862
    Collaborator

    It doesn't look like OpenWRT packages elogind either. I will look in to what symbols dependency is produced when compiling on Alpine. It might fit one of the tags if the scope of used symbols is not too large.

  6. igo95862 commented on May 22, 2026

    @igo95862
    Collaborator

    I experimented with statically compiling on the Alpine and it seems like it is missing a bunch of static libraries:

    /usr/lib/gcc/x86_64-alpine-linux-musl/15.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lelogind: No such file or directory
    /usr/lib/gcc/x86_64-alpine-linux-musl/15.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: have you installed the static version of the elogind library ?
    /usr/lib/gcc/x86_64-alpine-linux-musl/15.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lcap: No such file or directory
    /usr/lib/gcc/x86_64-alpine-linux-musl/15.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: have you installed the static version of the cap library ?
    collect2: error: ld returned 1 exit status
    error: command '/usr/bin/cc' failed with exit code 1
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions