From Amarok Wiki

This page explains the technical parts of Amarok's Nightly build project (Neon). You will read about (hopefully) everything necessary to know before starting a new distribution implementation and the general framework design.

For general information about project Neon please visit User:Apachelogger/Project_Neon

Contents

Packages

  • All deps should be resolvable with default repositories and the repository the Neon packages reside in
  • In general it is a good idea to keep the most important Amarok dependencies packaged as well (qt, kdelibs, taglib, phonon)
  • Packages names prefixed with amarok-nightly-
  • Use the actual names rather than distribution specific names (e.g. taglib is libtag in Debian but amarok-nightly-taglib in Neon)
  • Using the current date as version number is suggested to cut down the requirement of updating the packaging for a new development series, also attach the SVN revision somehow (you might as well just use the revision number)

A package set would look like this:

 amarok-nightly                      20080319+svn10000
   depends
     amarok-nightly-taglib           20080316+svn10000
     amarok-nightly-kdebase-runtime  20080316+svn10000
     depends
       amarok-nightly-kdelibs        20080316+svn10000
       depends
         amarok-nightly-strigi       20080316+svn10000
         amarok-nightly-qt           20080301+svn10000

Framework

The Neon framework is hosted in KDE's SVN: http://websvn.kde.org/trunk/extragear/multimedia/amarok/supplementary_scripts/neon/

Get started

Checkout the source tree

 svn co svn://anonsvn.kde.org/home/kde/trunk/extragear/multimedia/amarok/supplementary_scripts/neon/

and copy distros/ubuntu.rb and distros/ubuntu/ to adjust it to your distribution.

Note: in some cases it might be necessary to completely rewrite the script to make it perfectly work with your distribution's requirements, in this case contact apachelogger in #rokymotion @ irc.freenode.net

Structure

  • neon.rb - base script which acts as wrapper for substructures
  • libneon.rb - general functions either required by neon, or useful for all/most distributions
  • fetcher.rb - handles source fetching and fills the @packages variable with the names of all fetched source trees
  • publisher.rb - meta require file for publisher scripts in publishers/
  • publisher/* - scripts which create and publish the tarballs by different methods (file move, ftp upload)
  • distro.rb - meta require file for distribution scripts in distros/
  • distros/$DISTRO.rb - script to create the packaging sources and further process them
  • distros/$DISTRO/ - anything required by $DISTRO.rb (e.g. actual packaging files or subscripts for distros/$DISTRO.rb)

Notes

  • Tarballs are generated on the Amarok server, you can either rely on them or let neon.rb create tarballs (latter is the preferred method if possible)
  • distros/ubuntu.rb can be used as an example for builds on a remote build server
  • By default Neon will fetch the Qt source tree from KDE's SVN (qt-copy) once a month, and all other dependencies once a week.
  • Usernames, passwords and other stuff can be stored in $HOME/.neonrc (using config.rb, see publishers/ftp.rb for example)
  • While the general foundation of the Neon framework is mostly fixed, it is to be expected that changes for every new distribution are necessary to improve the overall flexibility of Neon.