AArch64 Bootstrap Stage3 Notes
A copy of the current state of the stage3 rootfs can be retrieved from:
$ git clone http://fedorapeople.org/groups/armv8/rootfs.git
This rootfs can be used directly as an NFS root mount point if you have access to either the ARM FAST model or the ARM Foundation model (see http://www.arm.com/fvp); details for doing so are in Using ARMv8 Bootstrap Root FS via NFS root. With some preparation, you can also turn this set of files into a rootfs disk image that can be used with the ARM Foundation model (see ARMv8 using Fedora17 Bootstrap Image and ARM Foundation Model).
In stage 3, packages are built from RPM using rpmbuild. Source RPMs for the stage3 builds are part of the rootfs itself and may be found in /SRPMS.
To work with the stage3 rootfs, follow the instructions pointed to above and boot a model and either an NFS root or a disk image. Once you have booted into the rootfs, however, continuing the stage3 build is pretty straightforward:
# cd /stage3 # ./stage3
Stage1 and Stage2 were based on fc17 packages and a decision was made to use latest fc19/fc18 packages in stage3. This was done because more and more packages are picking up newer config.{sub,guess} files which already recognize aarch64 triplets. Also, newer binutils, glibc, and gcc RPMs have aarch64 support in the upstream tarballs they are based on.
The following patches needed some patching to get them to build. Naming convention is to add .x1 to the release number used in the original source in koji.
byacc
Source: byacc-1.9.20120115-2.x1.fc18.src.rpm
Updated config.{src,guess}
attr
Source: attr-2.4.46-8.x1.fc18.src.rpm
Updated config.{src,guess}
acl
Source: acl-2.2.51-6.x1.fc18.src.rpm
Updated config.{src,guess}
xz
Source: xz-5.1.2-1alpha.x1.fc18.src.rpm
Updated config.{src,guess}
elfutils
Source: elfutils-0.155-2.x1.fc19.src.rpm
Updated config.{src,guess}
NB: this is a basic port of elfutils; may need to go back and add aarch64 specific code in the future.
lua
Source: lua-5.1.4-11.x1.fc18.src.rpm
Updated config.{src,guess}
texinfo
Source: texinfo-4.13a-19.x1.fc18.src.rpm
Updated config.{src,guess}
m4
Source: m4-1.4.16-6.x1.fc19.src.rpm
Updated config.{src,guess}
pkgconfig
Source: pkgconfig-0.27-1.x1.fc18.src.rpm
Updated config.{src,guess}
tcsh
Source: tcsh-6.18.00-3.x1.fc18.src.rpm
Updated config.{src,guess}
libtool
Source: libtool-2.4.2-11.x1.fc18.src.rpm
Updated config.{src,guess}
libpng
Source: libpng-1.5.13-1.x1.fc19.src.rpm
Updated config.{src,guess}
check
Source: check-0.9.9-1.x1.fc18.src.rpm
Updated config.{src,guess}
expat
Source: expat-2.1.0-4.x1.fc18.src.rpm
Updated config.{src,guess}
fipscheck
Source: fipscheck-1.3.1-2.x1.fc18.src.rpm
Updated config.{src,guess}
cpio
Source: cpio-2.11-15.x1.fc18.src.rpm
Updated config.{src,guess}
nspr
Source: nspr-4.9.4-1.x1.fc19.src.rpm
Updated config.{src,guess}
nss-util
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
Updated config.{src,guess}
nss-softokn
Source: nss-softokn-3.14.1-7.x1.fc19.src.rpm
Updated config.{src,guess}
nss
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
Updated config.{src,guess}
python
Source: python-2.7.3-14.x1.fc18.src.rpm
Hacked spec file to build without X (Tk) support.
rpm
Source: rpm-4.11.0-0.beta1.1.x1.fc18.src.rpm
Patched for basic aarch64 support in macro/rpmrc files. This ends up being a full-featured rpm with python and lua support. One interesting observation is that rpm defines a builtin bcond_with python macro which tests true for %{with python} if rpm itself was built with python. The rpm source specfile tests for with/without python itself so the first build of rpm with python available must pass "--with python" to rpmbuild.
stunnel
Source: stunnel-4.54-2.x1.fc19.src.rpm
Updated config.{src,guess}
krb5
Source: krb5-1.11-1.x1.fc19.src.rpm
Hacked spec file to support --without ldap and --without docs