a-shell icon indicating copy to clipboard operation
a-shell copied to clipboard

Package manager

Open MartinDelille opened this issue 4 years ago • 5 comments

This would be nice to have a Homebrew like package manager.

MartinDelille avatar Apr 27 '20 08:04 MartinDelille

As much as homebrew would be really neat, it only supports x86 & x86_64 at present. While there is a TigerBrew fork that includes PPC support, there does not appear to be an ARM variant at present.

There are however multiple other package sources that include aarch64 packages, as well as those that are source based.

kalanihelekunihi avatar May 03 '20 13:05 kalanihelekunihi

Any news on that?

iMonZ avatar Dec 12 '21 09:12 iMonZ

The AppStore rules are that all binaries must be present when the app is submitted for approval. That makes it (currently) incompatible with any kind of homebrew-like package manager.

There is a workaround with WebAssembly because wasm files are (technically...) not binaries but text files, and also because the execution is done by Apple's own wasm JIT compiler (so it's their security). Unfortunately, WebAssembly is still quite limited, and most packages cannot be compiled (anything that uses exceptions, or setjmp()/longjmp(), or threads, or forks... cannot be compiled to WebAssembly for now).

So the answer remains: not yet, but I keep trying regularly.

holzschu avatar Dec 12 '21 17:12 holzschu

Does a-shell have compiling capabilities ?

MartinDelille avatar Dec 12 '21 18:12 MartinDelille

Yes: there is clang, clang++ and make. You can compile packages to WebAssembly, and they will be executed (just type "a.out" at the prompt, a-Shell will recognize it's a WebAssembly file and run it).

But, and that's a very big but:

  • no shell means no way to run "./configure", which means most of the existing packages won't compile.
  • even if you get past this, many packages won't compile to WebAssembly. Most GNU packages assume that you have tons of GNU libraries available, which we don't. And many of these libraries use setjmp()/longjmp(), which won't work in WebAssembly.

So: compiling your own projects, yes. Compiling existing packages distributions... mostly no.

holzschu avatar Dec 12 '21 19:12 holzschu