OK and thanks Chris
On 5/11/21 1:31 am, Ryan Long wrote: > Closes #4145 > --- > rtems/config/tools/rtems-kernel-6.cfg | 6 +- > rtems/config/tools/rtems-kernel-common.cfg | 125 +++++++++++------------ > source-builder/sb/rtems-kernel-config-check | 147 > ++++++++++++++++++++++++++++ > 3 files changed, 215 insertions(+), 63 deletions(-) > create mode 100755 source-builder/sb/rtems-kernel-config-check > > diff --git a/rtems/config/tools/rtems-kernel-6.cfg > b/rtems/config/tools/rtems-kernel-6.cfg > index f1d0990..9120862 100644 > --- a/rtems/config/tools/rtems-kernel-6.cfg > +++ b/rtems/config/tools/rtems-kernel-6.cfg > @@ -2,10 +2,10 @@ > # RTEMS 5 > # > > -%define rtems_kernel_version 3ec5f20484cc4201e1d7b87844505644533b6148 > -%hash sha512 rtems-kernel-%{rtems_kernel_version}.tar.bz2 \ > - > BjMKrf5n1YR6IpiZrY5TUEzKATPRJxA2/6m6f833DdRu+RyLxccXqA4gHRdVUqFelFNQ3o0XdG4o1naBKYfhkQ== > +%define rtems_kernel_version 3bb97a30b17b6c138dead3e3a6b329c3b301cdb3 > > +%hash sha512 rtems-kernel-%{rtems_kernel_version}.tar.gz \ > + > m/ogwrJj4X60ewDIbV6WRj1MJa/22gQHQd56XiNMfvCr0nsvcXdkXKAObLIGYIGYfUyEwlVk3SRjjRFkFalDGQ== > # > # The RTEMS build instructions. > # > diff --git a/rtems/config/tools/rtems-kernel-common.cfg > b/rtems/config/tools/rtems-kernel-common.cfg > index 157c7a4..431fc1d 100644 > --- a/rtems/config/tools/rtems-kernel-common.cfg > +++ b/rtems/config/tools/rtems-kernel-common.cfg > @@ -9,7 +9,7 @@ > # and BSPs. Only after the source to download. > # > %if %{_dry_run} && %{defined with_download} > - %log Kenrel configuration errors ignored > + %log Kernel configuration errors ignored > %define rtems_kernel_error 0 > %else > %define rtems_kernel_error 1 > @@ -19,10 +19,15 @@ > %define rtems_kernel_version %{rsb_version} > %endif > > +%if %{defined with_rtems_bsp_config} > + %define _target %(%{_sbdir}/sb/rtems-kernel-config-check -v > %{rtems_version} -t %{with_rtems_bsp_config}) > + %define rtems_bsp %(%{_sbdir}/sb/rtems-kernel-config-check -b > %{with_rtems_bsp_config}) > +%endif > + > # > # The target. It could be set in rtems_target. > # > -%if %{defined rtems_target} > +%if %{defined rtems_target} && !%{defined with_rtems_bsp_config} > %define _target %{rtems_target} > %endif > %if %{_target} == %{nil} && %{rtems_kernel_error} > @@ -32,10 +37,21 @@ > # > # The BSP. > # > -%if !%{defined with_rtems_bsp} && %{rtems_kernel_error} > +%if !%{defined with_rtems_bsp} && %{rtems_kernel_error} && !%{defined > with_rtems_bsp_config} > %error No RTEMS BSP specified: --with-rtems-bsp=bsp > %endif > -%define rtems_bsp %{with_rtems_bsp} > +%if !%{defined with_rtems_bsp_config} > + %define rtems_bsp %{with_rtems_bsp} > +%endif > + > +# > +# Configuration file used with waf > +# > +%ifn %{defined with_rtems_bsp_config} > + %define config_file config-%{_target}-%{rtems_bsp}.ini > +%else > + %define config_file %{with_rtems_bsp_config} > +%endif > > # > # If no tools are provided use the prefix. > @@ -98,14 +114,6 @@ URL: https://www.rtems.org/ > %define rtems_posix 0 > %endif > > -%if %{defined with_rtems_legacy_network} > - %define rtems_networking 1 > -%endif > - > -%if %{defined with_rtems_cxx} > - %define rtems_cxx 1 > -%endif > - > %if %{defined with_rtems_bspopts} > %define bspopts %{with_rtems_bspopts} > %endif > @@ -143,43 +151,43 @@ URL: https://www.rtems.org/ > # --without-rtems-tests : Supported, forced to no > # --with-rtems-smp : Supported > # --without-rtems-smp : Don't care > -# --with-rtems-legacy-network : Supported > +# --with-rtems-legacy-network : Unsupported > # --without-rtems-legacy-network : Don't care > -# --with-rtems-bspopts : Supported, quote for a list > -# --without-rtems-bspopts : Don't care > -# > %if %{defined without_rtemsbsp} > %error Option --without-rtemsbsp is not supported. > %endif > +%if %{defined with_rtems_legacy_network} > + echo "RTEMS legacy network has been removed." > + echo "Please review and update your configuration." > + exit 1 > +%endif > +%if %{defined enable_cxx} > + echo CXX has been removed." > + echo "Please review and update your configuration." > + exit 1 > +%endif > + > %if %{defined without_rtems_tests} > - %define with_rtems_tests no > + %define rtems_tests False > + %define rtems_sample_tests False > %endif > %if %{defined with_rtems_tests} > %if %{with_rtems_tests} == 1 > - %define with_rtems_tests yes > + %define rtems_tests True > + %define rtems_sample_tests True > %endif > - %if %{with_rtems_tests} == yes || \ > - %{with_rtems_tests} == no || \ > - %{with_rtems_tests} == samples > - %define rtems_tests %{with_rtems_tests} > + %if %{with_rtems_tests} == samples > + %define rtems_tests False > + %define rtems_sample_tests True > %endif > %endif > %if %{defined with_rtems_smp} > %define rtems_smp 1 > %endif > -%if %{defined with_rtems_legacy_network} > - %define rtems_networking 1 > -%endif > %if %{defined with_rtems_bspopts} > %define rtems_bspopts %{with_rtems_bspopts} > %endif > > -# > -# If C++ defined for the tool set use it to control RTEMS's setting.. > -# > -%if %{defined enable_cxx} > - %define rtems_cxx %{enable_cxx} > -%endif > > # > # Default set up. Override these in a BSP if you want a > @@ -188,14 +196,9 @@ URL: https://www.rtems.org/ > %ifn %{defined rtems_posix} > %define rtems_posix 1 > %endif > -%ifn %{defined rtems_networking} > - %define rtems_networking 0 > -%endif > -%ifn %{defined rtems_cxx} > - %define rtems_cxx 1 > -%endif > %ifn %{defined rtems_tests} > - %define rtems_tests samples > + %define rtems_tests False > + %define rtems_sample_tests True > %endif > %ifn %{defined rtems_bspopts} > %define rtems_bspopts %{nil} > @@ -213,8 +216,6 @@ URL: https://www.rtems.org/ > %if %{defined _internal_autotools_path} > export PATH="%{_internal_autotools_path}/bin:${PATH}" > %endif > - ./bootstrap -c > - ./rtems-bootstrap > %endif > cd .. > > @@ -225,38 +226,42 @@ URL: https://www.rtems.org/ > else > build_dir="build" > fi > + > + cd ${source_dir_rtems} > + > + %if %{defined without_rtems_bsp_config} > + cpu=`echo %{_target} | cut -d- -f1` > + echo "[${cpu}/%{rtems_bsp}]" > %{config_file} > + echo "RTEMS_POSIX_API = %{?rtems_posix:True}%{!?rtems_posix:False}" >> > %{config_file} > + echo "RTEMS_SMP = %{?rtems_smp:True}%{!?rtems_smp:False}" >> > %{config_file} > + echo "BUILD_TESTS = %{rtems_tests}" >> %{config_file} > + echo "BUILD_SAMPLES = %{rtems_sample_tests}" >> %{config_file} > + %endif > + > mkdir -p ${build_dir} > - cd ${build_dir} > - > - ../${source_dir_rtems}/configure \ > - --build=%{_build} --host=%{_host} \ > - --target=%{_target} \ > - --enable-rtemsbsp="%{rtems_bsp}" \ > - %{?rtems_cxx:--enable-cxx}%{!?rtems_cxx:--disable-cxx} \ > - %{?rtems_posix:--enable-posix}%{!?rtems_posix:--disable-posix} \ > - > %{?rtems_networking:--enable-networking}%{!?rtems_networking:--disable-networking} > \ > - %{?rtems_tests:--enable-tests=%{rtems_tests}} \ > - %{?rtems_smp:--enable-smp} \ > + > + ./waf configure \ > + --rtems-bsps=%{_target}/%{rtems_bsp} \ > --prefix=%{_prefix} --bindir=%{_bindir} \ > - --exec-prefix=%{_exec_prefix} \ > - --includedir=%{_includedir} --libdir=%{_libdir} \ > - --mandir=%{_mandir} --infodir=%{_infodir} \ > - %{rtems_bspopts} > + --rtems-config=%{config_file} > + > + ./waf %{?_smp_mflags} > > - %{__make} %{?_smp_mflags} all > cd .. > > %install > %{__rmdir} $SB_BUILD_ROOT > > - cd ${build_dir} > - %{__make} DESTDIR=$SB_BUILD_ROOT install > + cd ${source_dir_rtems} > + ./waf --destdir=$SB_BUILD_ROOT install > + > + echo "rtems_tests: %{rtems_tests}" > > - %if %{rtems_tests} != no > + %if %{rtems_tests} != False > %define rtems_test_install %{_target}/%{rtems_bsp}/tests > mkdir -p $SB_BUILD_ROOT/%{_prefix}/%{rtems_test_install} > find . -name \*.exe -and -not -name \*.norun.exe \ > -exec cp -v \{\} $SB_BUILD_ROOT/%{_prefix}/%{rtems_test_install}/ \; > %endif > > - cd .. > + cd - > diff --git a/source-builder/sb/rtems-kernel-config-check > b/source-builder/sb/rtems-kernel-config-check > new file mode 100755 > index 0000000..9bdff22 > --- /dev/null > +++ b/source-builder/sb/rtems-kernel-config-check > @@ -0,0 +1,147 @@ > +#! /usr/bin/env python > + > +""" > +SPDX-License-Identifier: BSD-2-Clause > + > +COPYRIGHT (C) 2021 On-Line Applications Research Corporation (OAR). > + > +Redistribution and use in source and binary forms, with or without > +modification, are permitted provided that the following conditions > +are met: > +1. Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > +2. Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in the > + documentation and/or other materials provided with the distribution. > + > +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > +POSSIBILITY OF SUCH DAMAGE. > +""" > + > +from __future__ import print_function > + > +import sys > +import argparse > + > +from os.path import exists > + > +try: > + import ConfigParser > + configparser = ConfigParser # used for python2 > +except ImportError: > + try: > + import configparser # used for python3 > + except ImportError: > + print("Could not import configparser. Exiting...", file = sys.stderr) > + sys.exit(1) > + > +def run(): > + parser = argparse.ArgumentParser() > + parser.add_argument("config", help="path to config file") > + parser.add_argument( > + "-a", > + "--arch", > + help="return target architecture specified in the config", > + action="store_true" > + ) > + parser.add_argument( > + "-b", > + "--bsp", > + help="return BSP specified in the config", > + action="store_true" > + ) > + parser.add_argument( > + "-c", > + "--arch-bsp", > + help="return target architecture and BSP specified in the config", > + action="store_true" > + ) > + parser.add_argument( > + "-v", > + "--rtems-version", > + help="version of RTEMS", > + type=int, > + default=6 > + ) > + parser.add_argument( > + "-t", > + "--target", > + help="return target (<arch-rtems<rtems-version>)", > + action="store_true" > + ) > + args = parser.parse_args() > + config = configparser.ConfigParser() > + > + if args.config[-4:] != ".ini": > + print( > + "The config file is missing an *.ini extension.", > + file = sys.stderr > + ) > + sys.exit(1) > + > + try: > + config.read(args.config) > + except configparser.MissingSectionHeaderError: > + print( > + "There is no section header in the config file", > + file = sys.stderr > + ) > + sys.exit(1) > + except configparser.ParsingError: > + print( > + "An exception occured when parsing the config file", > + file = sys.stderr > + ) > + sys.exit(1) > + except: > + print( > + "An unknown exception occured", > + file = sys.stderr > + ) > + > + if len(config.sections()) != 1: > + print( > + "You can only have one arch/bsp section in your config.", > + file = sys.stderr > + ) > + sys.exit(1) > + > + arch_bsp_str = config.sections()[0] > + if arch_bsp_str.find("/") == -1: > + print( > + "arch/bsp section in config is missing '/'", > + file = sys.stderr > + ) > + sys.exit(1) > + > + if ( args.arch or args.bsp) and args.arch_bsp: > + args.arch = False > + > + if args.arch: > + print(arch_bsp_str.split("/")[0]) > + return > + > + if args.bsp: > + print(arch_bsp_str.split("/")[1]) > + return > + > + if args.arch_bsp: > + print(arch_bsp_str.replace("/", " ")) > + return > + > + if args.target: > + arch = arch_bsp_str.split("/")[0] > + print(arch + "-rtems" + str(args.rtems_version)) > + return > + > +if __name__ == "__main__": > + run() > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel