openSUSE:PowerLE
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.
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
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
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
to add and/or remove files you've changed. You should also add a changelog entry for the end-user via
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:
or you use a big endian PowerPC system via kvm mode
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:
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
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
an openSUSE developer will review your change and hopefully merge it to openSUSE:Factory.
Branch the package
Working on the package in PowerPC
You can checkout the sources from PowerPC via
and then fix them, test the build locally, and check them in via
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.