Architectures/ARM/AArch64/Stage3Notes

From FedoraProject

< Architectures | ARM | AArch64(Difference between revisions)
Jump to: navigation, search
m
(systemd)
 
(10 intermediate revisions by one user not shown)
Line 20: Line 20:
 
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.
 
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 ===
+
=== RPMs built with no changes ===
Source: byacc-1.9.20120115-2.x1.fc18.src.rpm
+
+
Updated config.{src,guess}
+
  
=== attr ===
+
autoconf-2.69-8.fc18.src.rpm
Source: attr-2.4.46-8.x1.fc18.src.rpm  
+
+
Updated config.{src,guess}
+
  
=== acl ===
+
bzip2-1.0.6-7.fc18.src.rpm
Source: acl-2.2.51-6.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
cracklib-2.8.22-3.fc19.src.rpm
  
=== xz ===
+
curl-7.28.1-2.fc19.src.rpm
Source: xz-5.1.2-1alpha.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
deltarpm-3.6-0.11.20110223git.fc18.src.rpm
  
=== elfutils ===
+
e2fsprogs-1.42.7-1.fc19.src.rpmukeyutils-1.5.5-3.fc18.src.rpm
Source: elfutils-0.155-2.x1.fc19.src.rpm
+
  
Updated config.{src,guess}
+
libarchive-3.1.1-1.fc19.src.rpm
  
<b>NB</b>: this is a basic port of elfutils; may need to go back and add aarch64 specific code in the future.
+
libcap-2.22-3.fc18.src.rpm
  
=== lua ===
+
libgpg-error-1.10-3.fc18.src.rpm
Source: lua-5.1.4-11.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
libidn-1.26-1.fc19.src.rpm
  
=== texinfo ===
+
libksba-1.3.0-2.fc19.src.rpm
Source: texinfo-4.13a-19.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
libsepol-2.1.8-6.fc19.src.rpm
  
=== m4 ===
+
libssh2-1.4.3-1.fc19.src.rpm
Source: m4-1.4.16-6.x1.fc19.src.rpm
+
  
Updated config.{src,guess}
+
ncompress-4.2.4-58.fc18.src.rpm
  
=== pkgconfig ===
+
ncurses-5.9-7.20121017.fc19.src.rpm
Source: pkgconfig-0.27-1.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
pigz-2.2.5-1.fc18.src.rpm
  
=== tcsh ===
+
pygpgme-0.3-5.fc19.src.rpm
Source: tcsh-6.18.00-3.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
pyliblzma-0.5.3-7.fc18.src.rpm
  
=== libtool ===
+
python-iniparse-0.4-6.fc19.src.rpm
Source: libtool-2.4.2-11.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
python-pycurl-7.19.0-12.fc19.src.rpm
  
=== libpng ===
+
python-setuptools-0.6.28-3.fc18.src.rpm
Source: libpng-1.5.13-1.x1.fc19.src.rpm
+
  
Updated config.{src,guess}
+
sed-4.2.2-1.fc19.src.rpm
  
=== check ===
+
tcl-8.5.13-1.fc19.src.rpm
Source: check-0.9.9-1.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
tcp_wrappers-7.6-70.fc18.src.rpm
  
=== expat ===
+
unixODBC-2.3.1-2.fc18.src.rpm
Source: expat-2.1.0-4.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
yum-metadata-parser-1.1.4-7.fc18.src.rpm
  
=== fipscheck ===
+
zlib-1.2.7-9.fc18.src.rpm
Source: fipscheck-1.3.1-2.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
=== RPMs only needing updated config.{guess,sub} ===
  
=== cpio ===
+
acl-2.2.51-6.x1.fc18.src.rpm
Source: cpio-2.11-15.x1.fc18.src.rpm
+
  
Updated config.{src,guess}
+
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 ===
 
=== nspr ===
 
Source: nspr-4.9.4-1.x1.fc19.src.rpm
 
Source: nspr-4.9.4-1.x1.fc19.src.rpm
  
Updated config.{src,guess}
+
* 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-util ===
+
=== nss ===
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
+
Source: nss-3.14.1-3.x1.fc19.src.rpm
  
Updated config.{src,guess}
+
* Add aarch64 to %ifarch test for 64-bit builds (BZ#909775)
  
 
=== nss-softokn ===
 
=== nss-softokn ===
Source: nss-softokn-3.14.1-7.x1.fc19.src.rpm
+
Source: nss-softokn-3.14.1-7.x1.fc18.src.rpm
  
Updated config.{src,guess}
+
* Add aarch64 to %ifarch test for 64-bit builds (BZ#909781)
  
=== nss ===
+
=== nss=util ===
 
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
 
Source: nss-util-3.14.1-2.x1.fc19.src.rpm
  
Updated config.{src,guess}
+
* 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
 +
 
 +
=== perl-HTML-Parser ===
 +
Source: perl-HTML-Parser-3.69-9.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
 
 +
=== perl-Net-LibIDN ===
 +
Source: perl-Net-LibIDN-0.12-13.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
 
 +
=== perl-PathTools ===
 +
Source: perl-PathTools-3.39.01-1.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
 
 +
=== perl-XML-Parser ===
 +
Source: perl-XML-Parser-2.41-8.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
 
 +
=== perl-threads ===
 +
Source: perl-threads-1.86-241.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
 
 +
=== perl-threads-shared ===
 +
Source: perl-threads-shared-1.43-1.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
  
 
=== python ===
 
=== python ===
Source: python-2.7.3-14.x1.fc18.src.rpm
+
Source: python-2.7.3-14.x1.fc19.src.rpm
 +
 
 +
* Add "%bcond_with bootstrap" to avoid building docs
 +
* Add aarch64 to %ifarch test for 64-bit builds (BZ#909783)
 +
 
 +
=== redhat-rpm-config ===
 +
Source: redhat-rpm-config-9.1.0-38.x1.fc19.src.rpm
  
Hacked spec file to build without X (Tk) support.
+
* Add optflags for aarch64 (BZ#909788)
  
 
=== rpm ===
 
=== rpm ===
Source: rpm-4.11.0-0.beta1.1.x1.fc18.src.rpm
+
Source: rpm-4.11.0-0.beta1.1.x1.fc19.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.
+
* Add aarch64 bits to macro/rpmrc/etc
 +
* Add "%bcond_with python" (actually needed by stage2 to build without python)
  
=== stunnel ===
+
=== sharutils ===
Source: stunnel-4.54-2.x1.fc19.src.rpm
+
Source: sharutils-4.13.3-2.x1.fc19.src.rpm
  
Updated config.{src,guess}
+
* Fix builds with --nocheck (BZ#908967)
  
=== krb5 ===
+
=== tcsh ===
Source: krb5-1.11-1.x1.fc19.src.rpm
+
Source: tcsh-6.18.00-3.x1.fc18.src.rpm
 +
 
 +
* Update config.{sub,guess}
 +
* Patch configure.in to remove AC_CONFIG_MACRO_DIR which caused problems with fc19 autotools.
 +
* Added gethost.c patch to fix build error (from upstream 6.18.01 tarball)
 +
 
 +
=== kernel ===
 +
Source: kernel-3.8.0-0.rc3.git0.1.fc19.aarch64.src.rpm
 +
 
 +
* Patched specfile to build kernel-headers only
 +
 
 +
=== glibc ===
 +
Source: glibc-2.17-1.x1.fc19.src.rpm
 +
 
 +
Updating to glibc presents some interesting challenges. The need to update at all is due to the fact that glibc2.17 and gcc2.8 are the initial upstream releases with AArch64 support. We started with glibc2.16 in stage1 because 2.17 was not yet released. Simply replacing glibc-2.16 libraries with glibc-2.17 libraries is not possible because all binaries in the stage3 rootfs were built against 2.16 and upstream glibc versioning for AArch64 starts with 2.17. this leaves at least two choices:
 +
 
 +
* Start all over and rebuild stage1-stage3 using glibc-2.17
 +
* Disable or work around the glibc versioning problem.
 +
 
 +
Starting over would take at least several weeks to rebuild all of the packages. To avoid that delay, we are currently experimenting with a small program to patch the ELF files in the rootfs so that they are versions for GLIBC_2.17 rather than GLIBC_2.16. This turned out to be fairly easy to do but it does not fix binary RPMs, so they must be rebuilt in any case if they are needed in the mock chroot.
 +
 
 +
The patched binary approach ended up with a number of other compat issues due to lack of any backward compatibility in the upstream 2.17 aarch port. There is no backward compatibility because there were no aarch64 glibcs before 2.17. This required some rebuilding of already built packages to get around the issues.
 +
 
 +
=== rpm ===
 +
Source: rpm-4.11.0.1-1.x2.fc19.src.rpm
 +
 
 +
Upstream accepted the aarch64 rpm patch with a change of CANONCOLOR from 2 to 3. This leaves the door open for mixing 32-bit and 64-bit packages.
 +
 
 +
=== gcc ===
 +
Source: gcc-4.8.0-0.12.x1.fc19.src.rpm
 +
 
 +
The gcc build worked with few changes to spec file. There were some changes to deal with lib vs lib64. This was handled in the spec file but a patch was provided by Jakub (https://bugzilla.redhat.com/show_bug.cgi?id=917749) to address this. A new build of gcc using this patch is being done in parallel with other work.
 +
 
 +
=== systemd ===
 +
Source: systemd-197-2.x1.fc19.src.rpm
  
Hacked spec file to support --without ldap and --without docs
+
This is a fairly complete build of systemd. Left out are gtkdocs, kmod, cryptsetup, micro-http, and file capability support for systemd-detect-virt. We are using an NFS root for bootstrap which means extended file attributes are not supported. This systemd build is now installed in the rootfs but /sbin/init is still linked to busybox. The systemd boot gets to a login prompt (with a few errors along the way) but the login does not work.

Latest revision as of 16:29, 18 March 2013

Contents

[edit] 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.

[edit] 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

[edit] 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

[edit] binutils

Source: binutils-2.23.51.0.9-1.x1.fc19.src.rpm

  • Added aarch64 to %ifarch test for 64-bit arches. (BZ#908904)

[edit] 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

[edit] gettext

Source: gettext-0.18.2-1.x1.fc19.src.rpm

  • Add "%bcond_without emacs" and use it to avoid emacs for bootstrap

[edit] 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)

[edit] 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

[edit] libdb

Source: libdb-5.3.21-4.x1.fc19.src.rpm

  • Update config.{sub,guess}
  • Add "%bcond_without java" and use it for bootstrap

[edit] libuser

Source: libuser-0.58-1.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" and use to avoid gtk-doc

[edit] libxml2

Source: libxml2-2.9.0-3.x1.fc19.src.rpm

  • Update config.{sub,guess}
  • Fix builds with --nocheck (BZ#909767)

[edit] 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

[edit] nss

Source: nss-3.14.1-3.x1.fc19.src.rpm

  • Add aarch64 to %ifarch test for 64-bit builds (BZ#909775)

[edit] nss-softokn

Source: nss-softokn-3.14.1-7.x1.fc18.src.rpm

  • Add aarch64 to %ifarch test for 64-bit builds (BZ#909781)

[edit] nss=util

Source: nss-util-3.14.1-2.x1.fc19.src.rpm

  • Add aarch64 to %ifarch test for 64-bit builds (BZ#909782)

[edit] 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

[edit] 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)

[edit] 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

[edit] perl-Data-Dumper

Source: perl-Data-Dumper-2.139-1.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-HTML-Parser

Source: perl-HTML-Parser-3.69-9.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-Net-LibIDN

Source: perl-Net-LibIDN-0.12-13.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-PathTools

Source: perl-PathTools-3.39.01-1.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-XML-Parser

Source: perl-XML-Parser-2.41-8.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-threads

Source: perl-threads-1.86-241.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] perl-threads-shared

Source: perl-threads-shared-1.43-1.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs

[edit] python

Source: python-2.7.3-14.x1.fc19.src.rpm

  • Add "%bcond_with bootstrap" to avoid building docs
  • Add aarch64 to %ifarch test for 64-bit builds (BZ#909783)

[edit] redhat-rpm-config

Source: redhat-rpm-config-9.1.0-38.x1.fc19.src.rpm

  • Add optflags for aarch64 (BZ#909788)

[edit] rpm

Source: rpm-4.11.0-0.beta1.1.x1.fc19.src.rpm

  • Add aarch64 bits to macro/rpmrc/etc
  • Add "%bcond_with python" (actually needed by stage2 to build without python)

[edit] sharutils

Source: sharutils-4.13.3-2.x1.fc19.src.rpm

  • Fix builds with --nocheck (BZ#908967)

[edit] tcsh

Source: tcsh-6.18.00-3.x1.fc18.src.rpm

  • Update config.{sub,guess}
  • Patch configure.in to remove AC_CONFIG_MACRO_DIR which caused problems with fc19 autotools.
  • Added gethost.c patch to fix build error (from upstream 6.18.01 tarball)

[edit] kernel

Source: kernel-3.8.0-0.rc3.git0.1.fc19.aarch64.src.rpm

  • Patched specfile to build kernel-headers only

[edit] glibc

Source: glibc-2.17-1.x1.fc19.src.rpm

Updating to glibc presents some interesting challenges. The need to update at all is due to the fact that glibc2.17 and gcc2.8 are the initial upstream releases with AArch64 support. We started with glibc2.16 in stage1 because 2.17 was not yet released. Simply replacing glibc-2.16 libraries with glibc-2.17 libraries is not possible because all binaries in the stage3 rootfs were built against 2.16 and upstream glibc versioning for AArch64 starts with 2.17. this leaves at least two choices:

  • Start all over and rebuild stage1-stage3 using glibc-2.17
  • Disable or work around the glibc versioning problem.

Starting over would take at least several weeks to rebuild all of the packages. To avoid that delay, we are currently experimenting with a small program to patch the ELF files in the rootfs so that they are versions for GLIBC_2.17 rather than GLIBC_2.16. This turned out to be fairly easy to do but it does not fix binary RPMs, so they must be rebuilt in any case if they are needed in the mock chroot.

The patched binary approach ended up with a number of other compat issues due to lack of any backward compatibility in the upstream 2.17 aarch port. There is no backward compatibility because there were no aarch64 glibcs before 2.17. This required some rebuilding of already built packages to get around the issues.

[edit] rpm

Source: rpm-4.11.0.1-1.x2.fc19.src.rpm

Upstream accepted the aarch64 rpm patch with a change of CANONCOLOR from 2 to 3. This leaves the door open for mixing 32-bit and 64-bit packages.

[edit] gcc

Source: gcc-4.8.0-0.12.x1.fc19.src.rpm

The gcc build worked with few changes to spec file. There were some changes to deal with lib vs lib64. This was handled in the spec file but a patch was provided by Jakub (https://bugzilla.redhat.com/show_bug.cgi?id=917749) to address this. A new build of gcc using this patch is being done in parallel with other work.

[edit] systemd

Source: systemd-197-2.x1.fc19.src.rpm

This is a fairly complete build of systemd. Left out are gtkdocs, kmod, cryptsetup, micro-http, and file capability support for systemd-detect-virt. We are using an NFS root for bootstrap which means extended file attributes are not supported. This systemd build is now installed in the rootfs but /sbin/init is still linked to busybox. The systemd boot gets to a login prompt (with a few errors along the way) but the login does not work.