Mer/Build/Install OBS

(Ubuntu)
(Ubuntu)
 
(15 intermediate revisions not shown)
Line 1: Line 1:
 +
{{Mer}}
 +
 +
[[OBS]] stands for [https://build.opensuse.org/ OpenSuse Build Service]. You can find out more about it from the OpenSuse webpage.
 +
== Installing OBS tools locally ==
== Installing OBS tools locally ==
You'll need an [https://secure-www.novell.com/selfreg/jsp/createOpenSuseAccount.jsp?target=http://www.opensuse.org account with Novell]
You'll need an [https://secure-www.novell.com/selfreg/jsp/createOpenSuseAccount.jsp?target=http://www.opensuse.org account with Novell]
-
You must then visit your [https://build.opensuse.org/project/list_my project list] and click : "Let me build my packages"
+
You must then visit your [https://build.opensuse.org/project/list_my project list] and click : "Let me build my packages!"
-
(Could someone confirm the step above... it only appears when you create a new account)
 
=== Debian ===
=== Debian ===
-
Assuming a Debian Lenny/5.0 development box locally:
+
Assuming a Debian Testing development box locally:
-
To get the OBS tools repository add the following line:
+
To get the OBS tools repository add an entry to the sources.lists:
-
  deb <nowiki>http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /</nowiki>
+
  echo "deb <nowiki>http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /</nowiki>" > /etc/apt/sources.list.d/obs.list
-
to a new file called:
+
-
/etc/apt/sources.list.d/obs.list
+
Then
Then
  apt-get update
  apt-get update
  apt-get install osc build qemu
  apt-get install osc build qemu
 +
 +
OBS uses 403 redirects which hits a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=479350 bug in apt] in Lenny.
 +
 +
 +
You can workaround using:
 +
  wget http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/./all/build_2009.09.23-1_all.deb
 +
  apt-get -f install
=== Ubuntu ===
=== Ubuntu ===
Line 28: Line 36:
Then
Then
 +
# add the key in the apt keyring
 +
wget -q http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/Release.key -O- | apt-key add -
 +
# refresh your package source
  apt-get update
  apt-get update
  apt-get install osc build
  apt-get install osc build
Line 37: Line 48:
   ln -s ../site-packages/osc* .
   ln -s ../site-packages/osc* .
-
Ubuntu qemu isn't up to it so we need the Debian one:
+
Suse don't have an Ubuntu qemu yet so we use the one they make for Debian (bug raised):
Add the following lines:
Add the following lines:
  deb <nowiki>http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /</nowiki>
  deb <nowiki>http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /</nowiki>
-
deb <nowiki>http://ftp.debian.org/debian/</nowiki> stable main
 
to a new file called:
to a new file called:
  /etc/apt/sources.list.d/debian5_qemu.list
  /etc/apt/sources.list.d/debian5_qemu.list
Line 48: Line 58:
  apt-get update
  apt-get update
  apt-get install qemu
  apt-get install qemu
-
 
now remove that file:  
now remove that file:  
Line 55: Line 64:
and run
and run
  apt-get update
  apt-get update
 +
==== Troubleshooting ====
==== Troubleshooting ====
Line 64: Line 74:
replacing ''SOMEKEY'' with the complained about key
replacing ''SOMEKEY'' with the complained about key
-
NOTE: On Ubuntu 9.04 (jaunty) in python2.6, you will probably need to do the following to make osc run without errors (it's a quick hack):
+
=== RedHat Enterprise Linux 5 ===
-
  <code>ln -s /usr/lib/python2.6/site-packages/osc /usr/lib/python2.6/dist-packages/osc</code>
+
Assuming a RHEL 5 box locally:
 +
 
 +
The M2Crypto package that comes w/ RHEL5 is too old. I retrieved the 0.19.1 source rpm from Fedora 10 and built it for my architecture. But you will need to update this package to at least version 0.19 before installing the OBS packages.
 +
 
 +
Install the public key for the OBS RPM repository:
 +
  rpm --import http://download.opensuse.org/repositories/openSUSE:/Tools/RHEL_5/repodata/repomd.xml.key
 +
 
 +
To get the OBS tools repository recognized by yum:
 +
echo "[obs]" > /etc/yum.repos.d/obs.repo
 +
echo "name=OpenSUSE Build System" >> /etc/yum.repos.d/obs.repo
 +
echo "baseurl=http://download.opensuse.org/repositories/openSUSE:/Tools/RHEL_5" >> /etc/yum.repos.d/obs.repo
 +
 
 +
Then:
 +
yum makecache
 +
yum install osc build qemu-svn
 +
 
 +
This technique is likely to work with RHEL derivatives like CentOS.
=== Other distributions ===
=== Other distributions ===
Line 72: Line 98:
=== All OSes ===
=== All OSes ===
 +
 +
NAME=<username>
 +
cat <<EOF >> /etc/sudoers
 +
$NAME ALL=NOPASSWD: /usr/bin/build
 +
$NAME ALL=NOPASSWD: /usr/sbin/chroot
 +
EOF
 +
Now, as a normal user, run
Now, as a normal user, run
  osc
  osc
Line 84: Line 117:
Note that if, in the future, qemu fails to work you may need to setup the associations for arm binaries by running:
Note that if, in the future, qemu fails to work you may need to setup the associations for arm binaries by running:
   qemu-binfmt-conf.sh
   qemu-binfmt-conf.sh
 +
 +
=== Handle OBS using ':' in filenames ===
 +
 +
To help bash completion etc:
 +
  export COMP_WORDBREAKS="
 +
  > "\""'><=;|&("
 +
or
 +
  COMP_WORDBREAKS=${COMP_WORDBREAKS//:/}
=== Local osc setup ===
=== Local osc setup ===
-
Create a local build path.
+
Create a local build path. E.g.,
  mkdir -p ~/maemo/Mer/obs
  mkdir -p ~/maemo/Mer/obs
-
All references below with (yourusername) should of course be replaced with the login name on your local machine.
+
In the following instructions, references to ''local-username'' should be replaced with the username used to login on your local machine while ''build-username'' (resp. ''build-password'') should be replaced with your OBS account name (resp. OBS account password).
-
You can now check some settings in your ~/.oscrc :
+
Run <code>osc</code> without arguments. It will basically ask you to enter your OBS account username and password and create a default configuration in <code>~/.oscrc</code>. Edit it to match your needs. Here are a few interesting parameters mainly found in the <code><nowiki>[general]</nowiki></code> section:
-
This is the OBS builder we're using... maybe we'll use a maemo.org instance one day?
+
* the <code>apiurl</code> parameter should be set to the following URL:  https://api.opensuse.org.
-
apiurl = <nowiki>https://api.opensuse.org</nowiki>
+
-
This specifies where all the cached binary packages are held to create a chroot build environment. Around 300MB.
+
* the <code>packagecachedir</code> parameter specifies where all the cached binary packages are held to create a chroot build environment. Around 300MB are needed. E.g.,
-
  packagecachedir = /home/(yourusername)/maemo/Mer/obs/.pkg-cache/
+
  packagecachedir = /home/''local-username''/maemo/Mer/obs/.pkg-cache/
-
This specifies the default location where a complete chroot build will be installed. This will be a minimal OS install - allow 400MB minimum.  Replace (yourusername) with your current login name
+
* the <code>build-root</code> parameter specifies the default location where a complete chroot build will be installed. This will be a minimal OS install: 400MB minimum.  E.g.,
-
  build-root = /home/(yourusername)/maemo/Mer/obs/build-%(repo)s-%(arch)s
+
  build-root = /home/''local-username''/maemo/Mer/obs/build-%(repo)s-%(arch)s
-
The next section is credentials for access control to the builder.
+
* in the section <code><nowiki>[https://api.opensuse.org]</nowiki></code>, set your credentials as follow:
-
<nowiki>[https://api.opensuse.org]</nowiki>
+
  user = ''build-username''
-
  user = <username>
+
  pass = ''build-password''
-
  pass = <password>
+
-
[[Category:Mer]]
+
=== Next Steps ===
 +
Go back to [[Mer/Build]] and then onto [[Mer/Build/Application Building|Application Building]]

Latest revision as of 11:37, 13 October 2010

Image:Mer infobox icon.png
Mer is back : Please visit http://www.merproject.org to learn more about this news.
OBS stands for OpenSuse Build Service. You can find out more about it from the OpenSuse webpage.

Contents

[edit] Installing OBS tools locally

You'll need an account with Novell

You must then visit your project list and click : "Let me build my packages!"


[edit] Debian

Assuming a Debian Testing development box locally:

To get the OBS tools repository add an entry to the sources.lists:

echo "deb http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /" > /etc/apt/sources.list.d/obs.list

Then

apt-get update
apt-get install osc build qemu

OBS uses 403 redirects which hits a bug in apt in Lenny.


You can workaround using:

 wget http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/./all/build_2009.09.23-1_all.deb
 apt-get -f install

[edit] Ubuntu

Assuming an Ubuntu9.04 development box locally:

To get the OBS tools repository add the following line:

deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/ /

to a new file called:

/etc/apt/sources.list.d/obs.list

Then

# add the key in the apt keyring
wget -q http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/Release.key -O- | apt-key add -
# refresh your package source
apt-get update
apt-get install osc build

Now edit /etc/apt/sources.list.d/obs.list and comment that line out.

Note there is a problem in Ubuntu9.04 osc as of 25 May '09... to fix it, do this as root:

 cd /usr/lib/python2.6/dist-packages/
 ln -s ../site-packages/osc* .

Suse don't have an Ubuntu qemu yet so we use the one they make for Debian (bug raised):

Add the following lines:

deb http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_5.0/ /

to a new file called:

/etc/apt/sources.list.d/debian5_qemu.list

Then

apt-get update
apt-get install qemu

now remove that file:

rm /etc/apt/sources.list.d/debian5_qemu.list 

and run

apt-get update


[edit] Troubleshooting

If you get the following error when adding one of these repos

W: GPG error: http://ftp.debian.org stable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY SOMEKEY

Then run the command

gpg --keyserver pgpkeys.mit.edu --recv-key SOMEKEY && gpg -a --export  SOMEKEY | sudo apt-key add -

replacing SOMEKEY with the complained about key

[edit] RedHat Enterprise Linux 5

Assuming a RHEL 5 box locally:

The M2Crypto package that comes w/ RHEL5 is too old. I retrieved the 0.19.1 source rpm from Fedora 10 and built it for my architecture. But you will need to update this package to at least version 0.19 before installing the OBS packages.

Install the public key for the OBS RPM repository:

rpm --import http://download.opensuse.org/repositories/openSUSE:/Tools/RHEL_5/repodata/repomd.xml.key

To get the OBS tools repository recognized by yum:

echo "[obs]" > /etc/yum.repos.d/obs.repo
echo "name=OpenSUSE Build System" >> /etc/yum.repos.d/obs.repo
echo "baseurl=http://download.opensuse.org/repositories/openSUSE:/Tools/RHEL_5" >> /etc/yum.repos.d/obs.repo

Then:

yum makecache
yum install osc build qemu-svn

This technique is likely to work with RHEL derivatives like CentOS.

[edit] Other distributions

You can find openSuse build tools for various distributions at http://download.opensuse.org/repositories/openSUSE:/Tools/

[edit] All OSes

NAME=<username>
cat <<EOF >> /etc/sudoers
$NAME ALL=NOPASSWD: /usr/bin/build
$NAME ALL=NOPASSWD: /usr/sbin/chroot
EOF

Now, as a normal user, run

osc

and enter novell.com username/passwd when prompted (note these are stored in cleartext in the config file). Note this isn't supposed to do anything (it prints out the osc help) but it stores your name/pw for future use.

Go and login.

Make sure you click the "let me build packages" button.

There is a link to 'Home Project' on the left, follow this and enter a description.

Note that if, in the future, qemu fails to work you may need to setup the associations for arm binaries by running:

 qemu-binfmt-conf.sh

[edit] Handle OBS using ':' in filenames

To help bash completion etc:

 export COMP_WORDBREAKS="
 > "\""'><=;|&("

or

 COMP_WORDBREAKS=${COMP_WORDBREAKS//:/}

[edit] Local osc setup

Create a local build path. E.g.,

mkdir -p ~/maemo/Mer/obs

In the following instructions, references to local-username should be replaced with the username used to login on your local machine while build-username (resp. build-password) should be replaced with your OBS account name (resp. OBS account password).

Run osc without arguments. It will basically ask you to enter your OBS account username and password and create a default configuration in ~/.oscrc. Edit it to match your needs. Here are a few interesting parameters mainly found in the [general] section:

  • the packagecachedir parameter specifies where all the cached binary packages are held to create a chroot build environment. Around 300MB are needed. E.g.,
packagecachedir = /home/local-username/maemo/Mer/obs/.pkg-cache/
  • the build-root parameter specifies the default location where a complete chroot build will be installed. This will be a minimal OS install: 400MB minimum. E.g.,
build-root = /home/local-username/maemo/Mer/obs/build-%(repo)s-%(arch)s
  • in the section [https://api.opensuse.org], set your credentials as follow:
user = build-username
pass = build-password

[edit] Next Steps

Go back to Mer/Build and then onto Application Building