Automtically build the Autotools to bootstrap RTEMS.

This changes adds support to build the autotools if the host installed
version is not a suitable version. Autoconf and automake have hard coded
references to the install prefix and host tools and this makes it impossible
to relocate, that is use in any path other than the install prefix. To
bootstrap automake you need to first build a suitable autoconf and with that
you can built automake for the install prefix. The other complication is
not referencing the install prefix in the path when building in the RSB.
Having the install prefix in the path can result in strange issues appearing
such as gcc using a new assembler feature not present in an older assember
installed under the install prefix.

The process is to build the autotools using an install prefix to an
internal path inside the RSB temporary path and to use that autoconf
to build the version for the install prefix. The internal install
prefix version is also used to bootstrap RTEMS.
This commit is contained in:
Chris Johns
2013-07-16 10:02:41 +10:00
parent c2effc143b
commit ebf8a1f0f8
33 changed files with 242 additions and 106 deletions

View File

@@ -31,6 +31,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -0,0 +1,23 @@
#
# Tools Set for RTEMS 4.11 Internal Autotools Stable
#
%define release 1
%define rtems_arch none
#
# The RTEMS 4.11 base defines.
#
%include rtems-4.11-base.bset
#
# The autotools package.
#
package: rtems-%{rtems_version}-autotools-%{release}
#
# Tools configuration.
#
tools/rtems-autoconf-2.69-1
tools/rtems-automake-1.12.6-1

View File

@@ -0,0 +1,13 @@
#
# Tools Set for RTEMS 4.11 Internal Autotools Stable
#
# Do not use via the command line.
#
%define _internal_autotools yes
%define _disable_collecting yes
%define _disable_packaging yes
%define _disable_reporting yes
%define _disable_installing yes
%include 4.11/rtems-autotools-base.bset

View File

@@ -1,23 +1,22 @@
#
# Tools Set for RTEMS 4.11 Autotools Stable
#
%define release 1
%define rtems_arch none
# Autoconf and automake are not relocatable and cannot be cross-compiled.
# RTEMS uses autoconf and automake and building RTEMS in the RSB requires
# bootstrapping and this requires a current autoconf and automake. The RSB
# provides to support by:
#
# 1. Building and installing autoconf and automake with a prefix to a
# temporary internal path.
# 2. Using the temporary internal build, build and install another copy
# using the final prefix location.
#
#
# The RTEMS 4.11 base defines.
# A magic internal path that would break if changes in the defaults.mc
# macro file are made.
#
%include rtems-4.11-base.bset
%define _internal_autotools_path %{_tmppath}/sb-%{_uid}/${SB_PREFIX_CLEAN}
#
# The autotoolspackage.
#
package: rtems-%{rtems_version}-autotools-%{release}
#
# Tools configuration.
#
devel/autoconf-2.69-1
devel/automake-1.12.6-1
4.11/rtems-autotools-internal
4.11/rtems-autotools-base

View File

@@ -38,6 +38,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -24,6 +24,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -25,6 +25,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.5.3-newlib-2.0.0-1

View File

@@ -34,6 +34,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -21,6 +21,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -25,6 +25,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -26,6 +26,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
devel/dtc-1.2.0
tools/rtems-binutils-2.23.2-1

View File

@@ -22,6 +22,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-nios2-binutils-2.20-1
tools/rtems-nios2-gcc-4.1-newlib-1.19.0-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -20,6 +20,7 @@
#
# Tools configuration.
#
4.11/rtems-autotools
devel/expat-2.1.0-1
tools/rtems-binutils-2.23.2-1
tools/rtems-gcc-4.8.1-newlib-cvs-1

View File

@@ -0,0 +1,19 @@
#
# Autoconf 2.69.
#
%include %{_configdir}/checks.cfg
%include %{_configdir}/base.cfg
%include %{_configdir}/versions.cfg
%define rtems_autoconf_version 2.69
#
# Check the version of autoconf in the path.
#
%if %{__autoconf_ver} < %{rtems_autoconf_version}
#
# Tools configuration.
#
%include %{_configdir}/devel/autoconf-2.69-1.cfg
%endif

View File

@@ -0,0 +1,19 @@
#
# Automake 1.12.6
#
%include %{_configdir}/checks.cfg
%include %{_configdir}/base.cfg
%include %{_configdir}/versions.cfg
%define rtems_automake_version 1.12.6
#
# Check the version of automake in the path.
#
%if %{__automake_ver} < %{rtems_automake_version}
#
# Tools configuration.
#
%include %{_configdir}/devel/automake-1.12.6-1.cfg
%endif

View File

@@ -74,6 +74,9 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
%{?patch8:%patch8 %{?patch8_opts:%{patch8_opts}}%{!?patch8_opts:-p1}}
%{?patch9:%patch9 %{?patch9_opts:%{patch9_opts}}%{!?patch9_opts:-p1}}
%if %{rtems_bootstrap}
%if %{defined _internal_autotools_path}
export PATH="%{_internal_autotools_path}/bin:${PATH}"
%endif
./bootstrap -c
%{_sbdir}/sb-bootstrap --preinstall
%{_sbdir}/sb-bootstrap

View File

@@ -9,12 +9,19 @@
%define rtems_kernel_version 4.11
#
# Check the version of autoconf.
# Check the version of autoconf. Check autoreconf as it is used.
#
%if %{__autoconf_ver} <= 2.68
%error Autoconf version 2.69 or higher is needed.
%if %{__autoreconf_ver} <= 2.68
%if %{__autoreconf_bindir_ver} <= 2.68
%error Autoconf (autoreconf) version 2.69 or higher is needed.
%endif
%endif
#
# A magic internal path that would break if changes in the defaults.mc
# macro file are made.
#
%define _internal_autotools_path %{_tmppath}/sb-%{_uid}/${SB_PREFIX_CLEAN}
#
# Pull the latest changes from git each build. Override if this is not what you
# want.