What are seeds?
Seeds are textfiles used to create the list of packages that we want to ship with the Ubuntu Studio installation image.
A germinate script is used to parse these seed files and ensure that the required Ubuntu Studio packages are installed on the user's system.
Sometime after the seed files have been updated and pushed back to the lp:~ubuntustudio-dev/ubuntu-seeds repository, the germinate script will run on an Ubuntu server. The germinate output for all the Ubuntu flavours can be found here: http://people.canonical.com/~ubuntu-archive/germinate-output/
The results of all this will eventually be built onto the daily Live DVD. The past releases, and the current daily build can be found here: http://cdimages.ubuntu.com/ubuntustudio/
Occasionally, the Live DVD build will fail, and we receive an email on the Ubuntu Studio developers mailing list. Sometimes we need to adjust the seeds to fix some conflicts in the packages that are trying to be installed. Check the failed build log on the mailing list (or here: http://people.canonical.com/~ubuntu-archive/cd-build-logs/ubuntustudio/), and the above link to the germinate output can help determine which packages are pulling in which dependencies.
Managing Ubuntu Studio Seeds
The workflow to edit the Ubuntu Studio seeds is basically:
- get the source
- edit the source
- commit the changes
- push the changes back to the repository
The seeds for Ubuntu Studio are located at https://code.launchpad.net/~ubuntustudio-dev/ubuntu-seeds/+git/ubuntustudio.
Get them using the commandline tool git. For instance:
git clone https://git.launchpad.net/~ubuntustudio-dev/ubuntu-seeds/+git/ubuntustudio
Or alternatively, if you already have the seeds, cd into the directory and do a git pull.
All Ubuntu Studio code can be found at - https://code.launchpad.net/~ubuntustudio-dev. This currently points to the old bzr repositories. We are in the process of migrating everything to git. The git repositories can be found using the link on that page, or going directly here - https://code.launchpad.net/~ubuntustudio-dev/+git |
Editing Seeds
This is an example of a seed file (minimized version of a real seed file):
Task-Per-Derivative: 1 |
Task-Section: user |
Task-Description: 2D/3D creation and editing suite |
Task-Key: ubuntustudio-graphics |
|
* agave #This is a dependency |
* (blender) #This is a recommend |
# * (openclipart-svg) #Has been commented out, and will not be used |
|
* ubuntustudio-graphics # Metapackage for everything here. |
So, the next step is to use your favourite text editor to modify the seed files.
Make sure you are in the correct branch for the release you want to modify. Most of the time this will be the development release (currently "disco"):
git checkout disco
Then once the changes are made, you commit the changes with an explanatory message. Eg.:
git commit -m "Replace rubbish with wonderful in video seedfile. Rubbish is buggy"
It is a good idea to refer to the launchpad bug number in the commit message. For example, "Drop x package (LP: #123456)". If there isn't a bug yet, why not create one with a verbose description of the reason for the change? It will make things easier to work out why the change was made further down the road. Bugs against the Ubuntu Studio seeds should be reported against the ubuntustudio-meta source package (https://bugs.launchpad.net/ubuntu/+source/ubuntustudio-meta/+filebug).
Then push the changes back to the repository with git push. If you are not a member of the ~ubuntustudio-dev team, you will have to push the git branch somewhere else (eg. your own launchpad repository) and ask someone to merge the changes from there.
Note: The Ubuntu Studio Metapackages will also need to be updated (although this can wait a little while) to ensure that someone who wants to manually add the Ubuntu Studio packages to another Ubuntu flavour, will get the same packages that are on the Ubuntu Studio Live DVD for that release. Details for managing the Metapackages can be found here - UbuntuStudio/UbuntuStudioPackageMaintenance#Meta_Package_Maintenance
== More About Seed Management In General==