summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2013-04-22 22:28:27 +1000
committerChris Johns <chrisj@rtems.org>2013-04-22 22:28:27 +1000
commitf077b2b19056694a3721ced3a7ee6b332c72a3ae (patch)
tree520d70f40e3ca2a9cf0d8bf7d3d70aef5f63cc9f
parentFix CVS downloads. (diff)
downloadrtems-source-builder-f077b2b19056694a3721ced3a7ee6b332c72a3ae.tar.bz2
Fixes for CVS to work. Add RTEMS build for sparc/sis.
-rw-r--r--rtems/config/4.11/rtems-sparc.bset7
-rw-r--r--rtems/config/tools/rtems-kernel-4-1.cfg35
-rw-r--r--rtems/config/tools/rtems-kernel-4.11.cfg25
-rw-r--r--source-builder/sb/build.py2
-rw-r--r--source-builder/sb/cvs.py29
-rw-r--r--source-builder/sb/download.py14
6 files changed, 80 insertions, 32 deletions
diff --git a/rtems/config/4.11/rtems-sparc.bset b/rtems/config/4.11/rtems-sparc.bset
index 4ca0961..0349ca6 100644
--- a/rtems/config/4.11/rtems-sparc.bset
+++ b/rtems/config/4.11/rtems-sparc.bset
@@ -7,6 +7,12 @@
%define rtems_arch sparc
#
+# The RTEMS 4.11 BSP to build and test
+#
+%define rtems_bsps sis
+%define rtems_test_bsps sis
+
+#
# The RTEMS 4.11 base defines.
#
%include rtems-4.11-base.bset
@@ -18,3 +24,4 @@ expat-2.1.0-1
tools/rtems-binutils-2.23.1-1
tools/rtems-gcc-4.7.3-newlib-2.0.0-1
tools/rtems-gdb-7.5.1-1
+tools/rtems-kernel-4.11.cfg
diff --git a/rtems/config/tools/rtems-kernel-4-1.cfg b/rtems/config/tools/rtems-kernel-4-1.cfg
index 3a31c06..4d4bd60 100644
--- a/rtems/config/tools/rtems-kernel-4-1.cfg
+++ b/rtems/config/tools/rtems-kernel-4-1.cfg
@@ -46,8 +46,9 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
# Prepare the source code.
#
%prep
+ source_dir_0="rtems-%{rtems_kernel_version}"
%setup -q -c -n %{name}-%{version}
- cd rtems-%{rtems_kernel_version}
+ cd ${source_dir_0}
%{?patch0:%patch0 %{?patch0_opts:%{patch0_opts}}%{!?patch0_opts:-p1}}
%{?patch1:%patch1 %{?patch1_opts:%{patch1_opts}}%{!?patch1_opts:-p1}}
%{?patch2:%patch2 %{?patch2_opts:%{patch2_opts}}%{!?patch2_opts:-p1}}
@@ -58,24 +59,31 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
%{?patch7:%patch7 %{?patch7_opts:%{patch7_opts}}%{!?patch7_opts:-p1}}
%{?patch8:%patch8 %{?patch8_opts:%{patch8_opts}}%{!?patch8_opts:-p1}}
%{?patch9:%patch9 %{?patch9_opts:%{patch9_opts}}%{!?patch9_opts:-p1}}
+%if %{rtems_bootstrap}
+ ./bootstrap -c
+ ./bootstrap -p
+ ./bootstrap
+%endif
cd ..
%build
- export PATH="%{_bindir}:${PATH}"
- mkdir -p build
- cd build
- %{?host_force_32bit:HOST_FORCE_32BIT="-m32"}
-%if "%{_build}" != "%{_host}"
- CFLAGS_FOR_BUILD="-g -O2 -Wall ${HOST_FORCE_32BIT}" \
-%endif
- CFLAGS="$SB_OPT_FLAGS" \
- ../rtems-%{rtems_kernel_version}/configure \
+ # Build directory support.
+ if test "%{_build}" != "%{_host}" ; then
+ build_dir="build-cxc"
+ else
+ build_dir="build"
+ fi
+ mkdir -p ${build_dir}
+ cd ${build_dir}
+
+ ../${source_dir_0}/configure \
--build=%{_build} --host=%{_host} \
--target=%{_target} \
%{?rtems_posix:--enable-posix}%{!?rtems_posix:--disable-posix} \
%{?rtems_networking:--enable-networking}%{!?rtems_networking:--disable-networking} \
%{?rtems_cxx:--enable-cxx}%{!?rtems_cxx:--disable-cxx} \
%{rtems_tests_opt} \
+ %{?rtems_bsps:--enable-rtemsbsp=%{rtems_bsps}} \
--target=%{_target} \
--prefix=%{_prefix} --bindir=%{_bindir} \
--exec-prefix=%{_exec_prefix} \
@@ -86,10 +94,11 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
cd ..
%install
- export PATH="%{_bindir}:${PATH}"
- rm -rf $SB_BUILD_ROOT
+ %{__rmdir} $SB_BUILD_ROOT
- cd build
+ cd ${build_dir}
%{__make} DESTDIR=$SB_BUILD_ROOT install
cd ..
+
+%testing
diff --git a/rtems/config/tools/rtems-kernel-4.11.cfg b/rtems/config/tools/rtems-kernel-4.11.cfg
new file mode 100644
index 0000000..84bcb6f
--- /dev/null
+++ b/rtems/config/tools/rtems-kernel-4.11.cfg
@@ -0,0 +1,25 @@
+#
+# RTEMS 4.11
+#
+
+%include %{_configdir}/checks.cfg
+%include %{_configdir}/base.cfg
+
+%define rtems_kernel_version 4.11
+
+#
+# Pull the latest changes from git each build. Override if this is not what you
+# want.
+#
+Source0: git://git.rtems.org/rtems.git?pull
+
+#
+# The code in git needs to be bootstrapped. Do each build because we have
+# no way to change what changes may have happened in the code.
+#
+%define rtems_bootstrap
+
+#
+# The RTEMS build instructions. We use 4.xx Release 1.
+#
+%include tools/rtems-kernel-4-1.cfg
diff --git a/source-builder/sb/build.py b/source-builder/sb/build.py
index 8401500..a7d088b 100644
--- a/source-builder/sb/build.py
+++ b/source-builder/sb/build.py
@@ -131,7 +131,7 @@ class build:
source = download.parse_url(url, '_sourcedir', self.config, self.opts)
download.get_file(source['url'], source['local'], self.opts, self.config)
if 'symlink' in source:
- source['script'] = '%%{__ln_s} %s ${source_dir_%d}' % (source['local'], source_tag)
+ source['script'] = '%%{__ln_s} %s ${source_dir_%d}' % (source['symlink'], source_tag)
elif 'compressed' in source:
source['script'] = source['compressed'] + ' ' + \
source['local'] + ' | %{__tar_extract} -'
diff --git a/source-builder/sb/cvs.py b/source-builder/sb/cvs.py
index 0f4d41a..7ceff05 100644
--- a/source-builder/sb/cvs.py
+++ b/source-builder/sb/cvs.py
@@ -32,6 +32,16 @@ import path
class repo:
"""An object to manage a cvs repo."""
+ def __init__(self, _path, opts, macros = None, prefix = None):
+ self.path = _path
+ self.opts = opts
+ self.prefix = prefix
+ if macros is None:
+ self.macros = opts.defaults
+ else:
+ self.macros = macros
+ self.cvs = self.macros.expand('%{__cvs}')
+
def _cvs_exit_code(self, cmd, ec, output):
if ec:
log.output(output)
@@ -53,9 +63,10 @@ class repo:
def _run(self, args, check = False, cwd = None):
e = execute.capture_execution()
if cwd is None:
- if not path.exists(self.path):
- raise error.general('cvs path needs to exist: %s' % (self.path))
- cwd = self.path
+ _path = path.join(self.path, self.prefix)
+ if not path.exists(_path):
+ raise error.general('cvs path needs to exist: %s' % (_path))
+ cwd = _path
cmd = [self.cvs, '-q'] + args
log.output('cmd: (%s) %s' % (str(cwd), ' '.join(cmd)))
exit_code, proc, output = e.spawn(cmd, cwd = cwd)
@@ -64,16 +75,6 @@ class repo:
self._cvs_exit_code(cmd, exit_code, output)
return exit_code, output
- def __init__(self, _path, opts, macros = None, prefix = None):
- self.path = _path
- self.opts = opts
- self.prefix = prefix
- if macros is None:
- self.macros = opts.defaults
- else:
- self.macros = macros
- self.cvs = self.macros.expand('%{__cvs}')
-
def cvs_version(self):
ec, output = self._run(['--version'], True)
lines = output.split('\n')
@@ -98,7 +99,7 @@ class repo:
ec, output = self._run(cmd, check = True)
def update(self):
- ec, output = self._run(['up'])
+ ec, output = self._run(['up'], check = True)
def reset(self):
ec, output = self._run(['up', '-C'], check = True)
diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py
index c34b0c0..feb57fe 100644
--- a/source-builder/sb/download.py
+++ b/source-builder/sb/download.py
@@ -77,8 +77,14 @@ def _cvs_parser(source, config, opts):
except:
raise error.general('invalid cvs path: %s' % (source['url']))
source['local'] = path.join(source['local_prefix'], 'cvs', source['file'])
+ for a in us[1:]:
+ _as = a.split('=')
+ if _as[0] == 'src-prefix':
+ if len(_as) != 2:
+ raise error.general('invalid cvs src-prefix: %s' % (a))
+ source['src_prefix'] = _as[1]
if 'src_prefix' in source:
- source['symlink'] = path.join(source['local'])
+ source['symlink'] = path.join(source['local'], source['src_prefix'])
else:
source['symlink'] = source['local']
@@ -225,14 +231,14 @@ def _cvs_downloader(url, local, config, opts):
date = _as[1]
repo = cvs.repo(local, opts, config.macros, src_prefix)
if not repo.valid():
- log.notice('cvs: checkout: %s -> %s' % (us[0], rlp))
if not path.isdir(local):
log.notice('Creating source directory: %s' % \
(os.path.relpath(path.host(local))))
- log.output('making dir: %s' % (path.host(path.dirname(local))))
if not opts.dry_run():
path.mkdir(local)
- repo.checkout(':%s' % (us[0][6:]), module, tag, date)
+ log.notice('cvs: checkout: %s -> %s' % (us[0], rlp))
+ if not opts.dry_run():
+ repo.checkout(':%s' % (us[0][6:]), module, tag, date)
for a in us[1:]:
_as = a.split('=')
if _as[0] == 'update':