Vanilla restarts

With a restrictive package set
Added by David Demelier about 2 months ago

I restart the development of vanilla.

But, it will be done differently. I no longer focus on providing every package on earth but instead will carefully chose only what's necessary. I want to provide high quality packages with proper LLVM integration to reach the target of running a fully loaded LLVM distribution. Thanks to the latest version of some upstream packages it's now possible to boot a complete LLVM vanilla right now (even the Linux kernel and elfutils!).

What changed since last work

LLVM 13.0 is now available

The latest version (at the time of writing) is 13.0.0 and available.

AArch64 support is now available

The project has been ported to this architecture and can now be used on Raspberry Pi!

The project will also provide armv7 support later.

There is now a limited set of package split

Even though I thought it's a bad idea to split package, it's unfortunately necessary for some of them. It's still considered as a feature of last resort and as such used only when necessary.

  • llvm: upstream wants to build LLVM from a monorepo, as such the toolchain is fully built with one package and split into small parts: libcxx, libcxxabi, libunwind and so on.
  • util-linux: this package provides libraries that are used in many places which are necessary. It is split into individual libraries: libblkid, libmount, etc.
  • linux: splits into linux-headers

The package manager is two different applications

I think vpk is too big right now and as such all build features are put into a different application: vpkbuild. I thought it was better to split vpk because the download function did too many things and now having separate processes simplifies the command line interface.

No summary before installing

The vpk install command was insanely slow because it was computing the dependency list and then providing user summary. Instead vpk will now install everything immediately like apk does.

No sysvinit anymore

We use our very minimalist vinit project instead. It's sole purpose is to boot the system and call init scripts. No magic, no dependencies or anything. It will also have first class silent boot support.

A spawner vspawn

The minimalist vspawn is an application similar to start-stop-daemon except that it's much more simpler. It should be used to create init scripts that do not have daemonizing features.

Reserved UIDs and GIDs will start with an underscore

Similar to what OpenBSD does, all UIDs and GIDs that must not be used by the end user will start with an underscore. At a glance, it helps users to indicate that a user or group must not be manually modified or joined. The first package to have been changed to that is OpenSSH which now uses _sshd.

All other packages will be modified soon.


Future directions of the project.

Deprecating X.Org

As I also already said, I think wayland must replace X.Org at some point. It's a very large package set and wayland must be pushed ahead even more. There is no timeline for now as some desktops still require libx11 and their friends. Those who wants another init system can use their own.

Rewriting few vpk and vpkbuild parts in C

Shell is a good language for scripting quick stuff. But it's also limited, slow and painful to debug. When applicable as long as there are no dependencies, some part of vpk internals will be written in C for better performances, especially in dependencies calculation.