Revision of Package helpers from Fri, 05/04/2012 - 22:18
The revisions let you track differences between multiple versions of a post.
There are a set of scripts used to build trisquel packages. They are located in http://bzr.trisquel.info/package-helpers/ , and we call them helpers. We use them to modify and compile those packages coming from Ubuntu upstream which need it. It might be because they contain non-free stuff, references to Ubuntu that need to be changed, or because we want the package to work our way.
This helpers are similar to some of those in the gNewSense builder; we took some ideas and even some lines from them. If you plan to build an Ubuntu derivative of your own, we suggest you use builder instead of these helpers.
All packages in this list are in the appropriate blacklist in the repository updater, so they never enter into the repo from upstream and need to be compiled with this helpers and pushed into reprepro.
These helpers also need to be run by hand (and the results tested) any time the repo watchdog warns about pending updates from upstream.
To add a package to the list, just copy one (make-apache2 is a good template) and rename it to make-sourcePackageName. To send the file back to us, or to include any modification into the current scripts, use "bzr diff" and send the output as an attachment to trisquel-devel@listas.trisquel.info. You need to join the mailing list to send messages to it.
Some recommendations
- Take care to use the right sourcePackageName, many source packages produce several binary packages. "apt-cache showsrc binary-package" can help you.
- If possible, use sed to replace chains in the upstream source without the need of external files or patches. If you really need to include a file, place it at the DATA/sourcePackageName directory
- Do not replace *all* references to Ubuntu in the package, just those that would actually be shown to the user. Avoid replacing copyright statements!
- Try to write your replacements in a way they might work in future versions of the upstream package. Well written regexps and sed will help with that.
Prerequisites
To properly compile packages using package helpers you need to install some packages to begin with:sudo apt-get install bzr reprepro== Compiling packages with the helpers ==
First, get a copy of the helpers and management scripts using bazaar:
bzr branch http://bzr.trisquel.info/package-helpers/trunkThen, to compile a package, run as in this example:
sudo sh makepackage apache2 lucidThe makepackage script will create and configure the compilation jails, as well as the output repository.
NOTE: you should run this in an amd64 computer, otherwise you can only compile i386 packages (after modifying makepackage to remove the amd64 steps).
Writing new helpers
= List of available variables inside the helper scripts
- CODENAME=dagda
- The codename of the current Trisquel release
- REVISION=5.0
- The version number for the current Trisquel release
- UPSTREAM=natty
- The upstream codename for the release
- MIRROR=http://archive.ubuntu.com/ubuntu
- The upstream mirror from where to get the sources
- DEVELMIRROR=http://devel.trisquel.info/trisquel
- The development mirror
- Useful when a package depends on other that needs to be trisquelized first
- LOCALMIRROR=http://archive.trisquel.info/trisquel # The official mirror
- EXTERNAL="deb-src http://sample.repo.foo/ current main"
- Makes the sources in that repository available for compilation
- It will only be used if Ubuntu doesn't provide the package or its version is lower
- $DATA/
- Directory containing files for the helper
- Put the files in helpers/$RELEASE/DATA/$PACKAGE
- Usage example: cp $DATA/file.txt debian/patches
- VERSION=1
- Trisquel version to append (as in 2.4-1ubuntu4+5.0trisquel1)
- We append "+5.0trisquel1", which is +${REVISION}trisquel${VERSION}
- Increase every time the helper is updated
- COMPONENT=main
- Tells the build system that the package comes from main, so the translations should be stripped
- Use only when the rebranding doesn't affect the locales!
- FAKEROOT=true
- Tells the build system to use a fakeroot and compile as user "nobody"
- PARALLEL=true
- Do not compile with -j$NUM_PROCESSORS, required by some packages like samba