initial PowerPC support

As it happens, adding another architecture required almost no changes;
native 32-bit ppc build took only ARCH and a repo, qemu-ppc one still
has problems (/.host/entry hangs while unpacking setup for fakedata).

Proof of concept on a QS22:

  $ make ve/bare.tar.gz
  ** ARCH: ppc
  /bin/sh: rpmvercmp: command not found
  21:41:01 cleaning up
  21:41:03 initializing BUILDDIR: build/
  21:41:03 preparing distro config
  21:41:05 starting image build (coffee time)
  21:42:48 done (1:42)
  ** image: $TMP/out/bare-20120716-ppc.tar.gz [21M]
This commit is contained in:
Michael Shigorin 2012-07-16 21:10:54 +03:00
parent 18f1a6360a
commit 1ee997e832
4 changed files with 15 additions and 7 deletions

View File

@ -10,7 +10,7 @@ ifndef ARCHES
ifdef ARCH ifdef ARCH
ARCHES := $(ARCH) ARCHES := $(ARCH)
else else
ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/') ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/; s/ppc.*/ppc/')
endif endif
endif endif
export ARCHES export ARCHES

View File

@ -10,7 +10,7 @@
- ARCH - ARCH
+ задаёт целевую архитектуру образов + задаёт целевую архитектуру образов
+ значение: пусто (по умолчанию авто), i586, x86_64 или arm + значение: пусто (по умолчанию авто), i586, x86_64, arm, ppc
+ см. ../lib/build.mk + см. ../lib/build.mk
- ARCHES - ARCHES

View File

@ -3,16 +3,24 @@
apt-get install qemu-user-binfmt_misc apt-get install qemu-user-binfmt_misc
modprobe binfmt_misc modprobe binfmt_misc
echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/.host/qemu-arm:" > /proc/sys/fs/binfmt_misc/register
echo 32768 > /proc/sys/vm/mmap_min_addr echo 32768 > /proc/sys/vm/mmap_min_addr
и сконфигурируйте его применение для требуемых платформ:
echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/.host/qemu-arm:" > /proc/sys/fs/binfmt_misc/register
echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/.host/qemu-ppc:' > /proc/sys/fs/binfmt_misc/register
Если файл /proc/sys/fs/binfmt_misc/register не существует, Если файл /proc/sys/fs/binfmt_misc/register не существует,
потребуется установить и загрузить иное ядро (например, std-def). потребуется установить и загрузить иное ядро (например, std-def).
Также нужен sources.list с указанием arm-репозитория Также нужен sources.list с указанием соответствующего репозитория
и ссылающийся на него apt.conf (см. apt.conf.sample); и ссылающийся на него apt.conf (см. apt.conf.sample); например:
например:
--- sources.list.sisyphus.arm --- sources.list.sisyphus.arm
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus arm classic rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus arm classic
--- ---
--- sources.list.4.1.ppc
rpm http://ftp.altlinux.org/pub/people/wart/repos/lioka/powerpc ppc classic
rpm http://ftp.altlinux.org/pub/people/wart/repos/lioka/powerpc noarch classic
---

View File

@ -2,7 +2,7 @@
PKGDIR := $(GLOBAL_BUILDDIR)/pkg PKGDIR := $(GLOBAL_BUILDDIR)/pkg
# duplicated from metaprofile makefiles for the sake of "local" builds # duplicated from metaprofile makefiles for the sake of "local" builds
ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/') ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/; s/ppc.*/ppc/')
DATE ?= $(shell date +%Y%m%d) DATE ?= $(shell date +%Y%m%d)
# prefix pkglist name with its directory to form a path (relative/absolute) # prefix pkglist name with its directory to form a path (relative/absolute)