Systembuilder is a portslike tree, similar to FreeBSD's ports, and a script that uses the portslike tree to build a GNU+Linux system from scratch.
The resulting system is called RawGNU and includes the portslike tree to install additional software as needed.
Systembuilder can be obtained by git:
git clone http://sortedbits.org/git/systembuilder.git
The system is built and installed into the subdirectory GNU-Linux in the same directory as the build.sh script, it is a good idea to create it and mount a partition there first (though building a chroot environment without a partition of its own should work).
The portslike tree can also be used stand-alone to build applications.
Free software is going strong in use, but when it comes to the actual freedoms, specifically the freedoms to study and modify the software, it is often pretty hard to do so, because the common GNU+Linux (and also other operating systems and kernels) distributions give you binaries and nothing else.
Of course, you could look up where to find the source online, but you may face trouble:
- Which specific version of the sourcecode was used to compile the software installed on your computer?
- Which patches have been applied to the software? Distributions usually have a large collection of patches that they apply
- How was the software configured? Most software offer a great level of configurability at the compilation stage
- Where is the sourcecode? Despite the software being free it can sometimes be really difficult to find out where that sourcecode is hosted, shadow is a great example of this (mostly due to its name leading to irrelevant results in search engines)
So RawGNU is sourcebased, everything configured and built locally, heavily optimized for your specific hardware if you wish and know how.
The portslike tree is a big convenience tool, by automatically compiling and installing the software for you, however if you do wish to compile things on your own, but just can't find the source, you can also use it to fetch the sourcecode with 'make source' (other keywords are 'build' and 'install').
When the portslike tree downloads sourcecode it places it in /usr/src/PACKAGE_NAME (unless another directory is manually specified), and leaves it there also after compilation and installation, making it very easy to go back and study the sourcecode in detail, and modify it, and just recompile and install (as simple as make && make install in many cases)
With the portslike tree you also get very recent software, because the aim is to fetch sourcecode from as live sources as possible, such as git, svn and cvs repositories, or finding the latest tarball from the software's website if none of the previous were available.
Of course there may be breakages when using bleeding edge sourcecode, so there is a key variable named USE_STATIC that you can set to "yes" or "true" to make the portslike tree use "static" sources instead, meaning sources that are release packages (typically tarballs).
Another good thing with live sources (from SCM repositories) is that you have the tools to make patches of your changes, and making it easy to contribute with them.
Patches are very welcome, however patches without any functional effect are rarely of interest to me (such as style changes in Makefiles)
Patches can be sent to henrik30000@gmail.com. State your name and you will be credited.
If you are interested in the systembuilder and/or RawGNU you are very welcome to join me at #RawGNU or #SortedBits on Freenode (channels may not be registered yet as I am unsure if I will keep them alive, but you should find me idling there at least).