Mer/Build/Application Building
This page assumes you have installed OBS and setup an account.
The objective is to walk through creating a package on OBS that you can download to your Mer device using the package manager.
To create a new package
These osc commands are done in your own area - use your username after "home:"
Before you can create projects in your home project, you have to create it using the web interface:
- Click on "Home project" in the left navigation bar in the OBS website
- Click on "Create Project"
Run
osc meta pkg -e home:<username> <package>
This pops up an editor where you can edit the name/description and then save. This will tell the OBS server about the package.
To get a local (empty) copy run
osc up
You might need to checkout your home project first:
osc co home:<username>
This makes a package directory so now you can:
cp /path/to/<package>.tar.gz /path/to/<package>.dsc home:<username>/<package> cd home:<username>/<package>
Then add them to version control
osc addremove
and upload them
osc commit
To watch what is going on:
osc buildlog <target>
so
osc buildlog Debian_5.0 i586
This does something like a "tail -f" of the Xen builder.
Standalone Project
On the web, create the (sub)project maemopad.
In the repository section add a repository and from advanced select the Mer project: Maemo:Mer:Devel
Now we need to pick build targets:
https://build.opensuse.org/project/add_target_simple?project=home:<username>
And pick one or two ( I picked Debian Lenny and Ubuntu 8.10) This creates a standalone project and builds against another project
Goto your obs base (eg /scratch3/maemo/Mer/obs) and checkout the project:
osc co home:<username>:maemopad
Now create the package metadata:
osc meta pkg -e home:<username>:maemopad maemopad
and get a local copy (empty still):
cd home:<username>:maemopad/ osc up
the 'osc up' created a directory so go into it and get the source:
cd maemopad/ wget http://repository.maemo.org/pool/maemo4.1.2/free/m/maemopad/maemopad_2.4.dsc wget http://repository.maemo.org/pool/maemo4.1.2/free/m/maemopad/maemopad_2.4.tar.gz
Use the cheap'n'cheerful 'register all file adds and removes with vc'-command:
osc addremove
and then commit the source which uploads it to the OBS
osc commit -m "added source"
This will trigger a rebuild and you can access the logs.
Co-existing with Scratchbox
If you use the OBS local build facility and the scratchbox-1 local builder then you need to know how to teach the two emulators how to co-exist.
Both OBS and Scratchbox use binfmt_misc to cause the kernel to invoke (in our case) qemu when it comes across an armel binary.
To disable qemu and enable sbox
echo 0 > /proc/sys/fs/binfmt_misc/arm echo 0 > /proc/sys/fs/binfmt_misc/armeb echo 1 > /proc/sys/fs/binfmt_misc/sbox-arm echo 1 > /proc/sys/fs/binfmt_misc/sbox-armeb
To disable sbox and enable arm
echo 1 > /proc/sys/fs/binfmt_misc/arm echo 1 > /proc/sys/fs/binfmt_misc/armeb echo 0 > /proc/sys/fs/binfmt_misc/sbox-arm echo 0 > /proc/sys/fs/binfmt_misc/sbox-armeb
Don't do this whilst a build is in progress!
Note that you may need to run :
qemu-binfmt-conf.sh
to register qemu to handle arm binaries