Tuesday 8 September 2009

My Ubuntu development tools

This is another post about my work towards becoming MOTU.

I've been working a lot on various packages, such as network-manager, concordance, and more recently acct and acct-ng. On the way, you always get to know more, and following the spirit of open source, I've decided to share what I've learned.

Since I've started to do packaging work, I've been keeping various little configuration files around to tweak the behaviour of the various utilities we get to use daily. I've been keeping all those in a 'junk' bazaar repository, but it's getting much less like 'junk' and more like something actually usable, so I'm publishing it:

lp:~mathieu-tl/+junk/development-tools

It's a branch new branches that contains the very latest version of all the config I've been using, including some aliases I usually always have set on my systems. I will be keeping all the files up to date there from now on, so you will likely see things evolve over time.

Here's what I have in there:
  • A .pbuilderrc file: it allows me to specify DIST=karmic (or sid or whatever else) at the command line, and also makes use of mini-dinstall to quickly build packages and changes the packages available when running builds. As such, the following command will build a package for karmic:
sudo DIST=karmic pbuild build glittering_new_package.dsc

Just as this line will build the same package for jaunty (provided all is well):

sudo DIST=jaunty pbuild build glittering_new_package.dsc
  • .mini-dinstall.conf : The second part to the above. Specifies some rules for mini-dinstall (requires creating /var/cache/archive...)
  • .dput.cf has the last part of this stuff, or where to put packages, and how to let mini-dinstall know about them
  • .dput.cf also knows how to push source packages to PPAs, as well as to mentors.debian.org.
  • .quiltrc : to make pretty patches. Then you can make them follow DEP3 too.
  • .selected_editor : because I just really love vim.
  • .bazaar/builddeb.conf : tweaks to directories used by bzr bd.
  • .ssh/config : very nice and time-saving tweaks to SSH.
  • .shell* files : they contain additional aliases, shell functions, and variables that are either extremely useful (at least to me) or just plain mandatory for anyone serious in doing packaging, such as DEBFULLNAME, DEBEMAIL, or BZR_EMAIL.
Oh yeah, and you might want to change those last three variables to your own values in .shell_custom_vars... :)

All that includes a quick README file, but essentially it's a matter of dropping the files in your home directory and logging in and out, or closing and reopening a terminal. All the shell stuff works by including .shell_custom_start somewhere in your profile.

If you find stuff that you think is totally wrong or needs more work, please let me know. There is still a lot of room for improvement.

No comments: