openSUSE:OpenSUSE ARM 動作情報

移動先: 案内, 検索

openSUSE:Factory:ARM での作業方法

openSUSE Build Service には openSUSE:Factory に対する複製 (シャドウ) プロジェクトが存在していて、こちらで ARM アーキテクチャ向けの全パッケージを構築しています。

ARM アーキテクチャでは、下記の 2 種類のバイナリを構築しています:

  • armv6l/armv6hl (ハードウエア浮動小数点を使用するバイナリ)
  • armv7l/armv7hl (ハードウエア浮動小数点を使用するバイナリ)

現時点では、すべてのパッケージをサーバ内のネイティブハードウエア上で構築しています。もちろん osc 経由で qemu を利用することで構築することもできます。 qemu を利用する場合は、 qemu のリポジトリに対してパッケージを構築する必要があります。

パッケージ hello に対する修正を行ないたい場合は、下記のようにコマンドを実行してください:

osc bco openSUSE:Factory hello
cd home:<ユーザ名>:branches:<ブランチしたプロジェクトの名前>/hello

その後必要な箇所を修正してテストビルドを行ない、 Build Service にパッケージを送信してください。なお、ローカルでの構築は、 ARM ハードウエアもしくは x86_64 システム (qemu-linux-user を使用) でのみ実施することができます:

osc build --alternative-project=openSUSE:Factory:ARM qemu armv7l hello.spec
osc vc         # ユーザ向けの変更履歴の編集
osc ci         # チェックイン
osc sr         # devel プロジェクトへの送信 (これが完了すると、 Factory にも送信されるようになります)

ビルドフラグ

GCC

GCC は下記のオプションで構築されています:

armv6

バージョン: FactoryGCC 4.8 設定オプション:
 ../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

バージョン: FactoryGCC 4.8 設定オプション:
 ../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


バージョン: 12.3GCC 4.7 設定オプション:
 ../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
バージョン: 12.2GCC 4.7 設定オプション:
 ../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

バージョン: FactoryRPM_OPT_FLAGS:
 -O2 -g -march=armv6 -mfloat-abi=hard -mabi=aapcs-linux -U_FORTIFY_SOURCE

armv7

バージョン: FactoryRPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
バージョン: 12.3RPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
バージョン: 12.2RPM_OPT_FLAGS:
 -fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE

主な問題

  • openSUSE 12.3 もしくは openSUSE:Tools プロジェクトが提供する osc, build, build-initvm を使用しなければならない問題があります。

何が構築できていないのかを調べたい場合は、 モニタページ をご覧ください。

パッケージを修正したい場合は、標準プロジェクトである openSUSE:Factory 宛にお送りください。 openSUSE:Factory:ARM は openSUSE:Factory にリンクしていて、そこから提供されるコードを利用しているためです。