[haiku-development] Re: Package management - folder hierarchy

Hi Oliver,

Oliver Tappe <zooey@xxxxxxxxxxxxxxx> wrote:
> We do not have a union-fs implementation currently (and during my 
> research 
> I've read educated comments about why those are surprisingly hard to 
> get 
> "right"), so I started looking into the restructuring approach.

While I wouldn't mind some restructuring, I think a union-fs is still a 
worthwhile target.
Still, it would be nice to find an alternative approach for the time 
being, and make it pretty much optional that way.
Also, I have no good idea on how to have drivers in packages else.

> 1. common contains both Haiku-specific software as well as ports [as 
> is now]

I think there can only really be 1., as for some ports, it will be hard 
to determine where they should be put. For example, ScummVM should 
probably end up in /boot/apps/, but is a port, too. Or should only 
properly ported ports end up there? :-)

> /boot
> |-apps ->             [symlink to /boot/common/pkg-tree/apps]
> |-common
> |---cache             
> |---packages          [dropping a package here will activate it 
> system-wide]
> |-----history         [contains info required for rolling back in 
> time, used
> |                      by package manager]
> |---pkg-tree          [mountpoint of system package-fs, contents of 
> the 
> |                      packages in /boot/common/packages appear here, 
> the 
> |                      folders follow "Haiku filesystem hierarchy" (to 
> be
> |                      defined, an example given below)]

I think this needs a better name, although, I struggle to find one 
(besides the more verbose package-tree, that is).

> |-----data            [+ what used to be in 'share']

Where is that actually coming from? Using symlinks from pkg-tree?

> |---settings          [+ what used to be in 'etc']

Unfortunately, "etc" isn't just composed of settings, a large part is 
actually "data" or even "bin".

> |-home
> |---config            
> |---packages          [dropping a package here will activate it for 
> user]
> |-----history         [contains info required for rolling back in 
> time]
> |---pkg-tree          [mountpoint of user package-fs, contents of the 

I think both, packages, and pkg-tree should go under config/ as that's 
the equivalent to /boot/common.

> |-system              [unchanged, contents can be updated via package
> |                      manager by actual installing (unpacking) of 
> either a
> |                      complete "system" package or sequential 
> "system-fix" 
> |                      packages]

Even this needs package descriptions, though, to be able to let 3rd 
party depend on certain versions (for example, to be able to have the 
GCC2 support optionally available via a package in the far future).

> |---develop           [moved here from /boot/develop (except for the 
> 'tools'
> |                      folder), as it depends on the current system - 
> the
> |                      tools subfolder (gcc & binutils) will be spread 
> out
> |                      over /boot/common/pkg-tree]

Makes sense, especially because there is not much interesting user 
content there.
Also, we would still need /boot/common/develop/ to place the includes of 
development packages.

> |---optional          [moved here from /boot/optional, as the 
> contents 
>                        depend on the system]

Yup, even though I wouldn't mind to remove it completely, and have its 
contents as separate packages.

Bye,
   Axel.


Other related posts: