I built a java-based application that can build Gentoo / Funtoo / Ubuntu (and other Debian-based) systems from within any Linux distribution that has Java installed. The source code is here:
And, I have a corresponding "system" to build an image:
1. I will be updating the code on github as all of the dependencies for the linux-builder project are about a year old. There is no documentation, this needs to be written for anyone to use.
2. My own systems are much more complicated than the sample system there. This is meant to showcase what you CAN do. Furthermore, there is also no documentation as to what patches are available, this needs written.
a. a "system" contains patches
b. a "patch" contains all the changes necessary for that single patch unit. This could be copying files, creating a user, group, adding a service to a runlevel, installing packages, etc. Patches that are inter-related are linked through "dependencies". This ensures the base patch is installed first so if those files or libraries, etc. are needed, they will be installed prior to installing this patch. It is meant to be as generic as possible so if you want to prepare a configuration for Gentoo and want to translate that to Ubuntu, you can with ease (provided you know the package names and configuration directory).
c. a "phase" can be setup, build, update, finalize and provides hooks at various stages of the build process. Say for instance, you need to download a file before you attempt to unpack and install it, you would create a download item in the setup phase.
I've been using this system for about 3 years now and my goals are / were to:
1. make it easier to get started with Gentoo / Funtoo
2. allow users to switch across distributions whilst having the same applications, configuration, etc.
partially supported, each distribution tends to put files in different places and has different package names thus requiring the packages listed in add-packages to be updated as well as the configuration files to be in the right place
3. share this utility with other linux users (Gentoo, Funtoo, etc.) and see what others' interests were and how this might help them to accomplish those goals
4. allow users to backup their systems easily and restore them to a pristine state
5. provide a means to capture all the patches applied to a system
provided in an earlier release, and not currently implemented (relied on python and latex to generate PDF files describing the system)