[haiku-development] Path-relocatable software and assigns?

  • From: Brecht Machiels <brecht@xxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sun, 12 Apr 2009 22:57:08 +0000


Since the thread on software organization/installation, I have been thinking about path-relocatable software. I'm not sure this is an actual problem for native software. As far as I can tell, most BeOS software is happy running from any directory.

I see a problem with ports however. Due to the way *nix software is typically organized, absolute paths are often compiled into the application. The prefix that is currently used when building this software is /boot/common. This requires the software to be actually installed to this location. While this might not be a major problem at the moment, but once Haiku is multi-user capable, users will not be able to run these applications without having the administrator install them to /boot/common.

I don't think this can be solved by means of links, as users can not create these if they do not have the necessary permissions. Plus links are not user local, but system wide.

In //www.freelists.org/post/haiku-development/software-management-proposal I proposed to implement assigns (yes, again from AmigaOS :). A port's prefix could then be set to "/portname-portversion-portrevision". The assign is simply a virtual directory that points to a real directory on the filesystem. There would be both system wide assigns and user local assigns.

As for the handling of dependencies and the search PATH, assigns could be useful too as I described in that same thread. This would require an equivalent to AmigaOS' assign ADD capability.

Perhaps there are other possibilities?

Do you think an assign equivalent would be a worthy addition to Haiku? If so, where would this be implemented? I've been looking at /BeOS/code/haiku/src/system/kernel/fs. Could this be the right place?


P.S. For more information on AmigaOS assigns, see http://cataclysm.cx/random/amiga/reference/AmigaOS3.9_Manual/dos/book-main54.html

Other related posts: