OpenSuse Build Service/Fremantle Setup

Contents

Fremantle

This currently refers to some inaccessible repos. I'll open them up as I get time.

Approach:

  • Copy all Nokia Fremantle Binaries to Fremantle:1.1:Std
  • Create Fremantle:1.1:Bootstrap/<pkg> to create packages (use useforbuild = no?)
  • Create Fremantle:1.1:Loaded to include additional binaries needed by OBS
  • Create Fremantle:1.1 as the nominal target for :Extras and the main prjconf

(see https://projects.maemo.org/trac/maemoobs/wiki/Fremantle too)

Setup the projects:

Fremantle:1.1:Std

 # Specify the OBS we're working on
 API=http://api17/

 # Get the Fremantle binaries
 mkdir -p /Downloads/fremantle1.1/
 cd /Downloads/fremantle1.1/
 wget -e robots=off --accept \*.deb --mirror --no-parent --progress=dot \
  --no-host-directories --cut-dirs=2 -nv \
  http://repository.maemo.org /pool/fremantle-update2/

 # Prepare for the :full dir for the OBS
 mkdir all all/all all/armel all/i386
 find free non-free -name *armel.deb | xargs -I@ ln @ all/armel
 find free non-free -name *i386.deb | xargs -I@ ln @ all/i386
 find free non-free -name *all.deb | xargs -I@ ln @ all/all

 # On an OBS client
 osc -A $API meta prj Fremantle:1.1:Std -F - <<XML
 <project name="Fremantle:1.1:Std">
   <title>Fremantle 1.1</title>
   <description>
 The standard binaries from Nokia
   </description>
   <person role="maintainer" userid="Admin"/>
   <person role="bugowner" userid="Admin"/>
   <build>
     <enable/>
   </build>
   <publish>
     <disable/>
   </publish>
   <debuginfo>
     <disable/>
   </debuginfo>
   <repository name="standard">
     <arch>armv7el</arch>
     <arch>i586</arch>
   </repository>
 </project>
XML

# Back on OBS server
# Copy the binaries into the new project
cd /srv/obs/build/Fremantle\:1.1\:Std/standard/
mkdir -p i586/:full armv7el/:full

ln /Downloads/fremantle1.1/all/armel/* armv7el/:full/
ln /Downloads/fremantle1.1/all/all/* armv7el/:full/

ln /Downloads/fremantle1.1/all/i386/* i586/:full/
ln /Downloads/fremantle1.1/all/all/* i586/:full/

/usr/lib/obs/server/bs_admin --rescan-repository Fremantle:1.1:Std standard i586
/usr/lib/obs/server/bs_admin --rescan-repository Fremantle:1.1:Std standard armv7el
/usr/lib/obs/server/bs_admin --rescan-repository Fremantle:1.1:Std standard armv5el

chown -R obsrun:obsrun /srv/obs/build/Fremantle*

Fremantle:1.1:Bootstrap

# On an OBS client
osc -A $API meta prj Fremantle:1.1:Bootstrap -F - <<XML
<project name="Fremantle:1.1:Std">
  <title>Fremantle 1.1</title>
  <description>
The standard binaries from Nokia
  </description>
  <person role="maintainer" userid="Admin"/>
  <person role="bugowner" userid="Admin"/>
  <build>
    <enable/>
  </build>
  <publish>
    <disable/>
  </publish>
  <debuginfo>
    <disable/>
  </debuginfo>
  <useforbuild>
    <disable/>
  </useforbuild>
  <repository name="Debian_5.0_standard">
    <path project="openSUSE.org:Debian:5.0" repository="standard"/>
    <arch>armv5el</arch>
    <arch>armv7el</arch>
    <arch>i586</arch>
  </repository>
  <repository name="Ubunty_9.04_standard">
    <path project="openSUSE.org:Ubuntu:9.04" repository="standard"/>
    <arch>armv5el</arch>
    <arch>armv7el</arch>
    <arch>i586</arch>
  </repository>
</project>
XML

This project has <useforbuild> disabled. This means that a package built in this project will not attempt to resolve dependencies from peer packages.

Now ensure the Ubuntu/Debian bootstrapped armv5el binaries are copied to the armv7el repo
 echo ExportFilter: armel\.deb$ armv5el | osc -A $API meta prjconf Fremantle:1.1:Bootstrap -F -


Fremantle:1.1:Loaded

This project

 osc -A $API meta prj Fremantle:1.1:Loaded -F - <<XML
<project name="Fremantle:1.1:Loaded">
  <title>Fremantle 1.1 Loaded</title>
  <description>
This project contains all the binaries used in addition to the
standard Nokia ones. They are built in Fremantle:1.1:Bootstrap and
then copied into here.
  </description>
  <person role="maintainer" userid="Admin"/>
  <person role="bugowner" userid="Admin"/>
  <build>
    <enable/>
  </build>
  <publish>
    <disable/>
  </publish>
  <debuginfo>
    <disable/>
  </debuginfo>
  <repository name="standard">
    <arch>armv7el</arch>
    <arch>i586</arch>
  </repository>
</project>
XML

Fremantle:1.1

This project is used as a target by applications. It is a multi-path project looking first in :Loaded and then in :Std

osc -A $API meta prj Fremantle:1.1 -F - <<XML
<project name="Fremantle:1.1">
  <title>Fremantle 1.1</title>
  <description>
This project is the OBS Fremantle target.  It is based on the standard
Nokia binaries with some additional binaries needed for Fremantle.
  </description>
  <person role="maintainer" userid="Admin"/>
  <person role="bugowner" userid="Admin"/>
  <build>
    <enable/>
  </build>
  <publish>
    <disable/>
  </publish>
  <debuginfo>
    <disable/>
  </debuginfo>
  <repository name="standard">
    <path project="Fremantle:1.1:Loaded" repository="standard"/>
    <path project="Fremantle:1.1:Std" repository="standard"/>
    <arch>armv7el</arch>
    <arch>i586</arch>
  </repository>
</project>
XML

Since this project is a target it needs a prjconf: https://dvcs.projects.maemo.org/git/?p=OBS/maemoConf;a=blob_plain;f=Maemo_Fremantle.conf;h=818bd5a0c9136d13e1bb698cfcf861f64522b1d1;hb=573b391ccecd8fef6e4f5328a272a3ab1c4cdee5


Extras

Binaries for :Loaded

scratchbox-fake
osc -A $API meta pkg Fremantle:1.1:Bootstrap scratchbox-fake -e
osc -A $API co Fremantle:1.1:Bootstrap scratchbox-fake
cd Fremantle:1.1:Bootstrap/scratchbox-fake
git clone git@dvcs.projects.maemo.org:OBS/fremantle-deltas/scratchbox-fake
cd scratchbox-fake
dpkg-buildpackage -S -uc -us
cd ..
osc addremove
osc commit -m"From git"

busybox

This just provides 'su' through busybox-login.

Stskeeps reports that there's a login pkg inside Nokia that would be better.

osc -A $API meta pkg Fremantle:1.1:Bootstrap busybox -e
osc -A $API co Fremantle:1.1:Bootstrap busybox
cd Fremantle:1.1:Bootstrap/busybox
git clone git@dvcs.projects.maemo.org:OBS/fremantle-deltas/busybox
cd busybox
dpkg-buildpackage -S -uc -us
cd ..
osc addremove
osc commit -m"From git"

fakeroot

osc -A $API meta pkg Fremantle:1.1:Bootstrap fakeroot -e
osc -A $API co Fremantle:1.1:Bootstrap fakeroot
cd Fremantle:1.1:Bootstrap/fakeroot
git clone git@dvcs.projects.maemo.org:OBS/fremantle-deltas/fakeroot
cd fakeroot
dpkg-buildpackage -S -uc -us
cd ..
osc addremove
osc commit -m"From git"