openSUSE:PowerLE

Jump to: navigation, search
A small team started an unofficial little endian port to replace the big endian port of openSUSE for PowerPC

Current State

The current state of the port can be found in openSUSE:Factory:PowerPC project. The project is setup as an usual architecture ports project. This means it uses all sources from the openSUSE:Factory project, but does allow to replace packages temporarily to test fixes.

Communication is done via IRC: #opensuse-ppc

Biggest problems

  • gcc48 is not merged with openSUSE:Factory projects version, but using an entire own code stream.
  • installation-images still lacks packages, this one blocks creation of installation medias.
  • llvm & valgrind: Add ppc64le support or drop dependency on them in a number of packages.
  • Some code and test suites failures because they assume to do bit swapping order in big endian way on PowerPC in general.

How can I help?

Either by solving some of the problems listed above or by fixing any failing package.

Do's and Dont's

  • Do not disable entire test suites for ppc64le, this is not a fix. Disabling test suites might be acceptable during boot strap, but not for final packages. However, you may add a patch to disable a specific test in case it makes no sense on PowerLE.
  • Submit your fixes to the upstream project. Then you can pick it up for the next release.
  • Ask adrian@suse.de in case you need an import of a binary package, because it needs itself for building. For example openjdk.

Workflow for fixing packages in the OBS

Icon-warning.png
Warning: Currently it is recommended to install the latest version of osc for PowerLE work. However, everything, except local builds will work with any osc version on any architecture.


Branch the package

First of all you need to branch a package to be able to edit it. For example to branch the package bc you need to run

osc bco openSUSE:Factory bc

This will branch the package from the devel project of the openSUSE team and checkout the files locally.

Change the sources of the package

Switch to the checked out sources and apply your changes. After fixing the package you need to run

osc addremove

to add and/or remove files you've changed. You should also add a changelog entry for the end-user via

osc vc

Build the package locally

osc supports to run local builds, by downloading all needed rpms, setup a chroot and building your local sources. This is handy for debugging problems and has a faster turn-around time then building on the OBS. Please use latest osc (at least version 0.142.2) and build (at least 20131203) package from openSUSE:Tools

To run on ppc64le build, you have two options, either you use a a little endian PowerPC system directly building inside chroot:

osc build ports ppc64le

or you use a big endian PowerPC system via kvm mode

osc build ports ppc64le --vm-type=kvm

In case you have branched into a project where no ppc64le build setup has been configured, you can still do a local build for ppc64le via:

osc build ports ppc64le --alternative-project=openSUSE:Factory:PowerPC --vm-type=kvm

Check in the package to the OBS

If you have fixed the package and it's building locally, the last step is to check-in all the changes via

osc ci

Merge changes to openSUSE:Factory

Since openSUSE:Factory:PowerPC is not an official project you need to merge your changes to the official code base, openSUSE:Factory. To do so, you create a submit requests via

osc sr

an openSUSE developer will review your change and hopefully merge it to openSUSE:Factory.

Branch the package

osc branch openSUSE:Factory bc

Working on the package in PowerPC

You can checkout the sources from PowerPC via

osc co openSUSE:Factory:PowerPC bc

and then fix them, test the build locally, and check them in via

osc ci

the OBS will then trigger the build of that package and it's dependencies automatically.

Run It

To run an openSUSE ppc64le build, just run this ready-made image in QEMU. It's easy - just follow these steps on an HV KVM capable POWER7/8 machine:

  $ wget http://csgraf.de/tmp/opensuse-ppc64le.qcow2
  $ wget http://csgraf.de/tmp/vmlinux.le
  $ qemu-system-ppc64 -enable-kvm -nographic -vga none -m 1G -kernel vmlinux.le -append root=/dev/sda -drive file=opensuse-ppc64le.qcow2,if=scsi

This should drop you into a login screen.

  Login: root
  Password: linux

You can from there fetch and build packages.

  $ osc co openSUSE:Factory:PowerPC vim
  $ cd openSUSE:Factory:PowerPC/vim
  $ osc build ports ppc64le

If you're missing tools, you will eventually be able to use zypper to install packages. For the time being however, repository publishing is not enabled yet. So you need to fetch RPMs manually from OBS.

  $ osc getbinaries openSUSE:Factory:PowerPC vim ports ppc64le
  $ rpm -Uhv binaries/*.rpm

If you don't have a POWER7/8 system available, just run it inside of QEMU's emulation mode. But beware that you need to have all VSX patches applied for this to work.

  $ qemu-system-ppc64 -nographic -vga none -m 1G -kernel vmlinux.le -append root=/dev/sda -drive file=opensuse-ppc64le.qcow2,if=scsi

Resources

  • Images, like the minimal chroot tar ball can be found here.