[rock-user] Version 3 of the ROCK Linux Distribution Build Kit a.k.a "ROCK3" released!
Thomas "fake" Jakobi
fake at rapidnetworks.de
Thu Jul 27 00:23:01 CEST 2006
It took a bit over 20 months, but finally, ROCK 3 is done.
Over the last 20 months, ROCK Linux has seen many changes not only in the
code, but also in its aim and social relations:
- ROCK has an official mission statement
- ROCK has switched to a Wiki-based website, allowing anyone to contribute in
various ways, not only coders and bug-reporters
- Sadly, some people have left ROCK for one reason or another
- Other people have in turn become more active in the project
Despite - or because - of that, ROCK 3 is now available for public
consumption. If you don't yet know what ROCK is, here's the short version:
ROCK is a Distribution Build Kit.
This means it is a tool to create and maintain GNU/Linux distributions. With a
few keystrokes and some patience, you can have a generic distribution up in a
short time. With some more work, you can adjust its package selection.
With the help of freshmeat and the power of autotools you can add new
packages in a heartbeat.
What kind of distribution you will create, is limited by your imagination
Creating a distribution is a complex task. ROCK makes this task a lot easier.
Many changes since the last release have gone into enhancing the example
distribution - Crystal ROCK - to be a good reference for what is possible.
The detailed ChangeLog is attached to the end of this announcement.
If this sounds awesome to you - it certainly does to us - then get involved
in the project!
Read our Roadmap for what will go into ROCK 4:
Read the ChangeLog from ROCK 2.0.3 to ROCK 3:
Join our IRC Channel to chat with developers and get help about using and/or
getting involved in the project:
Join our Mailinglists to keep up to date and discuss development - or better,
make suggestions! We always love to hear from you! Yes, you specifically!
Download the ROCK 3 version of Crystal ROCK and check out one possible result:
Grab the source code and start:
Read the Manual to see what is possible now:
Changes from ROCK Linux 2.0.3 to ROCK Linux 3
* General Build System Enhancements
* Cluster Builds on smp machines have been made easier to set up using
the -tasks switch to scripts/Build-Target
* Pseudonative Builds are now supported
* A script to create a UML Rootfilesystem from a ROCK Build was added
* A script to resolve the build-time dependencies of a package,
scripts/Create-DepList, was added
* The usability of scripts/Config was improved by a bash module
* A Package's "crossbuildability" is now a desc file contained information
* Support to build (almost) all binaries statically was added
* Support for on-demand package downloading was added to scripts/Build-Pkg
* Support for Subversion Checkouts was added to scripts/Download
* scripts/Update-Src now recognizes svn checkouts and submaster trees
* support for building arbitrary cross-toolchains was added
* md5sums are now embedded into isos, and checkable in the installer
* support for creating .desktop files programmatically was added
* probably all 1600 or so packages were updated to a newer version
* Forked Packages
forked packages allow for grouping of different versions of a package in one
logical, code-sharing unit in the build source tree, for example gcc, glibc
or linux. gcc is there in the flavors gcc=gcc2, gcc=gcc30, gcc=gcc31,
gcc=gcc32, gcc=gcc33, gcc=gcc34, gcc=gcc40 and gcc=gcc41, each containing the
latest version of that branch. the same goes for glibc=glibc22, glibc=glibc23
and glibc=glibc24, and linux with the linux=linux24 and linux=linux26
packageforks. This does not affect the binary packages, there still are
separate packages for all of these, of course.
* Package Splits
To better allow for separation of distinct parts of binary packages, the
possibility to do rule-based package splits has been introduced. Using
package splits, it's possible to clearly separate, for example, the
subversion server from the subversion client, by adding splitreg rules to the
subversion.conf file. By default, documentation files are inserted into
the 'doc' package split, and development files (headers, static libraries)
are added to a 'dev' package split. The name of a split is appended to the
package name, separated by a colon, so for binary package containint the
subversion server part, this is subversion:server. to take action on all
splits of a package including the base package, a new '-s' option was added
to mine, ROCK's default package manager.
* Post Install Scripts
Instead of relying on a cron job for post-package-installation work, like
re-creating the font cache for X11, postinstall-hooks have been added to the
build system, executed by, for example, rocket, after a package installation
or a succesful package build. The "API" is flexible and simple, and is
completely documented in package/base/sysfiles/sbin_postinstall.sh.
* Legacy Packages
Whenever a package is updated, the possibility exists that files that were
part of the previous version no longer are part of the new version. In this
case, the package manager now creates a split package by the name 'legacy',
where each of these files is containted. The files can be reviewed by the
user after an update, or explicitely purged by a postinstall script.
* Extended Help Texts
Extended Help Texts were added to the -help switches of the build tools,
giving in-detail information about the availible options and their proper
use. In this process, a LOT of typos were fixed, too - very importand ;-)
* Output Plugins
The output system was rewritten to use plugins for reporting build stati.
There is now the possibility to generate html, mail, or even speech output of
the build process. As a proof-of-concept, a mythtv-on-screen-display output
plugin is also shipped.
An example tool for managing gem package pools for distrbutions was added to
mine, the default package manager of ROCK. It allows for updating packages
from a package pool using http, ftp or even nfs if you like. The usage is
much like the well-known 'apt-get' tool from debian, with the added
capability to build packages from source using the ROCK sources
in /usr/src/rock-src. To reflect changes in packages affecting the binary
result of a package build, a new version tag was added to the desc files
called 'extraversion', which is appended to the desc file's [V] tag separated
by a space from the 'usual' package version.
As devfs is no longer availible, we now use udev as device filesystem,
defaulting to a devfs-like layout.
* Rock Initrd
The previous minimalistic, bash-generated-C initrd has been replaced by a
full-fledged, highly customizable bash-based initrd with support for udev,
encrypted filesystems, device-mapper and much more.
* Updated Toolchain
The default gcc version has been updated to 4.0.1, the default glibc version
to 2.3.6 and default binutils to version 184.108.40.206.7. The support for arm,
hppa, mips, sparc and powerpc has been extended, and first patches and tests
have been applied to support x86_64.
* Package Preselection Sets
It's now much easier to define your own package selection, using pre-defined
sets of packages to be found in misc/pkgsel/sets. More sets can be added if
* New Targets
New default targets have found their way into the source tree, most notably
the 'generic purpose distribution' Crystal, a generic KDE desktop LiveCD
distribution with support for x86, powerpc and sparc, and the Linux Video
Project (LVP). The bootdisk target's support for booting off a cd on powerpc
and sparc has been fixed, and support for booting on oldworld macs with MacOS
installed was added using BootX. The Rescue target was updatet and adopted to
More information about the rock-user