Home Wiki > openSUSE:ARM distribution howto
Sign up | Login

openSUSE:ARM distribution howto

tagline: From openSUSE

How to work on openSUSE:Factory:ARM

The openSUSE Build Service hosts a shadow project of openSUSE:Factory which builds all sources for ARM architectures.

We use two binary architectures:

  • armv6l/armv6hl which is using hardware floating point
  • armv7l/armv7hl which is using hardware floating point

Currently all packages are built on native hardware on the server. But you can still build it via qemu using osc. For that you need to build it against the qemu repository.

For example to fix the package hello run the following commands:

osc bco openSUSE:Factory hello
cd home:<username>:branches:<branched base project name>/hello

Then fix the stuff, produce a test build, and submit it to the Build Service. NOTE: the local build works only on arm hardware or on x86_64 systems (using qemu-linux-user):

osc build --alternative-project=openSUSE:Factory:ARM qemu armv7l hello.spec
osc vc         # to comment your change to the end user
osc ci         # checkin your stuff
osc sr         # submit it to the devel project which will forward it to factory


Build Flags

GCC

GCC is configured with the following options:

armv6

Version: FactoryGCC 4.8 configured with:
 ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.8 --enable-linux-futex --without-system-libunwind --with-arch=armv6zk --with-tune=arm1176jzf-s --with-float=hard --with-abi=aapcs-linux --with-fpu=vfp --disable-sjlj-exceptions --build=armv6hl-suse-linux-gnueabi

armv7

Version: FactoryGCC 4.8 configured with:
 ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.8 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a15 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi


Version: 12.3GCC 4.7 configured with:
 ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi
Version: 12.2GCC 4.7 configured with:
 ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi

RPM_OPT_FLAGS

armv6

Version: FactoryRPM_OPT_FLAGS:
 -O2 -g -march=armv6 -mfloat-abi=hard -mabi=aapcs-linux -U_FORTIFY_SOURCE

armv7

Version: FactoryRPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
Version: 12.3RPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
Version: 12.2RPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE

Main Problems

  • You must use osc, build and build-initvm from openSUSE 12.3 or the openSUSE:Tools project to get all required fixes.

To see what is not building, click on the monitor page.

To fix a package, submit it to the standard openSUSE:Factory project because openSUSE:Factory:ARM links against it and uses all sources from there.