Meego Wiki
From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Notes on Setting Up Private OBS (WIP))
(TODO)
Line 73: Line 73:
Log in to the OBS web interface running on port 80. Login is Admin, password is opensuse. Click "Setup OBS" to connect your OBS to the openSUSE public build service.
Log in to the OBS web interface running on port 80. Login is Admin, password is opensuse. Click "Setup OBS" to connect your OBS to the openSUSE public build service.
-
== TODO ==
+
== Bootstrap MeeGo Toolchain ==
-
* Compile MeeGo's gcc and binutils against openSUSE
+
Create a new project under your home: project called "bootstrap" and check it out using osc:
-
* Compile MeeGo's libc, gcc, binutils with the toolchain made in the previous step
+
 
-
* Compile all the rest of MeeGo against the packages created in the previous step
+
osc -A http://localhost:81 cs home:Admin:bootstrap
 +
cd home\:Admin\:bootstrap/
 +
 
 +
Import toolchain source rpms:
 +
 
 +
osc importsrcpkg -c ../binutils-2.20.51.0.2-17.2.src.rpm
 +
osc importsrcpkg -c ../gcc-4.4.2-12.8.src.rpm
 +
osc importsrcpkg -c ../glibc-2.11.90-18.7.src.rpm
 +
 
 +
Back on the OBS webpage, add Fedora_13 to "build repositories".
 +
 
 +
The OBS will think for a while, and then decide to compile binutils and gcc, and then glibc (hopefully) using the binutils and gcc it just built. But note that the gcc and binutils are still linked against the Fedora_13 glibc, so we rebuild them in the next step.
 +
 
 +
== MeeGo Proper ==
 +
 
 +
Create a new Project at home:Admin:MeeGo and check it out. Load in *all* the MeeGo source rpms. Tell it to use the home:Admin:bootstrap project as build repository. Now let the OBS do it's stuff. A long while later everything should have built. (In theory.)

Revision as of 04:54, 17 August 2010

Contents

Finding SSSE3 Instructions in a Binary

I came up with this using http://en.wikipedia.org/wiki/SSSE3#New_Instructions

objdump --disassemble-all <binary> | grep " \(psign[bwd]\|pabs[bwd]\|palignr\|pshufb\|pmulhrsw\|pmaddubsw\|phsub[wd]\|phsubsw\|phadd[wd]\|phaddsw\) "

Emulating Missing Instructions in the Kernel

arjan: you can emulate instructions your cpu does not have quite well
ali1234: i didn't know there was such a patch... link please?
arjan: either via a kernel hack or an ld preload library
arjan: http://lkml.indiana.edu/hypermail/linux/kernel/0206.3/0631.html  <-- old kernel hack that google found for me
arjan: doing it as ld preload isn't too hard .. SIGILL is sent when an instruction is executed that the cpu does not grok
ali1234: ah so you don't know that it exists specifically for ssse3?
arjan: for ssse3? not that I know of
arjan: but you could add the ssse3 instructions if you want
arjan: shouldn't be too hard

Notes on Setting Up Private OBS (WIP)

Install OBS Appliance inside a VM

VM Config

Configure VM with two virtual disks. Primary 20GB for the appliance image and /home, secondary 100GB for OBS LVM partitions.

Install Appliance

Boot it with your favourite Linux live CD and write the appliance image to the first virtual disk:

wget http://download.opensuse.org/repositories/openSUSE:/Tools/images/obs-server.x86_64-2.0.5-Build1.8.raw.bz2
bunzip2 -c obs-server.x86_64-2.0.5-Build1.8.raw.bz2 > /dev/sda

Configure LVM

The Appliance system will search for OBS volumes, and if found it will use them for server storage and cache. If you create volumes for the workers, it will start worker processes too, all on the same system.

Use fdisk to make one big partition on /dev/sdb, type 8e:

fdisk /dev/sdb

Make LVM partition for server:

pvcreate /dev/sdb1
vgcreate "OBS" /dev/sdb1
lvcreate -L 70G -n "server" /dev/OBS
vgscan
mkfs /dev/OBS/server

For cache:

lvcreate -L 20G -n "cache" /dev/OBS
vgscan
mkfs /dev/OBS/cache

For two workers:

lvcreate -L 4G -n "worker_root_1" /dev/OBS
lvcreate -L 512M -n "worker_swap_1" /dev/OBS
lvcreate -L 4G -n "worker_root_2" /dev/OBS
lvcreate -L 512M -n "worker_swap_2" /dev/OBS
vgscan
mkfs /dev/OBS/worker_root_1
mkfs /dev/OBS/worker_root_2

Now eject the virtual CD device and reboot the VM into the appliance system.

Customize the Appliance System

To login to the appliance hit enter on the console. Login is root, no password.

Install a sensible editor:

zypper in nano

Enable sshd:

chkconfig --add sshd

Tip: Don't bother trying to set the server to use a static IP address, it won't work. You have to set a static lease in your DHCP server instead.

Set Up OBS

In order to build anything in OBS you need packages to build against. In theory you would be able to use the MeeGo repositories when they go public. However, you won't be able to use them unless your OBS server is Core 2 or better. In any case, since we need to bootstrap everything from scratch, it does not matter what we use for the initial builds. The simplest way to get started is to link to the openSUSE build service.

Log in to the OBS web interface running on port 80. Login is Admin, password is opensuse. Click "Setup OBS" to connect your OBS to the openSUSE public build service.

Bootstrap MeeGo Toolchain

Create a new project under your home: project called "bootstrap" and check it out using osc:

osc -A http://localhost:81 cs home:Admin:bootstrap
cd home\:Admin\:bootstrap/

Import toolchain source rpms:

osc importsrcpkg -c ../binutils-2.20.51.0.2-17.2.src.rpm
osc importsrcpkg -c ../gcc-4.4.2-12.8.src.rpm
osc importsrcpkg -c ../glibc-2.11.90-18.7.src.rpm

Back on the OBS webpage, add Fedora_13 to "build repositories".

The OBS will think for a while, and then decide to compile binutils and gcc, and then glibc (hopefully) using the binutils and gcc it just built. But note that the gcc and binutils are still linked against the Fedora_13 glibc, so we rebuild them in the next step.

MeeGo Proper

Create a new Project at home:Admin:MeeGo and check it out. Load in *all* the MeeGo source rpms. Tell it to use the home:Admin:bootstrap project as build repository. Now let the OBS do it's stuff. A long while later everything should have built. (In theory.)

Personal tools