aarch64 cross bootstrap for debian/ubuntu

Registered by Ricardo Salveti

Start working on the cross-bootstrap for aarch64 on debian/ubuntu. Goal is to use the cross build and multiarch support to generate the minimum rootfs needed to be used later as a native build environment (specially for packages that can't be easily cross-buildable, such as apache).

Goal:
 - Use the internal gcc from arm until the 4.7 based branch is available (with packages and such)
 - Start building the minimal list of packages to be used as a base platform
 - Publish the build results, bugs and fixes for external usage

Blueprint information

Status:
Complete
Approver:
Ricardo Salveti
Priority:
High
Drafter:
Ricardo Salveti
Direction:
Approved
Assignee:
Wookey
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 13.02
Started by
Ricardo Salveti
Completed by
Wookey

Related branches

Sprints

Whiteboard

[rsalveti, Sep 4, 2012] there's definitelyly more work to be covered that can be done during this cycle, but we can split it out later if needed.
[wookey,Sep 17 2012] Building anything non-trivial for armhf control case blocked by https://bugs.launchpad.net/ubuntu/+source/gcc-4.6-armel-cross/+bug/799965
[rsalveti, Sep 26, 2012] Same as for the OE specific blueprint, due external blockers and requirements, this blueprint will not be completed in time. It should be moved to 12.10, and get it done by Connect (with a proposal for a demo).
[dzin, Sep 28, 2012] Move to 12.10 for reasons cited above.
[wookey, 2012-10-19] Toolchains, tools, repo and docs available:
 http://wiki.debian.org/Arm64Port
 https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/arm64bootstrap
 http://people.debian.org/~wookey/bootstrap/ubunturepo/
[rsalveti, Oct 24, 2012] I think this blueprint is mostly done, as we finally got the cross compiler in place with all needed dependencies. Now it's a matter of building packages and bootstrapping the rootfs for real, but should be tracked by another blueprint. Wookey, please confirm.
[wookey, 2012-10-25] Yes. It transmogrifed this month somewhat from originally using internal toolchain only to including an open toolchain build, as agreed at armv8 sprint. And yes that stage is done, so is a good place to split the initial repo opening and toolchain bootstrap from further package building.
[fboudra, 2012-12-20] Some Wis delivered for 12.12. Carrie over the remaining WIs and re-target to 13.01
[wookey, 2013-02-26] Docs on image download and generation at: http://wiki.debian.org/Arm64Port#Pre-built_Rootfs

Meta:
Headline: AArch64 quantal image containing build-essential available
Acceptance: aarch64 chroots, repositories, sources, tools available for bootstrapping.

(?)

Work Items

Work items:
Create quantal test chroot containing binary aarch64 toolchain: DONE
Make equivs metapackages for binary toolchain: DONE
Test existing internal aarch64 toolchain in quantal chroot with zlib: DONE
Test existing internal aarch64 toolchain in quantal chroot with acl: DONE
Document work needed to use binary toolchain in debian chroot: DONE
Test shlibs.override functionality: DONE
Build and upload does3 dependency-checking tools: DONE
Set up dose3 dependency-checking tools: DONE
Document dose3 checking for bootstrap ordering: DONE
Create local quantal-bootrap repositry: DONE
Populate repository from clean quantal sources: DONE
Add arm64 support to linux-3.5.0 package: DONE
Add aarch64 support to binutils package: DONE
Add aarch64/arm64 support to gcc-4.7 package: DONE
Add aarch64/arm64 support to eglibc-2.16 package: DONE
Create arm64-cross-toolchain-base package: DONE
Get linux-source to build: DONE
Get eglibc-source to build: DONE
Get binutils-source to build: DONE
Get gcc-4.7 source to build: DONE
Fix eglibc stage1 build: DONE
Fix gcc stage 2 build: DONE
Build arm64-cross-toolchain-base once: DONE
Build corresponding eglibc-2.16:amd64 packages: DONE
Set up signing key for repositories: DONE
Rebuild arm64-cross-toolchain-base from sources: DONE
Expose source, and binaries in public repo: DONE
Build and upload dpkg with bootstrap support: DONE

Work items for 12.11:
Create clean base quantal chroot for repeatable builds: DONE
Determine what builds and what blockers remain: DONE
create, build, upload crossbuild-essential: DONE
Update for arm64, build, upload, bugfile dpkg-cross: DONE
fix, build, upload libnih: DONE
build, upload attr: DONE
fix, build, upload bugfile acl: DONE
build, upload hostname: DONE
fix, build, upload bugfile pcre3: DONE
build, upload zlib: DONE
build, upload libpng: DONE
build, upload make: DONE
build, upload makedev: DONE
build, upload python-defaults: DONE
build, upload libsepol: DONE
build, upload libselinux (STAGE1 to avoid swig and rub2deb): DONE
build, upload mawk: DONE
build, upload gpm: DONE
fix, build, upload, bugfile ncurses: DONE
build, upload bash: DONE
multiarch, build and upload time: DONE
fix, build, upload, bugfile module-init-tools: DONE
build, upload insserv: DONE
build, upload libpciaccess: DONE
build, upload bzip2: DONE
build, upload ifupdown: DONE
update, build, upload dpkg: DONE
build, upload netbase: DONE
Package, Multiarch, bugfile, build, upload chrpath 0.14: : DONE
build, upload slang2 (needs chrpath 0.14): DONE
multiarch equivs, upload, bugfile: DONE
create, upload stdlibc++ equivs packages: DONE
build, upload xz-utils: DONE
build, upload base-files: DONE
build, upload manpages: DONE
build, upload libxau: DONE
build, upload libxdmcp: DONE
build, upload libpthread-stubs: DONE
multiarch, build, upload, bugfile check: DONE
multiarch, build, upload, bugfile dctrl-tools: DONE
build, upload libxcb1: DONE
build, upload nano: DONE
fix, build, upload, bugfile expat: DONE
fix, build, upload bugfile libgpg-error: DONE
multiarch, build, upload, bugfile less: DONE
build, upload gzip: DONE
fix, build, upload, bugfile diffutils: DONE
fix, build, upload, bugfile tar: DONE
fix, build, upload, bugfile cpio: DONE
fix, build, upload, bugfile gmp: DONE
fix, build, upload, bugfile grep: DONE
multiarch, build, upload ed: DONE
fix, build, upload gdbm: DONE
fix, build, upload sed: DONE
multiarch, build, upload fdupes: DONE
fix, build, upload tzdata: DONE
multiarch, build, upload indent: DONE
fix, build, upload base-passwd: DONE
fix, build, upload coreutils: DONE
fix, build, upload, bugfile findutils: DONE
split package, multiarch, build, bugfile, test, upload gettext: DONE
fix, build, upload, bugfile libnfnetlink: DONE
fix, build, upload, bugfile iptables: DONE
fix, build, upload, bugfile libelf: DONE
build, upload debconf: DONE
build, upload debianutils: DONE

Work items for 12.12:
Build Debian binutils for aarch64 target: DONE
Upload binutils to debian-bootstrap repo: DONE
Add arm64 support to Debian kernel in experimental: DONE
Build linux-libc-dev,arm64: DONE
Upload linux-libc-dev: DONE
Add arm64 support to Debian gcc: DONE
Modify gcc to use multiarch paths for crossbuild: DONE
Add arm64 support to Debian eglibc in experimental: DONE

Work items for 13.01:
Update arm64 cross toolchain to raring: DONE
Make libgcc1 equivs metapackage: DONE
Fix equivs for multiarch: DONE
Document cross-toolchain build process for multiarch: DONE
File libselinux bootstrap fix: DONE
Update dimstrap script to make repeatable build: DONE
fix, bugfile util-linux: DONE
fix, build, bugfile, upload libffi: DONE
cross-build binutils: DONE
multiarchify tcl8.5: DONE
linux-atm : DONE
fuse https://bugs.launchpad.net/linaro-aarch64/+bug/1087757: BLOCKED
db: DONE
dbus: DONE
cyrus-sasl2: POSTPONED
e2fsprogs: DONE
ed: DONE
fakeroot: DONE
file: POSTPONED
flex: DONE
glib2.0: DONE
initramfs-tools: DONE
iputils: DONE
iproute: DONE
klibc https://bugs.launchpad.net/linaro-aarch64/+bug/1081162: DONE
keyutils: DONE
kmod: DONE
libbsd: DONE
libcap2: DONE
libedit: DONE
libdbi-perl: POSTPONED
libgcrypt11: DONE
libice: DONE
libidn: DONE
libjpeg-turbo: DONE
libnet-daemon-perl: POSTPONED
librelp: POSTPONED
libsm: POSTPONED
libtasn1-3: DONE
libterm-readkey-pel: TODO
libtext-iconv-perl: TODO
libtimedate-perl: DONE
libusb: DONE
libx11: POSTPONED
libxcb: POSTPONED
libxml2: POSTPONED
libxrender: POSTPONED
libxslt: POSTPONED
libxt: POSTPONED
Fix toolchain default lib paths: DONE
netcat-openbsd : DONE
netkit-ftp: DONE
net-tools: DONE
openssl: DONE
pam: DONE
patch: DONE
popt: DONE
ppl: DONE
procps: DONE
psmisc: DONE
readline6: DONE
shadow: DONE
sqlite3: DONE
sysfsutils: DONE
sysvinit: DONE
tcl8.5: DONE
tcp-wrappers: DONE
tidy: POSTPONED
ucf: DONE
udev: DONE
ustr: DONE
upstart: DONE
wget: DONE
multiarch-fix zlib: DONE

Work items for 13.02:
Crossbuild perl: DONE
Crossbuild python2.7: DONE
Merge multiarch and crossbuild perl branches: DONE
Fix eglibc2.17 crossbuild for arm64: DONE
Add profile support to dimstrap: DONE
Rebuild cross-toolchain against eglibc 217: DONE
Rebuild archive against eglibc 2.17: DONE
Crossbuild gcc: DONE
Crossbuild plymouth: DONE
Crossbuild apt: DONE
Crossbuild gnupg: DONE
Crossbuild or avoid ntp: DONE
Crossbuild or avoid openldap: DONE
Crossbuild or avoid isc-dhcp: DONE
Crossbuild or avoid krb5: DONE
Crossbuild fontconfig: DONE
Crossbuild freetds: POSTPONED
Crossbuild freetype: DONE
Crossbuild gnutls26: DONE
Crossbuild icu: POSTPONED
Crossbuild or avoid curl: DONE
Crossbuild or avoid dialog: DONE
Crossbuild or avoid nspr: DONE
Crossbuild nss : POSTPONED
Crossbuild cloog-ppl: DONE
Multiarchify check: DONE
Add target support to dpkg-buildpackage: INPROGRESS
Build Debian gcc stage1 for aarch64 target: POSTPONED
Build eglibc stage1 for aarch64 target: POSTPONED
Build Debian gcc stage2 for aarch64 target: POSTPONED
Build eglibc stage2 for aarch64 target: POSTPONED
Build Debian full gcc for aarch64 target: POSTPONED
Add cross support to gcc-defaults: POSTPONED
Upload eglibc to debian-bootstrap repo: POSTPONED
Upload gcc to debian-bootstrap repo: POSTPONED
File tzdata bugs: TODO
File perl bug: TODO
File libffi bugs: TODO
File Debian ncurses bug: TODO
File Debian patch bug: TODO
File Debian pcre3 bug: TODO
File Debian popt bug: TODO
File Debian sed bug: TODO
File Debian bc bug: DONE
File Debian libnih bug: TODO
File Debian linux-atm bug: TODO
File Debian db bug: TODO
File curl bug: TODO
File gnupg bug: TODO
Debootstrap arm64 image: DONE
Multistrap-script image generation: DONE
Document usage and generation: DONE
Send port status mail to Debian ports/devel: DONE
Make gobject-introspection cross-friendly: POSTPONED

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.