The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)


Local Mer

From Mer Wiki
Revision as of 10:49, 2 December 2011 by Stskeeps (Talk | contribs)

Jump to: navigation, search

Local Mer

A “local Mer” setup is the term given to the local OBS setup you need if you want to do a clean build of Mer.

Why?

  • Independence
  • Project configuration changes (build flags, etc)
  • Paranoia
  • Experiments

The process has the following steps - repeat for whatever architectures are needed: i586 is mandatory and must be first:

  1. Create local project tied to the remote source
  2. Set the target schedulers
  3. Setup a suitable prjconf
  4. Create a linkpac for each of the packages
  5. Allow the local build to take place
  6. Remove the remote link

Notes:
Limitations in the current OBS mean we can’t use normal linked builds because it doesn’t disable all i586 builds except the ones we want

A typical session looks like this:

BS_ARCH=armv7l
BS_SCHED=armv7el

osc -A merci meta prj Core:${BS_ARCH} -F - <<EOF
<project name="Core:${BS_ARCH}">
  <title></title>
  <description>

Tied to remote.
  </description>
  <person role="maintainer" userid="Admin"/>
  <person role="bugowner" userid="Admin"/>
  <debuginfo>
    <disable/>
  </debuginfo>
  <build>
    <enable/>
  </build>
  <publish>
    <enable/>
  </publish>
  <repository name="Core_${BS_ARCH}">
    <arch>i586</arch>
    <arch>${BS_SCHED}</arch>
  </repository>
</project>
EOF
osc -A merci ls fakeobs:Core:${BS_ARCH} | xargs -L1 -Ixxx osc -A merci linkpac -C copy fakeobs:Core:${BS_ARCH} xxx Core:${BS_ARCH} xxx

# Crude check there were no errors
osc -A merci ls fakeobs:Core:${BS_ARCH} | sort > /tmp/fake-list
osc -A merci ls Core:${BS_ARCH} | sort > /tmp/bs-list
diff /tmp/fake-list /tmp/bs-list

# Copy the prjconf
osc -A merci meta prjconf fakeobs:Core:${BS_ARCH} | osc -A merci meta prjconf Core:${BS_ARCH} -F -

# Add in the paths

echo "Please add:"
echo '<path repository="Core_i586" project="Core:i586"/>'
echo '<path repository="Core_${BS_ARCH}" project="fakeobs:Core:${BS_ARCH}"/>'
osc -A merci meta prj Core:${BS_ARCH} -e

At this point you chould check the project monitor page for any broken projects - these should be manually linkpac’ed again eg:

echo -e "elfutils-libelf-x86\nmeego-cross-armv7hl-sysroot" | xargs -L1 -Ixxx osc -A merci linkpac -C copy fakeobs:Core:${BS_ARCH} xxx Core:${BS_ARCH} xxx

Now wait for the project to rebuild. The following command is interesting:

watch osc -A merci jobhistory Core:${BS_ARCH} Core_${BS_ARCH} ${BS_SCHED}

Once this is done edit the project and remove the fakeobs:Core lines (also remove the "Tied to remote" reminder in the description) :

osc -A merci meta prj Core:${BS_ARCH} | grep -v fakeobs | grep -v "Tied to remote" | osc -A merci meta prj Core:${BS_ARCH} -F -
Personal tools