- Debugger: Getting mixed signals
- 'Packaging Infrastructure' Contract Weekly Report #4
- Haiku monthly activity report - 06/2015
- 'Packaging Infrastructure' Contract Weekly Report #3
- 'Packaging Infrastructure' Contract Weekly Report #2
- GCI 2014 winners trip report (mentor side)
- TeX Live and LyX; Changes to the boot code
- 'Packaging Infrastructure' Contract Weekly Report #1
- Beginning of 'Packaging Infrastructure' Contract
- Haiku monthly activity report - 05/2015
Package Management: Getting Cross
The end of my first two-man-months contract has been reached, but I'll be diving right into the next 160 hours of working on package management. So, first of all: a big thank you to all the donors out there!
Since Ingo's last blog entry from one week ago, he's spent some time on HaikuPorter, improving the dependency analyzer and implemented the requires updater, which adjusts a package with all the actual versions of dependencies that were used to build this package. Additionally, Ingo has enhanced the packaging policy checks, which are becoming a pretty thorough set of checks for ensuring that each package actually declares all the libraries and binaries it contains in the provides section. This is for instance important should we ever decide to split a package at a later stage, such that any packages depending on a specific library will just "move along".
Furthermore, on the Haiku side of things, Ingo has generalized the support for user/global settings files to global writable files (stuff traditionally put into /var) and fixed a couple of problems in the build system.
I have spent most of the week working on the cross builds, i.e. to get the set of packages built that are prerequirements for building all the HaikuPorts which are necessary to build Haiku. As part of that, I've dropped a feature from the runtime loader: when loading an executable for the alternative ABI (e.g. gcc4 on a gcc2 hybrid), the standard system library paths would be considered as a fallback. This is no longer the case, as those two ABIs are now considered incompatible.
Additionally, I adjusted the haiku_cross_devel packages created by Haiku's build system to support all architectures (not just x86_gcc2) and be easier to maintain with respect to the expected differences between the architectures. If installed, a haiku_cross_devel package just makes another package available in develop/cross/, which can be used to create the cross-build-sysroot for the corresponding architecture. When doing a cross-build, HaikuPorter will automatically create that sysroot at /boot/cross-sysroot/ and the cross compilers will look there for the required headers and libraries for the target architecture. This strict separation makes it possible to use HaikuPorter on (for instance) a gcc2-Haiku to build packages for a newer version of gcc2-Haiku that is binary incompatible. As part of that, building a cross-compiler on Haiku for the same architecture now works, too. All that was required is to tell the compiler's build system that it is building on 'i586-pc-haiku_build' and targetting 'i586-pc-haiku'.
Yesterday, I have started documenting the version of HaikuPorter for package management. It is currently only an outline, but I will try to finish work on that today.
After that, I will adjust our compilers to explicitly support a hybrid mode, which will cause them to only search in the hybrid-specific alternative library-/ and header-folders (e.g. develop/libs/gcc4 and develop/headers/gcc4). The latter example indicates another planned change: we intend to use compiler-specific header sub-folders, too.
So, we are making progress, but there's quite some more stuff to do ...
- zooey's blog
- Login or register to post comments

Comments
Re: Package Management: Getting Cross
Thank you for your work. I know that create a Package Manager is a huge and complex effort. Is nice to see progress.
PD: sorry for my bad english! :D
Re: Package Management: Getting Cross
It looks like you guy are progressing nicely!
Re: Package Management: Getting Cross
About the dependency management. Have you analyzed Nix approach to package handling on user system? It seems capable to prevent problems caused by single versioned packages. http://en.wikipedia.org/wiki/Nix_package_manager Does Haiku has the same approach as Linux - single version of package per system?
Re: Package Management: Getting Cross
Yes, during my initial evaluation of available packaging systems (more than two years ago, IIRC) I had a look at nix, too.
Concerning the "multiple versions of the same package" topic, Haiku's package management system currently only activates a single version of a package at a single package-fs mountpoint. Since there are three standard package-fs mountpoints (/boot/home/config, /boot/common and /boot/system) different versions of the same package can be active (one in each of the respective mountpoints).
We came up with a concept to be able to use force the PM-system to use a specific version of a package as a dependency of another one (like when the user notices that a program no longer works because one of its dependencies has been updated). However, this has not been implemented yet.