[GSoC 2020]: Need help in writing sed alternative in Python for RSB recipes

Mritunjay Sharma mritunjaysharma394 at gmail.com
Sat Aug 22 22:08:41 UTC 2020


[Good news and Update]:

Thank you so much Chris! Your advice to search for macros using --trace
solved the problem of hard coding!
It took two complete days to figure out this beautiful thing but it is
every worth it.

Now the user has to just enter the below command and it will make things
work:

`../source-builder/sb-builder --with-rtems-bsp="xilinx_zynq_a9_qemu"
--log=log_epics epics-7-1  --trace --prefix=$HOME/development/rtems/5-arm`

Note: prefix will depend on the user.

What made this possible? Your suggestion and the changes in code mentioned
below:

```diff --git a/rtems/config/epics/epics-7-1.cfg
b/rtems/config/epics/epics-7-1.cfg
index aeb39a9..4b20f82 100644
--- a/rtems/config/epics/epics-7-1.cfg
+++ b/rtems/config/epics/epics-7-1.cfg
@@ -6,6 +6,8 @@
  %define release 1
 %endif

+%include %{_configdir}/rtems-bsp.cfg
+
 #
 # EPICS Version
 #
diff --git a/source-builder/config/epics-7-1.cfg
b/source-builder/config/epics-7-1.cfg
index a9581a2..a47aecb 100644
--- a/source-builder/config/epics-7-1.cfg
+++ b/source-builder/config/epics-7-1.cfg
@@ -40,7 +40,10 @@ URL:  https://epics.mpg.de/

   %{build_build_flags}

-  %{__make} PREFIX=%{_prefix} RTEMS_BASE=$HOME/development/rtems/5-arm
RTEMS_VERSION=5 CROSS_COMPILER_TARGET_ARCHS=RTEMS-xilinx_zynq_a9_qemu
+  #
+  # Using macros to dynamically path to RTEMS_BASE and RTEMS_VERSION using
--with-rtems-bsp
+  #
+  %{__make} PREFIX=%{_prefix} RTEMS_BASE=%{_exec_prefix}
RTEMS_VERSION=%{rtems_version}

   cd ${build_top}

@@ -50,6 +53,5 @@ URL:  https://epics.mpg.de/
   rm -rf $SB_BUILD_ROOT

   cd ${source_dir_epics}
-  %{__make} DESTDIR=$SB_BUILD_ROOT PREFIX=%{_prefix}
RTEMS_BASE=$HOME/development/rtems/5-arm RTEMS_VERSION=5
CROSS_COMPILER_TARGET_ARCHS=RTEMS-xilinx_zynq_a9_qemu
-
+  %{__make} DESTDIR=$SB_BUILD_ROOT PREFIX=%{_prefix}
RTEMS_BASE=%{_exec_prefix} RTEMS_VERSION=%{rtems_version}
   cd ${build_top}
```

These couple of changes made this build successful using RSB recipe. The
only problem remains
is that a warning of 'no hash found' is coming, even though I have added
it.

The above changes can be found pushed here:
https://github.com/RTEMS/rtems-source-builder/commit/a505877157f63f6ae17906276b3ffcb699ed1297

Please do give feedback and suggest improvements so that the recipe can
become mergeable.

Thanks
Mritunjay Sharma







On Thu, Aug 20, 2020 at 8:51 AM Chris Johns <chrisj at rtems.org> wrote:

> On 20/8/20 8:09 am, Mritunjay Sharma wrote:
> > [UPDATE]: Finally modified the RSB recipes to make them work with make
> utility
> > and EPICS was built successfully.
>
> Great you have had some success but there is a lot more work before it is
> usable.
>
> > iff --git a/source-builder/config/epics-7-1.cfg
> b/source-builder/config/epics-7-1.cfg
> > index f51c6582..a9581a2e 100644
> > --- a/source-builder/config/epics-7-1.cfg
> > +++ b/source-builder/config/epics-7-1.cfg
> > @@ -21,7 +21,6 @@ URL:          https://epics.mpg.de/
> >  #
> >  %source set epics --rsb-file=epics-base-%{epics_version}.tar.gz
> https://gitlab.fhi.mpg.de/junkes/epics-base/-/archive/%{epics_version}/epics-base-%{epics_version}.tar.gz
> >
> > -
> >  #
> >  # Prepare the source code.
> >  #
> > @@ -31,20 +30,9 @@ URL:         https://epics.mpg.de/
> >    source_dir_epics="epics-base-%{epics_version}"
> >
> >    %source setup epics -q -n epics-base-%{epics_version}
> > -#
> > -# Changing the RTEMS Version in
> epics-base/configure/os/CONFIG_SITE.Common.RTEMS
> > -#
> > -sed -i 's/RTEMS_VERSION = .*/RTEMS_VERSION = 5/g'
> configure/os/CONFIG_SITE.Common.RTEMS
> > -
> > -#
> > -# Changing the RTEMS Base in
> epics-base/configure/os/CONFIG_SITE.Common.RTEMS
> > -#
> > -sed -i "s/^RTEMS_BASE .*/RTEMS_BASE =
> \/home\/mritunjay\/development\/rtems\/\$\(RTEMS_VERSION\)\-arm/g"
> configure/os/CONFIG_SITE.Common.RTEMS
> >
> >    cd ${build_top}
> >
> > -
> > -
> >  %build
> >    build_top=$(pwd)
> >
> > @@ -52,7 +40,7 @@ sed -i "s/^RTEMS_BASE .*/RTEMS_BASE =
> \/home\/mritunjay\/development\/rtems\/\$\
> >
> >    %{build_build_flags}
> >
> > -  %{__make} PREFIX=%{_prefix}
> > +  %{__make} PREFIX=%{_prefix} RTEMS_BASE=$HOME/development/rtems/5-arm
> RTEMS_VERSION=5 CROSS_COMPILER_TARGET_ARCHS=RTEMS-xilinx_zynq_a9_qemu
> >
> >    cd ${build_top}
> >
> > @@ -62,6 +50,6 @@ sed -i "s/^RTEMS_BASE .*/RTEMS_BASE =
> \/home\/mritunjay\/development\/rtems\/\$\
> >    rm -rf $SB_BUILD_ROOT
> >
> >    cd ${source_dir_epics}
> > -  %{__make} DESTDIR=$SB_BUILD_ROOT PREFIX=%{_prefix} install
> > +  %{__make} DESTDIR=$SB_BUILD_ROOT PREFIX=%{_prefix}
> RTEMS_BASE=$HOME/development/rtems/5-arm RTEMS_VERSION=5
> CROSS_COMPILER_TARGET_ARCHS=RTEMS-xilinx_zynq_a9_qemu
>
> Mritunjay, can you see what is wrong here? Lets have a look ...
>
> $ stat $HOME/development/rtems/5-arm
> stat: /home/chris/development/rtems/5-arm: stat: No such file or directory
>
> This will not work for me and it will not work for an RSB vertical stack
> build.
> This last requirement is important.
>
> You cannot hard code values. The RSB provides the RTEMS version, BSP
> details and
> paths as RSB macro variables. Please review these by using the --trace
> option
> and log file and please ask if you have any questions.
>
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200823/7b57e52b/attachment-0001.html>


More information about the devel mailing list