User Tools

Site Tools


ubuntu

Calendar

setting up the latest development environment

(see also http://developer.ubuntu.com/packaging/html/getting-set-up.html)

sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

sudo apt-get install packaging-dev

gnupg – GNU Privacy Guard contains tools you will need to create a cryptographic key with which you will sign files you want to upload to Launchpad

pbuilder – a tool to do a reproducible builds of a package in a clean and isolated environment

ubuntu-dev-tools (and devscripts, a direct dependency) – a collection of tools that make many packaging tasks easier

bzr-builddeb (and bzr, a dependency) – distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each others work

apt-file provides an easy way to find the binary package that contains a given file (apt-file search <file>). Another way to find the package a file belongs to is dpkg -S <file> (for installed packages).

apt-cache (part of the apt package) provides even more information about packages on Ubuntu

gpg --gen-key

GPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine. Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure.

Afterward, it will ask you if you want it to expire the key at some stage. It is safe to say “0”, which means the key will never expire. The last questions will be about your name and email address. Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on. Adding a comment is not necessary.

ssh-keygen -t rsa
pbuilder-dist <release> create

where <release> is for example precise, oneiric, natty, maverick, lucid or in the case of Debian maybe sid. This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.

(see also http://wiki.awn-project.org/HowToUseBzr)

bzr whoami "Bob Dobbs <subgenius@example.com>"
bzr launchpad-login subgenius

With launchpad-login you set your Launchpad ID. This way code that you publish in Launchpad will be associated with you.

Similar to Bazaar, the Debian/Ubuntu packaging tools need to learn about you as well. Simply open your ~/.bashrc in a text editor and add something like this to the bottom of it:

export DEBFULLNAME="Bob Dobbs"
export DEBEMAIL="subgenius@example.com"

You can paste your public SSH key (the public one is fine, not the secret one) into https://launchpad.net/~/+editsshkeys. Insert the contents of your public key (usually ~/.ssh/id_dsa.pub or ~/.ssh/id_rsa.pub) into the text box and submit.

gpg --fingerprint <email@address.com>
gpg --send-keys <KEY ID>

Once all of this is done, you can register your GPG key at https://launchpad.net/~/+editpgpkeys -

finding bugs to work on

Fixing a bug in Ubuntu

http://harvest.ubuntu.com

ARM bugs

identify package to which a program belongs:

apt-cache showsrc tomboy | grep ^Package:

to get the source code for package, you run

bzr branch lp:ubuntu/<packagename>        (for the latest development release, 'precise' in our case)

or

bzr branch lp:ubuntu/<release>/<packagename>        (for any other release)
bzr commit

bzr push lp:~<yourlpid>/ubuntu/<release>/<package>/<branchname>

e.g bzr push lp:~emmaadams/ubuntu/natty/specialpackage/fix-for-123456, then you can run “bzr lp-open”, which will open the corresponding page on Launchpad, where you can click on “(+) Propose for merging” link, to get the change reviewed by somebody and included in Ubuntu.

Try Ubuntu ARM for your use case. See the Ubuntu ARM wiki. Fix anything that doesn't work. Submit the patches for upload. https://wiki.ubuntu.com/ARM/FTBFS. See “Missing or incorrect platform specific code”.

If you have ARM hardware to test on you can fix bugs as with any other package. Upstreaming and sending fixes to Debian is usually a good idea. Even if they do not yet have the issue (Ubuntu using newer toolchain, built for ARMv7, has different configuration and packaging choices) they may need it soon.

Bug triaging can be done even without trying any builds.

  • Close invalid bugs: Some bugs may get out of date if they are filed automatically on FTBFS but then are forgotten and not closed when a new build succeeds.
  • Check the issue with Debian/upstreams and forward upstream or link to upstream bugtracker patches
  • Tag them for easier retrieval: they all have the ftbfs and arm-porting-queue tags, but there can be other good ways to tag (arm-build-timeout , qt-opengl-arm, etc)

Some ideas:

  1. Use an SMP kernel, compiling code with SMP defined
  2. Turn on kernel preemption configuration option on single processor machine (shows some SMP bugs)

Development

Compiling software in Ubuntu.

Ubuntu kernel for OMAP4

http://omappedia.org/wiki/Development_With_Ubuntu

Ubuntu packaging guide (see also Debian manual or the Debian maintainer guide).

apt-get source foo
cd foo-*
sudo apt-get build-dep foo
dch -l local 'Blah blah blah'
debuild -us -uc

#debug options
#export DEB_BUILD_OPTIONS=debug,nostrip,noopt

dpkg-buildpackage -rfakeroot -us -uc -nc

https://help.ubuntu.com/community/CompilingSoftware

Helping with bugs. See also how to triage a bug.

Building your own kernel

Setting up a root filesystem

https://wiki.ubuntu.com/ARM/RootfsFromScratch

Ubuntu Core is the current up-to-date minimal root filesystem. See Ubuntu Core wiki and Omappedia Ubuntu Core.

Precise

ARM issues

Thumb2 reference pages.

NFS

Kernel issues

Interesting links

ubuntu.txt · Last modified: by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki