summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rtems/config/4.11/rtems-arm.bset1
-rw-r--r--rtems/config/4.11/rtems-autotools-base.bset23
-rw-r--r--rtems/config/4.11/rtems-autotools-internal.bset13
-rw-r--r--rtems/config/4.11/rtems-autotools.bset27
-rw-r--r--rtems/config/4.11/rtems-avr.bset1
-rw-r--r--rtems/config/4.11/rtems-bfin.bset1
-rw-r--r--rtems/config/4.11/rtems-h8300.bset1
-rw-r--r--rtems/config/4.11/rtems-i386.bset1
-rw-r--r--rtems/config/4.11/rtems-lm32.bset1
-rw-r--r--rtems/config/4.11/rtems-m32c.bset1
-rw-r--r--rtems/config/4.11/rtems-m32r.bset1
-rw-r--r--rtems/config/4.11/rtems-m68k.bset1
-rw-r--r--rtems/config/4.11/rtems-microblaze.bset1
-rw-r--r--rtems/config/4.11/rtems-mips.bset1
-rw-r--r--rtems/config/4.11/rtems-moxie.bset1
-rw-r--r--rtems/config/4.11/rtems-nios2.bset1
-rw-r--r--rtems/config/4.11/rtems-powerpc.bset1
-rw-r--r--rtems/config/4.11/rtems-sh.bset1
-rw-r--r--rtems/config/4.11/rtems-sparc.bset1
-rw-r--r--rtems/config/4.11/rtems-sparc64.bset1
-rw-r--r--rtems/config/4.11/rtems-v850.bset1
-rw-r--r--rtems/config/tools/rtems-autoconf-2.69-1.cfg19
-rw-r--r--rtems/config/tools/rtems-automake-1.12.6-1.cfg19
-rw-r--r--rtems/config/tools/rtems-kernel-4-1.cfg3
-rw-r--r--rtems/config/tools/rtems-kernel-4.11.cfg13
-rw-r--r--source-builder/config/autoconf-2-1.cfg14
-rw-r--r--source-builder/config/automake-1-1.cfg16
-rw-r--r--source-builder/config/versions.cfg12
-rw-r--r--source-builder/defaults.mc7
-rw-r--r--source-builder/sb/build.py83
-rw-r--r--source-builder/sb/config.py8
-rw-r--r--source-builder/sb/options.py2
-rw-r--r--source-builder/sb/setbuilder.py67
33 files changed, 240 insertions, 104 deletions
diff --git a/rtems/config/4.11/rtems-arm.bset b/rtems/config/4.11/rtems-arm.bset
index 4b90413..41b5e77 100644
--- a/rtems/config/4.11/rtems-arm.bset
+++ b/rtems/config/4.11/rtems-arm.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-autotools-base.bset b/rtems/config/4.11/rtems-autotools-base.bset
new file mode 100644
index 0000000..fb446d4
--- /dev/null
+++ b/rtems/config/4.11/rtems-autotools-base.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-autotools-internal.bset b/rtems/config/4.11/rtems-autotools-internal.bset
new file mode 100644
index 0000000..d70dc80
--- /dev/null
+++ b/rtems/config/4.11/rtems-autotools-internal.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-autotools.bset b/rtems/config/4.11/rtems-autotools.bset
index cf71f8d..2eeffb7 100644
--- a/rtems/config/4.11/rtems-autotools.bset
+++ b/rtems/config/4.11/rtems-autotools.bset
@@ -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:
#
-# The RTEMS 4.11 base defines.
+# 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.
#
-%include rtems-4.11-base.bset
#
-# The autotoolspackage.
+# A magic internal path that would break if changes in the defaults.mc
+# macro file are made.
#
-package: rtems-%{rtems_version}-autotools-%{release}
+%define _internal_autotools_path %{_tmppath}/sb-%{_uid}/${SB_PREFIX_CLEAN}
-#
-# Tools configuration.
-#
-devel/autoconf-2.69-1
-devel/automake-1.12.6-1
+4.11/rtems-autotools-internal
+4.11/rtems-autotools-base
diff --git a/rtems/config/4.11/rtems-avr.bset b/rtems/config/4.11/rtems-avr.bset
index 3ad25e2..735dc92 100644
--- a/rtems/config/4.11/rtems-avr.bset
+++ b/rtems/config/4.11/rtems-avr.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-bfin.bset b/rtems/config/4.11/rtems-bfin.bset
index f9bb5a3..5f883b6 100644
--- a/rtems/config/4.11/rtems-bfin.bset
+++ b/rtems/config/4.11/rtems-bfin.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-h8300.bset b/rtems/config/4.11/rtems-h8300.bset
index 2179bcc..3074181 100644
--- a/rtems/config/4.11/rtems-h8300.bset
+++ b/rtems/config/4.11/rtems-h8300.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-i386.bset b/rtems/config/4.11/rtems-i386.bset
index 77be484..3860fb0 100644
--- a/rtems/config/4.11/rtems-i386.bset
+++ b/rtems/config/4.11/rtems-i386.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-lm32.bset b/rtems/config/4.11/rtems-lm32.bset
index 9f1941c..cbf5524 100644
--- a/rtems/config/4.11/rtems-lm32.bset
+++ b/rtems/config/4.11/rtems-lm32.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-m32c.bset b/rtems/config/4.11/rtems-m32c.bset
index 03490b1..765c050 100644
--- a/rtems/config/4.11/rtems-m32c.bset
+++ b/rtems/config/4.11/rtems-m32c.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-m32r.bset b/rtems/config/4.11/rtems-m32r.bset
index 87be740..5991283 100644
--- a/rtems/config/4.11/rtems-m32r.bset
+++ b/rtems/config/4.11/rtems-m32r.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-m68k.bset b/rtems/config/4.11/rtems-m68k.bset
index 148e93a..2f470d0 100644
--- a/rtems/config/4.11/rtems-m68k.bset
+++ b/rtems/config/4.11/rtems-m68k.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-microblaze.bset b/rtems/config/4.11/rtems-microblaze.bset
index da8cd0e..eac2ea1 100644
--- a/rtems/config/4.11/rtems-microblaze.bset
+++ b/rtems/config/4.11/rtems-microblaze.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-mips.bset b/rtems/config/4.11/rtems-mips.bset
index 7fef992..d6cf3d8 100644
--- a/rtems/config/4.11/rtems-mips.bset
+++ b/rtems/config/4.11/rtems-mips.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-moxie.bset b/rtems/config/4.11/rtems-moxie.bset
index b3058df..edaa901 100644
--- a/rtems/config/4.11/rtems-moxie.bset
+++ b/rtems/config/4.11/rtems-moxie.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-nios2.bset b/rtems/config/4.11/rtems-nios2.bset
index 969fcdc..602a853 100644
--- a/rtems/config/4.11/rtems-nios2.bset
+++ b/rtems/config/4.11/rtems-nios2.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-powerpc.bset b/rtems/config/4.11/rtems-powerpc.bset
index 6355dff..8d0158a 100644
--- a/rtems/config/4.11/rtems-powerpc.bset
+++ b/rtems/config/4.11/rtems-powerpc.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-sh.bset b/rtems/config/4.11/rtems-sh.bset
index b38b12b..bc48b70 100644
--- a/rtems/config/4.11/rtems-sh.bset
+++ b/rtems/config/4.11/rtems-sh.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-sparc.bset b/rtems/config/4.11/rtems-sparc.bset
index bb1a7b7..6824d21 100644
--- a/rtems/config/4.11/rtems-sparc.bset
+++ b/rtems/config/4.11/rtems-sparc.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-sparc64.bset b/rtems/config/4.11/rtems-sparc64.bset
index 9088b97..c2ac589 100644
--- a/rtems/config/4.11/rtems-sparc64.bset
+++ b/rtems/config/4.11/rtems-sparc64.bset
@@ -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
diff --git a/rtems/config/4.11/rtems-v850.bset b/rtems/config/4.11/rtems-v850.bset
index 4fb0aab..e1a9988 100644
--- a/rtems/config/4.11/rtems-v850.bset
+++ b/rtems/config/4.11/rtems-v850.bset
@@ -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
diff --git a/rtems/config/tools/rtems-autoconf-2.69-1.cfg b/rtems/config/tools/rtems-autoconf-2.69-1.cfg
new file mode 100644
index 0000000..1db8746
--- /dev/null
+++ b/rtems/config/tools/rtems-autoconf-2.69-1.cfg
@@ -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
diff --git a/rtems/config/tools/rtems-automake-1.12.6-1.cfg b/rtems/config/tools/rtems-automake-1.12.6-1.cfg
new file mode 100644
index 0000000..1585cf4
--- /dev/null
+++ b/rtems/config/tools/rtems-automake-1.12.6-1.cfg
@@ -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
diff --git a/rtems/config/tools/rtems-kernel-4-1.cfg b/rtems/config/tools/rtems-kernel-4-1.cfg
index 0cec85d..d22f9c2 100644
--- a/rtems/config/tools/rtems-kernel-4-1.cfg
+++ b/rtems/config/tools/rtems-kernel-4-1.cfg
@@ -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
diff --git a/rtems/config/tools/rtems-kernel-4.11.cfg b/rtems/config/tools/rtems-kernel-4.11.cfg
index 0eb6272..dd010e3 100644
--- a/rtems/config/tools/rtems-kernel-4.11.cfg
+++ b/rtems/config/tools/rtems-kernel-4.11.cfg
@@ -9,13 +9,20 @@
%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.
#
diff --git a/source-builder/config/autoconf-2-1.cfg b/source-builder/config/autoconf-2-1.cfg
index 51e683d..48fd542 100644
--- a/source-builder/config/autoconf-2-1.cfg
+++ b/source-builder/config/autoconf-2-1.cfg
@@ -31,16 +31,14 @@ VersionControl0: git clone git://git.sv.gnu.org/autoconf
cd ..
%build
- if test "%{_internal_autotools}" == "yes"; then
- export PATH="%{_bindir}:${PATH}"
- else
- export PATH=$SB_ORIG_PATH
- fi
+ %if %{defined _internal_autotools_path}
+ export PATH="%{_internal_autotools_path}/bin:${PATH}"
+ %endif
cd autoconf-%{autoconf_version}
if test "%{_internal_autotools}" == "yes"; then
- ac_prefix=$SB_TMPPREFIX
+ ac_prefix=%{_internal_autotools_path}
else
ac_prefix=%{_prefix}
fi
@@ -65,11 +63,11 @@ VersionControl0: git clone git://git.sv.gnu.org/autoconf
%install
export PATH="%{_bindir}:${PATH}"
- rm -rf $SB_BUILD_ROOT
+ %{__rmdir} $SB_BUILD_ROOT
cd autoconf-%{autoconf_version}
- if "%{_internal_autotools}" == "yes"; then
+ if test "%{_internal_autotools}" == "yes"; then
%{__make} install
else
%{__make} DESTDIR=$SB_BUILD_ROOT install
diff --git a/source-builder/config/automake-1-1.cfg b/source-builder/config/automake-1-1.cfg
index 8a52661..6ad4bd5 100644
--- a/source-builder/config/automake-1-1.cfg
+++ b/source-builder/config/automake-1-1.cfg
@@ -31,22 +31,20 @@ VersionControl0: git clone git://git.savannah.gnu.org/automake.git
cd ..
%build
- if test "%{_internal_autotools}" == "yes"; then
- export PATH="%{_bindir}:${PATH}"
- else
- export PATH=$SB_ORIG_PATH
- fi
+ %if %{defined _internal_autotools_path}
+ export PATH="%{_internal_autotools_path}/bin:${PATH}"
+ %endif
cd automake-%{automake_version}
if test "%{_internal_autotools}" == "yes"; then
- am_prefix=$SB_TMPPREFIX
+ am_prefix=%{_internal_autotools_path}
else
am_prefix=%{_prefix}
fi
if test "%{_build}" != "%{_host}" ; then
- CFLAGS_FOR_BUILD="-g -O2 -Wall"
+ CFLAGS_FOR_BUILD="-g -O2 -Wall"
fi
export CFLAGS CFLAGS_FOR_BUILD CC
@@ -64,11 +62,11 @@ VersionControl0: git clone git://git.savannah.gnu.org/automake.git
%install
export PATH="%{_bindir}:${PATH}"
- rm -rf $SB_BUILD_ROOT
+ %{__rmdir} $SB_BUILD_ROOT
cd automake-%{automake_version}
- if "%{_internal_autotools}" == "yes"; then
+ if test "%{_internal_autotools}" == "yes"; then
%{__make} install
else
%{__make} DESTDIR=$SB_BUILD_ROOT install
diff --git a/source-builder/config/versions.cfg b/source-builder/config/versions.cfg
index 0e574ff..ee0a657 100644
--- a/source-builder/config/versions.cfg
+++ b/source-builder/config/versions.cfg
@@ -1,7 +1,9 @@
# Generate version strings.
-%define __makeinfo_ver %(%{__makeinfo} --version | %{__awk} 'NR==1 {print $NF}')
-%define __autoconf_ver %(%{__autoconf} --version | %{__awk} 'NR==1 {print $NF}')
-%define __automake_ver %(%{__automake} --version | %{__awk} 'NR==1 {print $NF}')
-
-
+%define __makeinfo_ver %(test -x %{__makeinfo} && %{__makeinfo} --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __autoconf_ver %(test -x %{__autoconf} && %{__autoconf} --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __autoconf_bindir_ver %(test -x %{_bindir}/autoconf && %{_bindir}/autoconf --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __autoreconf_ver %(test -x %{__autoreconf} && %{__autoreconf} --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __autoreconf_bindir_ver %(test -x %{_bindir}/autoreconf && %{_bindir}/autoreconf --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __automake_ver %(test -x %{__automake} && %{__automake} --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
+%define __automake_bindir_ver %(test -x %{_bindir}/automake && %{_bindir}/automake --version | %{__awk} 'NR==1 {print $NF}' || echo "0")
diff --git a/source-builder/defaults.mc b/source-builder/defaults.mc
index 20a3f0c..bfb4665 100644
--- a/source-builder/defaults.mc
+++ b/source-builder/defaults.mc
@@ -106,9 +106,10 @@ __aclocal: exe, optional, 'aclocal'
__ar: exe, required, 'ar'
__arch_install_post: exe, none, '%{nil}'
__as: exe, required, 'as'
-__autoconf: exe, required, 'autoconf'
-__autoheader: exe, required, 'autoheader'
-__automake: exe, required, 'automake'
+__autoconf: exe, optional, 'autoconf'
+__autoheader: exe, optional, 'autoheader'
+__automake: exe, optional, 'automake'
+__autoreconf: exe, optional, 'autoreconf'
__awk: exe, required, 'awk'
__bash: exe, optional, '/bin/bash'
__bison: exe, required, '/usr/bin/bison'
diff --git a/source-builder/sb/build.py b/source-builder/sb/build.py
index 8b6ae35..c9ff07a 100644
--- a/source-builder/sb/build.py
+++ b/source-builder/sb/build.py
@@ -273,14 +273,15 @@ class build:
def prep(self, package):
self.script.append('echo "==> %prep:"')
_prep = package.prep()
- for l in _prep:
- args = l.split()
- if args[0] == '%setup':
- self.setup(package, args)
- elif args[0].startswith('%patch'):
- self.patch(package, args)
- else:
- self.script.append(' '.join(args))
+ if _prep:
+ for l in _prep:
+ args = l.split()
+ if args[0] == '%setup':
+ self.setup(package, args)
+ elif args[0].startswith('%patch'):
+ self.patch(package, args)
+ else:
+ self.script.append(' '.join(args))
def build(self, package):
self.script.append('echo "==> clean %{buildroot}: ${SB_BUILD_ROOT}"')
@@ -290,18 +291,21 @@ class build:
(self.config.expand('%{__mkdir_p}')))
self.script.append('echo "==> %build:"')
_build = package.build()
- for l in _build:
- self.script.append(l)
+ if _build:
+ for l in _build:
+ self.script.append(l)
def install(self, package):
self.script.append('echo "==> %install:"')
_install = package.install()
- for l in _install:
- args = l.split()
- self.script.append(' '.join(args))
+ if _install:
+ for l in _install:
+ args = l.split()
+ self.script.append(' '.join(args))
def files(self, package):
- if self.create_tar_files:
+ if self.create_tar_files \
+ and not self.macros.get('%{_disable_packaging'):
self.script.append('echo "==> %files:"')
inpath = path.abspath(self.config.expand('%{buildroot}'))
tardir = path.abspath(self.config.expand('%{_tardir}'))
@@ -335,7 +339,8 @@ class build:
self.clean(package)
def cleanup(self):
- if not self.opts.no_clean():
+ package = self.main_package()
+ if not package.disabled() and not self.opts.no_clean():
buildroot = self.config.abspath('buildroot')
builddir = self.config.abspath('_builddir')
buildcxcdir = self.config.abspath('_buildcxcdir')
@@ -356,35 +361,43 @@ class build:
def make(self):
package = self.main_package()
- name = package.name()
- if self.canadian_cross():
- log.notice('package: (Cxc) %s' % (name))
+ if package.disabled():
+ log.notice('package: nothing to build')
else:
- log.notice('package: %s' % (name))
- log.trace('---- macro maps %s' % ('-' * 55))
- log.trace('%s' % (str(self.config.macros)))
- log.trace('-' * 70)
- self.script.reset()
- self.script.append(self.config.expand('%{___build_template}'))
- self.script.append('echo "=> ' + name + ':"')
- self.prep(package)
- self.build_package(package)
- if not self.opts.dry_run():
- self.builddir()
- sn = path.join(self.config.expand('%{_builddir}'), 'doit')
- log.output('write script: ' + sn)
- self.script.write(sn)
+ name = package.name()
if self.canadian_cross():
- log.notice('building: (Cxc) %s' % (name))
+ log.notice('package: (Cxc) %s' % (name))
else:
- log.notice('building: %s' % (name))
- self.run(sn)
+ log.notice('package: %s' % (name))
+ log.trace('---- macro maps %s' % ('-' * 55))
+ log.trace('%s' % (str(self.config.macros)))
+ log.trace('-' * 70)
+ self.script.reset()
+ self.script.append(self.config.expand('%{___build_template}'))
+ self.script.append('echo "=> ' + name + ':"')
+ self.prep(package)
+ self.build_package(package)
+ if not self.opts.dry_run():
+ self.builddir()
+ sn = path.join(self.config.expand('%{_builddir}'), 'doit')
+ log.output('write script: ' + sn)
+ self.script.write(sn)
+ if self.canadian_cross():
+ log.notice('building: (Cxc) %s' % (name))
+ else:
+ log.notice('building: %s' % (name))
+ self.run(sn)
def name(self):
packages = self.config.packages()
package = packages['main']
return package.name()
+ def disabled(self):
+ packages = self.config.packages()
+ package = packages['main']
+ return package.disabled()
+
def get_configs(opts):
def _scan(_path, ext):
diff --git a/source-builder/sb/config.py b/source-builder/sb/config.py
index 9838a10..1d55eeb 100644
--- a/source-builder/sb/config.py
+++ b/source-builder/sb/config.py
@@ -203,6 +203,9 @@ class package:
def long_name(self):
return self.name()
+ def disabled(self):
+ return len(self.name()) == 0
+
class file:
"""Parse a config file."""
@@ -540,6 +543,11 @@ class file:
return text
if r[1] == '%else':
in_iftrue = False
+ elif r[0] == 'directive':
+ if r[1] == '%include':
+ self.load(r[2][0])
+ else:
+ log.warning("directive not supported in if: '%s'" % (' '.join(r[2])))
elif r[0] == 'data':
if this_isvalid:
text.extend(r[1])
diff --git a/source-builder/sb/options.py b/source-builder/sb/options.py
index cf05935..4977172 100644
--- a/source-builder/sb/options.py
+++ b/source-builder/sb/options.py
@@ -523,6 +523,8 @@ def load(args, optargs = None, defaults = '%{_sbdir}/defaults.mc'):
o.process()
o.post_process()
+ log.notice(' '.join(args))
+
return o
def run(args):
diff --git a/source-builder/sb/setbuilder.py b/source-builder/sb/setbuilder.py
index 3399d2d..00bcec3 100644
--- a/source-builder/sb/setbuilder.py
+++ b/source-builder/sb/setbuilder.py
@@ -99,7 +99,9 @@ class buildset:
raise error.general('copying tree: %s' % (str(err)))
def report(self, _config, _build):
- if not _build.opts.get_arg('--no-report') and _build.opts.get_arg('--mail'):
+ if not _build.opts.get_arg('--no-report') \
+ and not _build.macros.get('%{_disable_reporting}') \
+ and _build.opts.get_arg('--mail'):
format = _build.opts.get_arg('--report-format')
if format is None:
format = 'html'
@@ -172,20 +174,24 @@ class buildset:
_build.make()
for m in macros_to_save:
_build.config.set_define(m, orig_macros[m])
- self.root_copy(_build.config.expand('%{buildcxcroot}'),
- _build.config.expand('%{_tmpcxcroot}'))
+ if not _build.macros.get('%{_disable_collecting}'):
+ self.root_copy(_build.config.expand('%{buildcxcroot}'),
+ _build.config.expand('%{_tmpcxcroot}'))
def build_package(self, _config, _build):
- if _build.canadian_cross():
- self.canadian_cross(_build)
- _build.make()
- self.report(_config, _build)
- self.root_copy(_build.config.expand('%{buildroot}'),
- _build.config.expand('%{_tmproot}'))
+ if not _build.disabled():
+ if _build.canadian_cross():
+ self.canadian_cross(_build)
+ _build.make()
+ self.report(_config, _build)
+ if not _build.macros.get('%{_disable_collecting}'):
+ self.root_copy(_build.config.expand('%{buildroot}'),
+ _build.config.expand('%{_tmproot}'))
def bset_tar(self, _build):
tardir = _build.config.expand('%{_tardir}')
- if self.opts.get_arg('--bset-tar-file'):
+ if self.opts.get_arg('--bset-tar-file') \
+ and not _build.macros.get('%{_disable_packaging}'):
path.mkdir(tardir)
tar = path.join(tardir, _build.config.expand('%s.tar.bz2' % (self.bset_pkg)))
log.notice('tarball: %s' % (os.path.relpath(path.host(tar))))
@@ -306,6 +312,7 @@ class buildset:
try:
builds = []
for s in range(0, len(configs)):
+ b = None
try:
#
# Each section of the build set gets a separate set of
@@ -334,30 +341,36 @@ class buildset:
else:
raise error.general('invalid config type: %s' % (configs[s]))
except error.general, gerr:
- if self.build_failure is None:
- self.build_failure = b.name()
- self.write_mail_header('')
- self.write_mail_header('= ' * 40)
- self.write_mail_header('Build FAILED: %s' % (b.name()))
- self.write_mail_header('- ' * 40)
- self.write_mail_header(str(log.default))
- self.write_mail_header('- ' * 40)
- if self.opts.keep_going():
- print gerr
- if self.opts.always_clean():
- builds += [b]
+ if b is not None:
+ if self.build_failure is None:
+ self.build_failure = b.name()
+ self.write_mail_header('')
+ self.write_mail_header('= ' * 40)
+ self.write_mail_header('Build FAILED: %s' % (b.name()))
+ self.write_mail_header('- ' * 40)
+ self.write_mail_header(str(log.default))
+ self.write_mail_header('- ' * 40)
+ if self.opts.keep_going():
+ print gerr
+ if self.opts.always_clean():
+ builds += [b]
+ else:
+ raise
else:
raise
if deps is None and not self.opts.no_install():
for b in builds:
- self.install(b.name(),
- b.config.expand('%{buildroot}'),
- b.config.expand('%{_prefix}'))
+ if not b.disabled() \
+ and not b.macros.get('%{_disable_installing}'):
+ self.install(b.name(),
+ b.config.expand('%{buildroot}'),
+ b.config.expand('%{_prefix}'))
if deps is None and \
(not self.opts.no_clean() or self.opts.always_clean()):
for b in builds:
- log.notice('cleaning: %s' % (b.name()))
- b.cleanup()
+ if not b.disabled():
+ log.notice('cleaning: %s' % (b.name()))
+ b.cleanup()
for b in builds:
del b
except error.general, gerr: