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

Work without FUSE #1

Open
probonopd opened this issue Apr 13, 2019 · 12 comments
Open

Work without FUSE #1

probonopd opened this issue Apr 13, 2019 · 12 comments
Labels
enhancement New feature or request low priority Might be worth working on, but is not a priority

Comments

@probonopd
Copy link
Contributor

probono:/tmp/deleteme $ ./appimagelint-x86_64.AppImage appimagelint-x86_64.AppImage --appimage-extract-and-run
(...)
/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/share/icons/hicolor/scalable/apps/appimagelint.svg
appimagelint.cli[1692] [INFO] Checking AppImage appimagelint-x86_64.AppImage
appimagelint.cli[1692] [INFO] Running check "GNU libc ABI check"
appimagelint.glibc_abi_check[1692] [INFO] detected required version for runtime: 2.3.3
Traceback (most recent call last):
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/site-packages/appimagelint/__main__.py", line 4, in <module>
    run()
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/site-packages/appimagelint/cli.py", line 95, in run
    for testres in check.run():
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/site-packages/appimagelint/checks/gnu_abi_check_base.py", line 52, in run
    with self._appimage.mount() as mountpoint:
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/site-packages/appimagelint/services/appimagemounter.py", line 74, in __enter__
    self.mount()
  File "/tmp/appimage_extracted_8d7197a55dad42c69bef2b18e43ff21f/usr/conda/lib/python3.7/site-packages/appimagelint/services/appimagemounter.py", line 44, in mount
    "(exit code {})".format(self._proc.poll()))
OSError: process exited before we could read AppImage mountpoint(exit code 1)

probono:/tmp/deleteme $ cat /etc/os-release 
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
@TheAssassin
Copy link
Owner

TheAssassin commented Apr 13, 2019

What environment is this running in? Mounting of course requires FUSE.

Trusty is not officially supported.

@probonopd
Copy link
Contributor Author

This is on Docker, FUSE is not enabled, which is why I was using --appimage-extract-and-run.

@TheAssassin
Copy link
Owner

appimagelint doesn't work in such an environment yet. I also am not sure whether it's a good idea to e.g., add a fallback that extracts AppImages before checking them.

What are you trying to do here?

@probonopd
Copy link
Contributor Author

I just wanted to try the tool out and since I am not on a Linux machine all the time, I wanted to use an account I have on a server to try it.

@TheAssassin
Copy link
Owner

I haven't come up with a solution how to properly implement an "extract" feature automatically. I guess there should be an env var that, when set, will make the tool extract instead of mount.

@probonopd
Copy link
Contributor Author

Or allow to lint AppDirs instead of/in addition to AppImages.

Then I could

  • Extract the AppImage to an AppDir
  • Run the appimagelint on the extracted AppDir
  • Be happy :)

@TheAssassin
Copy link
Owner

I already thought about how this could be realized properly. Right now, the contract for checks is based completely on AppImages. The checks can mount AppImages and check the contents, but they are free to run checks on the AppImage itself, too. This design decision allows for implementing a very simple interface for checks.

Some checks like the glibc or glibcxx compatibility also check the runtime for compatibility, which is somewhat interesting and IMO important.

I've been thinking about how to implement an interface that allows for constructing checks for AppDirs instead of AppImages, but this makes things a lot more complex workflow wise than you might think. I'm using the template method pattern a lot to avoid any kind of redundant code.

There will probably be such a feature at some point. But in the end, this tool is appimagelint, not appdirlint. So that's not a priority yet.

@probonopd
Copy link
Contributor Author

The question is whether we actually need appimagelint rather than appdirlint. The runtime is "well-known", feature complete (if you ask me) and does not need to change anymore (if you ask me). So the stuff that tends to need being checked is the AppDir, imho.

@TheAssassin
Copy link
Owner

There's tons of things to check about an AppImage, and it's not just the runtime's compatibility:

  • validity of update information
  • validity of embedded digests
  • validity of signatures
  • ...

@probonopd
Copy link
Contributor Author

True!

@TheAssassin
Copy link
Owner

Shall we make this issue a "extract as fallback when there's no FUSE" one? It doesn't really crash due to the fact it's Ubuntu trusty.

@probonopd
Copy link
Contributor Author

Yes, if it helps to make it usable in non-FUSE environments.

@TheAssassin TheAssassin changed the title Crashes on Ubuntu 14.04.5 LTS Work without FUSE Jun 29, 2019
@TheAssassin TheAssassin added enhancement New feature or request low priority Might be worth working on, but is not a priority labels Jun 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request low priority Might be worth working on, but is not a priority
Projects
None yet
Development

No branches or pull requests

2 participants