[PATCH] rtems-kernel: Implement kernel recipe using waf
Joel Sherrill
joel at rtems.org
Fri Oct 8 23:49:16 UTC 2021
On Fri, Oct 8, 2021, 6:44 PM Chris Johns <chrisj at rtems.org> wrote:
> Hi Ryan,
>
> Thank you for taking this on.
>
> I would like see one addition, a user supplied config.ini file that
> bypasses any
> generated config file. The config needs to match the tool chain being
> built and
> waf will need to complain if it does not but that is not a problem for the
> RSB
> to manage.
>
> On 9/10/21 2:03 am, Ryan Long wrote:
> > Closes #4145
> > ---
> > rtems/config/tools/rtems-kernel-6.cfg | 8 ++-
> > rtems/config/tools/rtems-kernel-common.cfg | 95
> +++++++++++++-----------------
> > 2 files changed, 47 insertions(+), 56 deletions(-)
> >
> > diff --git a/rtems/config/tools/rtems-kernel-6.cfg
> b/rtems/config/tools/rtems-kernel-6.cfg
> > index f1d0990..edc0eb1 100644
> > --- a/rtems/config/tools/rtems-kernel-6.cfg
> > +++ b/rtems/config/tools/rtems-kernel-6.cfg
> > @@ -2,10 +2,12 @@
> > # RTEMS 5
> > #
> >
> > -%define rtems_kernel_version 3ec5f20484cc4201e1d7b87844505644533b6148
> > -%hash sha512 rtems-kernel-%{rtems_kernel_version}.tar.bz2 \
> > -
> BjMKrf5n1YR6IpiZrY5TUEzKATPRJxA2/6m6f833DdRu+RyLxccXqA4gHRdVUqFelFNQ3o0XdG4o1naBKYfhkQ==
> > +%define rtems_kernel_version 3bb97a30b17b6c138dead3e3a6b329c3b301cdb3
> >
> > +%source set rtems_kernel
> --rsb-file=rtems-kernel-%{rtems_kernel_version}.tar.gz
> https://codeload.github.com/RTEMS/rtems/tar.gz/%{rtems_kernel_version}
I thought this was commented out at least. It wasn't working for us. Is
that at least the right syntax for GitHub?
>
>
> Please use the rtems.org repo.
>
> > +
> > +%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..38af264 100644
> > --- a/rtems/config/tools/rtems-kernel-common.cfg
> > +++ b/rtems/config/tools/rtems-kernel-common.cfg
> > @@ -38,6 +38,11 @@
> > %define rtems_bsp %{with_rtems_bsp}
> >
> > #
> > +# Configuration file used with waf
> > +#
> > +%define config_file config-%{_target}-%{rtems_bsp}.ini
> > +
> > +#
> > # If no tools are provided use the prefix.
> > #
> > %ifn %{defined with_tools}
> > @@ -98,14 +103,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
> > -
> > %if %{defined with_rtems_bspopts}
> > %define bspopts %{with_rtems_bspopts}
> > %endif
> > @@ -129,8 +126,10 @@ URL: https://www.rtems.org/
> > %error No RTEMS kernel version defined
> > %endif
> >
> > +#%if ! %{defined rtems_kernel}
> > %source set rtems_kernel --rsb-file=%{rtems_kernel_file} \
> >
> https://git.rtems.org/rtems/snapshot/rtems-%{rtems_kernel_version}.tar.bz2
> > +#%endif
> >
> > #
> > # Check the various --with/--without options we support. These are
> > @@ -151,51 +150,38 @@ URL: https://www.rtems.org/
> > %if %{defined without_rtemsbsp}
> > %error Option --without-rtemsbsp is not supported.
> > %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}
>
> Please raise an error. Users will need to change their set up.
>
Ok. This is why we knew it was v1. Feedback was expected.
>
> > - %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}
>
> I think raise an error.
>
> > -%endif
> > -
> > -#
> > # Default set up. Override these in a BSP if you want a
> > # specific setup.
> > #
> > %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 +199,9 @@ URL: https://www.rtems.org/
> > %if %{defined _internal_autotools_path}
> > export PATH="%{_internal_autotools_path}/bin:${PATH}"
> > %endif
> > - ./bootstrap -c
> > - ./rtems-bootstrap
> > + pwd
> > + ls
>
> ?
>
> > + ./waf distclean
>
> I am not sure this works by itself when you use --out with configure?
>
> This could be ...
>
> ./waf distclean configure ....
>
> > %endif
> > cd ..
> >
> > @@ -225,32 +212,34 @@ URL: https://www.rtems.org/
> > else
> > build_dir="build"
> > fi
> > +
> > + cd ${source_dir_rtems}
> > +
> > + 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}
> > +
> > 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}
> > + --out=b-%{rtems_bsp} \
>
> Why change the build directory?
>
> > + %{rtems_bspopts} \
>
> Does this work?
>
> > + --rtems-config=%{config_file}
> >
> > - %{__make} %{?_smp_mflags} all
> > - cd ..
> > + ./waf %{?_smp_mflags}
> > +
> > + 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
> >
> > %if %{rtems_tests} != no
> > %define rtems_test_install %{_target}/%{rtems_bsp}/tests
> > @@ -259,4 +248,4 @@ URL: https://www.rtems.org/
> > -exec cp -v \{\} $SB_BUILD_ROOT/%{_prefix}/%{rtems_test_install}/
> \;
> > %endif
> >
> > - cd ..
> > + cd -
>
> Why the change?
>
> Chris
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
More information about the devel
mailing list