[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
and need.

In short:
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.

* Rocket
  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.

* Udev
  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 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 mailing list