Editing OpenSuse Build Service

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
== Our Goals ==
+
[[/Installation || Installing OpenSuse Build Service]] is a prerequisite for setting up a specific OBS project.
-
We want:
+
-
* to allow freedom for developers to develop;
+
-
* to provide a build service and SDK
+
-
* to work with the core distro as much as possible
+
-
* to provide excellent quality assured applications for our "app store";
+
-
* to extend the core distro with a community supported Surrounds area for libraries and packages that are depended upon by more than one application.
+
-
== Basics ==
 
-
Lets set out some basics about the OBS.
+
= Fremantle =
-
# It's a build system. You put source on it and say "use this repository" and it builds a minimal SDK-like chroot using the deb/rpms it finds in that repository
+
This currently refers to some inaccessible repos. I'll open them up as I get time.
-
# It has packages - a package corresponds to a tarball and a spec/dsc
+
-
# It has projects - a project is like a directory with packages
+
-
# When a package is built it is 'published' from the project where it was uploaded into a corresponding repository (which can be used to build other projects)
+
-
# The repositories can also be used by devices to download binary packages.
+
-
The 'trick' then, is to set up a structure of projects that we can use to support the publishing and sharing activities that we need.
+
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
-
Some tasks needed to get the OBS running:
+
(see https://projects.maemo.org/trac/maemoobs/wiki/Fremantle too)
-
* [[/Installation|OBS Installation]] - a detailed guide on how the system was setup.
+
-
* [[/Application QA Process|Application QA Process on the OBS]] - a proposal
+
-
* [[/Chinook Setup|Setting up Chinook]] - WIP
+
-
* [[/Fremantle_Setup|Setting up Fremantle]] - WIP.
+
-
* [[/MeeGo_Setup|Setting up MeeGo]] - WIP.
+
-
* [[/Cross_Setup|Setting up cross-building]] - started, not imported yet
+
-
* [[/Autobuild|An OBS Autobuilder queue]] - not started
+
-
* [[/Reporting|Reporting]] - not started
+
-
* [[Task:Maemo_OBS|Task page for Maemo OBS]]
+
-
[[Category:OpenSuse build service]]
+
Setup the projects:
 +
 
 +
=== Fremantle:1.1:Std ===
 +
<pre>
 +
# 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*
 +
</pre>
 +
 
 +
=== Fremantle:1.1:Bootstrap ===
 +
<pre>
 +
# 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 -
 +
</pre>
 +
 
 +
 
 +
=== Fremantle:1.1:Loaded ===
 +
This project
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
=== 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
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
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
 +
 
 +
<pre>
 +
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"
 +
</pre>
 +
 
 +
=== busybox ===
 +
This just provides 'su' through busybox-login.
 +
 
 +
Stskeeps reports that there's a login pkg inside Nokia that would be better.
 +
 
 +
<pre>
 +
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"
 +
</pre>
 +
 
 +
=== fakeroot ===
 +
<pre>
 +
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"
 +
</pre>

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)