Mer/Build/Processes
OBS Project structure and promotion
The Mer projects on OBS look like this:
Maemo:Mer:Stable Maemo:Mer:Stable:HW:Beagle Maemo:Mer:Stable:HW:N8x0
This means all devices will have the main 'Stable' repository and an appropriate HW repository.
The development area is expanded slightly:
Maemo:Mer:Devel:Apps Maemo:Mer:Devel:Base Maemo:Mer:Devel:MaemoCommon Maemo:Mer:Devel:MaemoCommon:L10n Maemo:Mer:Devel:UI Maemo:Mer:Devel:HW:Beagle:Devel Maemo:Mer:Devel:HW:N8x0:Devel
Details of packages in each area is given in thePackages pages.
Packages in each of these Devel subproject areas can be hacked on and then, when they're kinda working they are consolidated into the :Devel area (which is used as a build target for the :Devel:* subprojects)
Maemo:Mer:Devel Maemo:Mer:Devel:HW:N8x0 Maemo:Mer:Devel:HW:Beagle
Packages are placed in :Testing with the intention of including them in the next release subject to QA and bug fixes
Maemo:Mer:Testing Maemo:Mer:Testing:HW:Beagle Maemo:Mer:Testing:HW:N8x0
Once :Testing is ready a release of all packages to a numbered version is made:
Maemo:Mer:0.13 Maemo:Mer:0.13:HW:Beagle Maemo:Mer:0.13:HW:N8x0
Note that the :HW promotion process is slightly different:
Maemo:Mer:Devel:HW:N8x0:Devel -> Maemo:Mer:Devel:HW:N8x0 -> Maemo:Mer:Testing:HW:N8x0 -> Maemo:Mer:Stable:HW:N8x0
Promotion Tasks
To promote a package:
osc copypac <SOURCEPRJ> <SOURCEPAC> <DESTPRJ>
eg:
osc copypac Maemo:Mer:Devel glib2.02 Maemo:Mer:Testing
Ensure that:
osc meta prjconf <SOURCE>
is copied to the <TARGET> conf. This may contain things like package selection preferences. Currently the prjconf is:
Prefer: hildon-fm-l10n-mr0 Ignore: hildon-fm-l10n-mr
To Promote :Devel To :Testing
First pipe over the project metadata:
osc meta prjconf Maemo:Mer:Devel | osc meta prjconf Maemo:Mer:Testing -F -
Then run:
for i in $(osc ls Maemo:Mer:Devel); do echo $i; osc copypac Maemo:Mer:Devel $i Maemo:Mer:Testing ; done for HW in HW:N8x0 HW:SmartQ HW:Freerunner HW:Beagle; do for i in $(osc ls Maemo:Mer:Devel:$HW); do echo $i; osc copypac -k Maemo:Mer:Devel:$HW $i Maemo:Mer:Testing:$HW ; done done
To Promote :Testing to :Stable
The process here is to create a versioned repo; eg :0.14
export STABLE=0.14
Create the projects (copied from 0.13):
osc meta prj Maemo:Mer:0.13 | sed "s/0.13/$STABLE/" |osc meta prj Maemo:Mer:$STABLE -F - for HW in HW:N8x0 HW:SmartQ HW:Freerunner HW:Beagle; do osc meta prj Maemo:Mer:0.13:$HW | sed "s/0.13/$STABLE/" |osc meta prj Maemo:Mer:$STABLE:$HW -F - done
Pipe over the project metadata:
osc meta prjconf Maemo:Mer:Testing | osc meta prjconf Maemo:Mer:$STABLE -F -
Then run:
for i in $(osc ls Maemo:Mer:Testing); do echo $i; osc copypac Maemo:Mer:Testing $i Maemo:Mer:$STABLE ; done for HW in HW:N8x0 HW:SmartQ HW:Freerunner HW:Beagle; do for i in $(osc ls Maemo:Mer:Testing:$HW); do echo $i; osc copypac Maemo:Mer:Testing:$HW $i Maemo:Mer:$STABLE:$HW ; done done
Then, once it's built and stable, use _aggregate to link each package to :Stable
First clean out :Stable
for i in $(osc ls Maemo:Mer:Stable); do osc deletepac Maemo:Mer:Stable $i ; done for HW in HW:N8x0 HW:SmartQ HW:Freerunner HW:Beagle; do for i in $(osc ls Maemo:Mer:Stable:$HW); do echo $i; osc deletepac Maemo:Mer:Stable:$HW $i; done done
NOTE The following uses -m in osc which is not accepted upstream yet. It will not work unless you have lbt's osc patches.
for i in $(osc ls Maemo:Mer:$STABLE); do osc aggregatepac Maemo:Mer:$STABLE $i Maemo:Mer:Stable; done
for HW in HW:N8x0 HW:SmartQ HW:Freerunner HW:Beagle; do
for i in $(osc ls Maemo:Mer:$STABLE:$HW); do echo $i
osc aggregatepac -m MerStable_Debian_5.0=Mer${STABLE}_Debian_5.0,MerStable_Ubuntu_9.04=Mer${STABLE}_Ubuntu_9.04 Maemo:Mer:${STABLE}:$HW $i Maemo:Mer:Stable:$HW
done
done
Note that :Stable project must be setup to publish and to build
Linking
To link to a source create a _link file containing:
<link project="linked project name" package="linked package name">
optionally:
<patches> <apply name="name of the first patch" /> </patches>
Sadly these patches apply to the files in the source; so this means you need to apply the diff to the maemo-ised diff file.