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.
RPMs built with no changes
autoconf-2.69-8.fc18.src.rpm
bzip2-1.0.6-7.fc18.src.rpm
cracklib-2.8.22-3.fc19.src.rpm
curl-7.28.1-2.fc19.src.rpm
deltarpm-3.6-0.11.20110223git.fc18.src.rpm
e2fsprogs-1.42.7-1.fc19.src.rpmukeyutils-1.5.5-3.fc18.src.rpm
libarchive-3.1.1-1.fc19.src.rpm
libcap-2.22-3.fc18.src.rpm
libgpg-error-1.10-3.fc18.src.rpm
libidn-1.26-1.fc19.src.rpm
libksba-1.3.0-2.fc19.src.rpm
libsepol-2.1.8-6.fc19.src.rpm
libssh2-1.4.3-1.fc19.src.rpm
ncompress-4.2.4-58.fc18.src.rpm
ncurses-5.9-7.20121017.fc19.src.rpm
pigz-2.2.5-1.fc18.src.rpm
pygpgme-0.3-5.fc19.src.rpm
pyliblzma-0.5.3-7.fc18.src.rpm
python-iniparse-0.4-6.fc19.src.rpm
python-pycurl-7.19.0-12.fc19.src.rpm
python-setuptools-0.6.28-3.fc18.src.rpm
sed-4.2.2-1.fc19.src.rpm
tcl-8.5.13-1.fc19.src.rpm
tcp_wrappers-7.6-70.fc18.src.rpm
unixODBC-2.3.1-2.fc18.src.rpm
yum-metadata-parser-1.1.4-7.fc18.src.rpm
zlib-1.2.7-9.fc18.src.rpm
RPMs only needing updated config.{guess,sub}
acl-2.2.51-6.x1.fc18.src.rpm
attr-2.4.46-8.x1.fc19.src.rpm
byacc-1.9.20120115-2.x1.fc18.src.rpm
check-0.9.9-1.x1.fc18.src.rpm
chrpath-0.13-9.x1.fc18.src.rpm
cpio-2.11-15.x1.fc19.src.rpm
elfutils-0.155-2.x1.fc19.src.rpm
expat-2.1.0-4.x1.fc18.src.rpm
fipscheck-1.3.1-2.x1.fc18.src.rpm
libassuan-2.0.3-4.x1.fc19.src.rpm
libcroco-0.6.8-1.x1.fc18.src.rpm
libgcrypt-1.5.0-9.x1.fc19.src.rpm
libpng-1.5.13-1.x1.fc19.src.rpm
libtool-2.4.2-11.x1.fc19.src.rpm
libunistring-0.9.3-6.x1.fc18.src.rpm
lua-5.1.4-11.x1.fc18.src.rpm
lzo-2.06-4.x1.fc18.src.rpm
m4-1.4.16-6.x1.fc19.src.rpm
pkgconfig-0.27-1.x1.fc18.src.rpm
popt-1.13-13.x1.fc18.src.rpm
pth-2.0.7-17.x1.fc18.src.rpm
stunnel-4.54-2.x1.fc19.src.rpm
texinfo-4.13a-19.x1.fc19.src.rpm
xz-5.1.2-1alpha.x1.fc18.src.rpm
binutils
Source: binutils-2.23.51.0.9-1.x1.fc19.src.rpm
- Added aarch64 to %ifarch test for 64-bit arches. (BZ#908904)
cyrus-sasl
Source: cyrus-sasl-2.1.25-2.fc19.src.rpm
- Turned on bootstrap_cyrus_sasl
- Define _unitdir since systemd rpm macros are not available
- Don't build -sql package when bootstrapping
- Touch saslauthd/saslauthd.8 to prevent rebuild when bootstrapping
gettext
Source: gettext-0.18.2-1.x1.fc19.src.rpm
- Add "%bcond_without emacs" and use it to avoid emacs for bootstrap
gnupg2
Source: gnupg2-2.0.19-7.x1.fc19.src.rpm
- Add "%bcond_with bootstrap" and use it to avoid needing pcsc-lite-libs (X11,etc)
krb5
Source: krb5-1.11-1.x1.fc19.src.rpm
- Update config.{sub,guess}
- Add "%bcond_without ldap" and use it for bootstrap
- Add "%bcond_without docs" and use it for bootstrap
libdb
Source: libdb-5.3.21-4.x1.fc19.src.rpm
- Update config.{sub,guess}
- Add "%bcond_without java" and use it for bootstrap
libuser
Source: libuser-0.58-1.x1.fc19.src.rpm
- Add "%bcond_with bootstrap" and use to avoid gtk-doc
libxml2
Source: libxml2-2.9.0-3.x1.fc19.src.rpm
- Update config.{sub,guess}
- Fix builds with --nocheck (BZ#909767)
nspr
Source: nspr-4.9.4-1.x1.fc19.src.rpm
- Update config.{sub,guess}
- Patch mozilla/nsprpub/pr/include/md/_linux.{cfg,h} with aarch64 info
- Add aarch64 to %ifarch test for 64-bit builds
nss
Source: nss-3.14.1-3.x1.fc19.src.rpm
- Add aarch64 to %ifarch test for 64-bit builds (BZ#909775)
nss-softokn
Source: nss-softokn-3.14.1-7.x1.fc18.src.rpm
- Add aarch64 to %ifarch test for 64-bit builds (BZ#909781)
nss=util
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
- Add aarch64 to %ifarch test for 64-bit builds (BZ#909782)
openldap
Source: openldap-2.4.33-3.x1.fc19.src.rpm
- Update config.{sub,guess}
- Add "%bcond_with bootstrap" and use it to define _unitdir since systemd rpm macros are not available
openssl
Source: openssl-1.0.1c-11.x1.fc19.src.rpm
- Patch Configure with "linux-aarch64" info
- Patch code to use getenv instead of secure_getenv (new to glibc2.17)
perl
Source: perl-5.16.2-251.x1.fc19.src.rpm
- Add "%bcond_without dtrace"
- Add "%bcond_with bootstrap" to avoid building docs
- Add aarch64 to multilib_64_archs
perl-Data-Dumper
Source: perl-Data-Dumper-2.139-1.x1.fc19.src.rpm
- Add "%bcond_with bootstrap" to avoid building docs