GNOME Live Demos, (main page here), is a demo of latest gnome release. It's based on Foresight and this page is about how to build the images.
It's maintained using the rbuild tool. More docs available here. rbuild can be viewed as a frontend to conary/cvc/rmake and it's much simpler than using these tools separately/manually.
Setting up working environment (about passwords)
The 'gnome' product on rBuilder is "externally managed" and you may get a different password for it. The solution for rbuild is not like that for usual conary usage, where you write all the passwords in ~/.conaryrc, like
user jesse.rpath.org jesse <normal-passwd> user gnome.rpath.org jesse <gnome-passwd> user foresight.rpath.org jesse <fl-passwd>
This won't work for ~/.rbuildrc since it has a different format. The project-specific rbuildrc must be modified, e.g. ~/projects/gnome-2.30/.rbuild/rbuildrc. Append the password to the file:
user jesse <gnome-passwd>
Create new product for each of GNOME's major release
rbuild uses the concept of product. Each gnome release, 2.26, 2.28, 2.30, needs to be a new product.
Product is defined by a product-definition package. product-definition needs to exist before rbuild can work. So it has to be created manually, with cvc.
(The example is based on the 2.30 release).
First check out an older product.
cd <arbitrary-dir-1> # e.g. ~/projects/ rbuild init gnome.rpath.org@gnome:gnome-2.28 cd gnome-2.28/Release/ rbuild checkout product-definition
Note: product-definition is on the Release branch, not on Development as others.
Create the new product's definition.
cd <arbitrary-dir-2> # e.g. /tmp/tmp1/ cvc newpkg product-definition --config 'buildLabel gnome.rpath.org@gnome:gnome-2.30' cp ~/projects/gnome-2.28/Release/product-definition.* . cvc add product-definition.* . cvc ci -m 'new product version for 2.30'
Create the product.
cd ~/projects/ rbuild init gnome.rpath.org@gnome:gnome-2.30
Done.
Bump its base/platform
cd ~/projects/gnome-2.30 rbuild rebase # it's automatically committed; no commit needed
Get packages into the new buildLabel
Packages on the Live Demo is from Foresight (fl:2-devel), so to build the Demo, latest gnome release must have already been built into fl:2-devel.
Besides this, some packages need to be modified, in order to remove the branding changes made by foresight. E.g. the 'Foresight Linux' string in gdm and the Foresight theme.
- Firstly get the group-gnome-dist group from previous releases.
cvc promote group-gnome-dist:source=gnome.rpath.org@gnome:gnome-2.28-devel \ gnome.rpath.org@gnome:gnome-2.28-devel--/gnome.rpath.org@gnome:gnome-2.30-devel cd ~/projects/gnome-2.30/Development/ # need to be in Development dir/branch rbuild checkout group-gnome-dist # do any necessary tweak, with cvc
- Then promote any package needed for re-branding. For example
(Run "conary rq --install-label gnome.rpath.org@gnome:gnome-2.26" to check the old products as an example)gdm gnome-applets gnome-desktop gnome-menus gnome-panel gnome-system-tools gnome-themes libgnome ??? live-setup splashy-theme
- The 'gnomepackage' recipe needs to be copied too. 'cvc promote' it from fl:2-devel (because we are using release tarballs, not fresh git like gnome-dev kit) as mentioned above. It doesn't need any change.
Build packages.
cd Development/ rbuild build packages
Note: make sure your working space is updated to tip (e.g. when multiple developers are working on the same product), or there might be glitches:
[Fri Feb 26 09:16:34 2010] Creating rMake build job for 4 items warning: the following edited packages were not in any groups or have not been committed yet - building with default flavors: live-setup, splashy-theme
Build groups in Development stage
cd Development/ rbuild build groups
Promote groups to QA, and build images in QA
cd Development/ rbuild promote cd ../QA/ rbuild build images
Test it
Test it, rebuild, tweak packages...
<TODO: about quick test/build>
The --no-recurse option to 'rbuild build package' may help. The following command will build the specified package only:
rbuild build packages gnome-panel --no-recurse
Otherwise it will build all checked-out packages that are modified (right?).
Promote to Release
cd QA/ rbuild promote cd Release/ rbuild build images
Publish images, and it's done.
TODO list
- Need a platform-definition based on fl:2-devel
