tweaselORG / appstraction

An abstraction layer for common instrumentation functions (e.g. installing and starting apps, setting preferences, etc.) on Android and iOS.
MIT License
4 stars 1 forks source link

Fixes tweaselORG/docs.tweasel.org#3: Install clang bindings using pip #121

Closed zner0L closed 1 month ago

zner0L commented 10 months ago

Uses https://pypi.org/project/libclang/ to install clang binding, so that users don’t need a complete build env to install all dependencies. I tested it on a fresh Ubuntu.

baltpeter commented 10 months ago

https://docs.tweasel.org/usage/setup/#installing-the-libraries-and-tools already says that you need to install clang. That needs to be removed after this is merged.

baltpeter commented 10 months ago

Um, I can't reproduce the original problem anymore. On a fresh Ubuntu 23.04 (without clang), npm i appstraction works just fine for me, and installs pymobiledevice3 successfully:

image

I tested it on a fresh Ubuntu.

Have you also tested that the problem occurs without your fix?

baltpeter commented 10 months ago

sudo npm i -g tweasel-cli (as in my original report) also works fine.

baltpeter commented 10 months ago

The problem was caused by pyliblzfse. I would guess that whatever depended on that before, now doesn't anymore. In the appstraction venv on my host, I have a lib/python3.11/site-packages/pyliblzfse-0.4.1.dist-info folder. In the VM, there is no pyliblzfse* folder.

zner0L commented 10 months ago

It seems like you are right. This is the dependency tree of my old venv:

~/Library/Caches/autopy/venv/appstraction $ bin/pipdeptree -r -p pyliblzfse 
pyliblzfse==0.4.1
└── pyimg4==0.7 [requires: pyliblzfse>=0.4.1,<0.5.0]
    ├── ipsw-parser==1.1.5 [requires: pyimg4>=0.7]
    │   └── pymobiledevice3==1.42.4 [requires: ipsw-parser>=1.1.2]
    └── pymobiledevice3==1.42.4 [requires: pyimg4>=0.7]

Showing that the culprit is pyimg4 in version 0.7. They released a new version last week, which made pyliblzfse optional. And since the requirement is >=0.7, the new version is chosen. Strickly speaking, this would still require us to include clang in the dependencies, though pymobiledevice3 already released a new version which increases their version requirement. However, they also released a new major version recently, and I can not test whether that breaks anything for us right now.