RPM Dropbox

From OLPC
Revision as of 16:44, 8 February 2011 by DanielDrake (talk | contribs) (Created page with '{{Dated}} (old content from Build system, to be updated soon) === Dropbox Mechanism === [http://dev.laptop.org/git/users/mstone/buildtools Source code] The dropbox mechan…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Emblem-warning.png The currency of this article or section may be limited by out-of-date information.
There may be relevant discussion on its talk page

(old content from Build system, to be updated soon)

Dropbox Mechanism

Source code

The dropbox mechanism is a way for people who don't have the resources to work through koji to supply us with activities and RPMs.

It is implemented in two pieces, one running on the dropbox-host and one running on the build-host. The dropbox-host simply provides an rsync daemon that will transfer packages to the builder on request.

The build-host uses the program 'collect-pkgs.py' to aggregate packages and change-entries into an RPM repository for composition by pilgrim.

Instructions for Use

Before getting started, you will need an account on dev.laptop.org (See Project hosting).

To add a completely new piece of software (either a new activity or a new package) to a build, three steps are necessary.

1. Include a source code package (.xo or .src.rpm) and a binary package (.xo or .rpm) in your dropbox (which is located at ~/public_rpms/<build>/ on dev.laptop.org). You will need to create the folder, here is an example for joyride:

mkdir -p ~/public_rpms/joyride

Note: do not remove the .xpm's or .xo's from the public_rpms location, not even after they already showed up in an image: public_rpms is not a temporary place where the build systems grab them; it will grab them from that location every run.

2. Update the change log to describe the changes made by the packages you are introducing. We accumulate changelog entries for ~/public_rpms/<build>/ChangeLog and ~/public_rpms/<build>/*.changes, so you can use a separate .changes file for each major group of packages you maintain.

3. Where possible, it's best to add your package as a new dependency of an existing package, so that the reason for the inclusion of this package is clear. If this is not possible, file a bug in trac with component 'distro' and owner 'cscott' requesting that the new package or activity be added to the build.

To verify that a package (here Web-72.xo) has been picked up you can do the following:

First you can look in the repos/joyride if there was a Web-*.xo present. Another interesting file in the same directory is the ChangeLog which is the aggregate ChangeLog that describes all of the packages pulled in from every dropbox. It contains warnings emitted when some problem prevents your RPMs from being picked up. Finally, you can read the buildlog to check if Web-72.xo was installed.

Bert made a script that aggregates changelogs as joyride-pkgs.html, which is useful for comparing build versions.

ChangeLog Format

The format of this ChangeLog is

 <pkg-lines>      (containing ".xo", ".rpm")                                                                                                                                  
 <detail-lines>   (not containing the string ".xo", ".rpm", "--")                                                                                                             
 -- <signature>   (-- is the line marker)                                                                                                                                     
                                                                                                                                                                              
 <pkg>                                                                                                                                                                        
 <pkg>.rpm                                                                                                                                                                    
 <detail>                                                                                                                                                                     
 -- <signature>

An example:

 Etoys-61.xo
 etoys-2.2.1710-1.noarch.rpm
 etoys-2.2.1710-1.src.rpm
 
   * changed activity launch to match new Sugar
   * words in tiles separated by spaces not camelCase
   * adds "distance to" and "bearing to" tiles
   * better .pot sort order
 
   -- Bert Freudenberg <bert@freudenbergs.de>  Tue, 16 Oct 2007
 
 squeak-vm-3.9-12olpc1.i386.rpm
 squeak-vm-3.9-12olpc1.src.rpm
 
   * big merge with trunk
   * unicode key events
   * fixed dbus plugin
 
   -- Bert Freudenberg <bert@freudenbergs.de>  Mon, 15 Oct 2007

Common Mistakes

You must use different time stamps for each ChangeLog entry on the -- author line.

If there are multiple authors of a single build-patch, you should list each person's contribution like so:

 pkg.rpm
   * change
   -- author 1
 pkg.rpm
   * change
   -- author 2

rather than like

 pkg.rpm
   * change
   -- author 1
   * change
   -- author 2

until we improve the ChangeLog parser.