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\) "
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
Configure VM with two virtual disks. Primary 20GB for the appliance image and /home, secondary 100GB for OBS LVM partitions.
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
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:
Make LVM partition for server:
pvcreate /dev/sdb1 vgcreate "OBS" /dev/sdb1 lvcreate -L 70G -n "server" /dev/OBS vgscan mkfs /dev/OBS/server
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.
To login to the appliance hit enter on the console. Login is root, no password.
Install a sensible editor:
zypper in nano
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.
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.
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-188.8.131.52.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.
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.)