InvolvingInUbuntuDevelopment

Revision 1 as of 2011-05-04 15:43:50

Clear message

Open Week -- Involving in ubuntu development/packaging and kickstarting your box for ubuntu development/packaging -- Bhavani Shankar -- Mon, May 2

   1 [17:02] <coolbhavi> I am Bhavani Shankar a ubuntu community contributor for ~4 years and a MOTU
   2 [17:02] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/05/02/%23ubuntu-classroom.html following the conclusion of the session.
   3 [17:03] <coolbhavi> today I am going to take a session on intro into the ubuntu devel sphere and setting up basics for ubuntu dev environment
   4 [17:04] <coolbhavi> so assuming there are no questions lets get started
   5 [17:05] <coolbhavi> Now the primary question one thinks of when ubuntu development comes to mind is "how do I contribute"
   6 [17:06] <coolbhavi> Basically in the ubuntu development world there is no preference/prerequisite of any language required to contribute. So everyone is welcome to the scene :)
   7 [17:10] <coolbhavi> You can do various kinds of stuff in ubuntu development environment such as merges syncs where in we port debian changes or update a package to the latest upstream version or do a stable update release where we update the software in present stable release via the -updates component or you can fix build failures or you can contribute a bit of your own code
   8 [17:10] <coolbhavi> :)
   9 [17:12] <coolbhavi> so what does it actually take to start off development? First and the foremost important thing is to understand the ubuntu packaging guide here:https://wiki.ubuntu.com/PackagingGuide/Complete
  10 [17:13] <coolbhavi> It might be a bit rough and tough to start with but we motu's always hang around in #ubuntu-motu You can always jump in and ask for any help
  11 [17:14] <coolbhavi> by that I meant essentially participation is important :)
  12 [17:15] <coolbhavi> next important thing is the ReleaseSchedule and understanding of it. ttps://wiki.ubuntu.com/OneiricReleaseSchedule
  13 [17:17] <coolbhavi> is the latest ubuntu release schedule wherein you can see a lot of freezes such as debian import freeze from where on semi automatic syncing of packages from debian is stopped essentially
  14 === med_out is now known as medberry
  15 [17:19] <coolbhavi> Feature freeze upon which we concentrate only on bugfix releases and highly critical changes and we dont accept any new version of package (exception is that it should be only a bugfix release)
  16 [17:21] <coolbhavi> after a brief description of freezes above next thing which comes to mind is how do I get my package into the ubuntu repositories? Is there any help available in this process?
  17 [17:21] <coolbhavi> Certainly yes. In the ubuntu/debian world we do something called as sponsoring
  18 [17:24] <coolbhavi> sponsoring in short is nothing but signing of a package by a ubuntu/debian developer on behalf of the prespective developer and uploading it to the archives after reviewing it and major of it is handled by the ubuntu sponsors team: https://wiki.ubuntu.com/SponsorshipProcess
  19 [17:25] <coolbhavi> explains the details
  20 [17:25] <coolbhavi> so with this brief background lets get started into setting up a devel environment
  21 [17:25] <coolbhavi> :)
  22 [17:27] <coolbhavi> So assuming that everyone has the required components of the repositories enabled (mainly universe and main) Type this in a terminal: sudo apt-get install --no-install-recommends bzr-builddeb ubuntu-dev-tools fakeroot build-essential gnupg pbuilder debhelper
  23 [17:28] <coolbhavi> so it should pull in all the stuff basically required to setup ubuntu devel environment
  24 [17:31] <coolbhavi> like debhelper is used as a helper package to create debian packages and ubuntu-dev-tools is a collection of various useful tools such as grab-merge.sh for example is a semi-automatic script for merging debian package onto ubuntu :)
  25 [17:32] <coolbhavi> these were just examples of some of the packages we are installing right now
  26 [17:33] <coolbhavi> lets move on and setup your gpg-key used for signing the package and uploading in simple terms
  27 [17:34] <coolbhavi> (which also ensures that people with the right archive access uploads the package thus preventing accidental unauthorized uploads)
  28 [17:35] <coolbhavi> so please run in a terminal gpg --gen-key (If you havent had a gpg key yet)
  29 [17:36] <coolbhavi>  sticking to the defaults should be fine enough like you need not have to type in a comment for your key
  30 [17:38] <coolbhavi> If by chance if anyone gets stuck at this phase there is always an excellent howto here which you can bookmark https://help.ubuntu.com/community/GnuPrivacyGuardHowto
  31 [17:40] <coolbhavi> so moving on the key when its in generation stage it requires some system activity to be done so please play music or type on keyboard or do anything you wish to gain entropy :)
  32 [17:40] <coolbhavi> next once the key is generated you need to upload it to launchpad
  33 [17:43] <coolbhavi> here type gpg --list-keys now and copy the key fingerprint to https://launchpad.net/people/+me/+editpgpkeys upon success you will get a confirmation mail having encrypted info of the key
  34 [17:44] <coolbhavi> if your mail client supports gpg then just decrypt and follow the procedure or just download the text and run gpg -d on the file
  35 [17:45] <coolbhavi> (If you have a gpg key please skip the above)
  36 [17:46] <coolbhavi> Next up and the most important thing is setting up pbuilder which is a pristine minimal chroot environment to build debian packages
  37 [17:46] <coolbhavi> please open an editor and edit the file ~/.pbuilderrc (create if you don't have it yet)
  38 [17:47] <coolbhavi> and paste this: COMPONENTS="main universe multiverse restricted"
  39 [17:47] <coolbhavi> next save the file and run sudo pbuilder create
  40 [17:48] <coolbhavi> This will take a lot of time so its better to have some walk around in the park and come back :)
  41 [17:50] <coolbhavi> so that should setup your pbuilder :) to setup pbuilder for the current development version i.e oneiric please type sudo pbuilder update --distribution oneiric --override-config
  42 [17:51] <coolbhavi> so that should setup a minimal pristine environment to build and test packages wrt oneiric
  43 [17:52] <ClassBot> There are 10 minutes remaining in the current session.
  44 [17:52] <coolbhavi> last but not the least: If you are using the bash shell, which is the default, please edit ~/.bashrc
  45 [17:54] <coolbhavi> and please type something like DEBFULLNAME="Bhavani Shankar" DEBEMAIL="bhavi@ubuntu.com" and save it
  46 [17:54] <coolbhavi> PS: please use your own name :)
  47 [17:55] <coolbhavi> so once you are done editing and adding the above to the last line of the file please run   source ~/. bashrc  (it's only needed once to pick up the new bash variables)
  48 [17:57] <coolbhavi> So that should set your box as a dev box to get your contribution to ubuntu development up and running :)
  49 [17:57] <ClassBot> There are 5 minutes remaining in the current session.
  50 [17:57] <coolbhavi> since there are 5 more minutes.. Any questions welcome :)
  51 [18:00]  * jcastro jiggles the classbot
  52