<div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Aug 16, 2020 at 12:15 AM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Mritunjay, Chris:<br>
<br>
For the RSB, since it is user-facing, we need to be sure to minimize<br>
its dependencies on the user environment and platform. So this pycli<br>
can only be used if it is distributed standard with Python 2 and<br>
Python 3.<br>
<br>
Would someone be able to apply this patch and use it to build epics?<br>
No, because (1) they won't have pycli available, and (2) they don't<br>
have a path /home/mritunjay<br></blockquote><div><br></div><div>I think what you are saying is absolutely right. It will be really a great help</div><div>if Chris can guide on what next can be done. </div><div><br></div><div>As far as 'pycli' is concerned, I have made a couple of minor tweaks. Gave it a better name</div><div>'sedpy' and made it public on GitHub. </div><div><br></div><div>Please find the link to the project here: <a href="https://github.com/mritunjaysharma394/sedpy">https://github.com/mritunjaysharma394/sedpy</a></div><div><br></div><div>I will appreciate if mentors can have a look and try this and see if it in any way can be modified</div><div>to be used with RSB or else we will go with what is suggested. </div><div><br></div><div>Thanks</div><div>Mritunjay</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
If there is no standard way to do line editing out of the box in<br>
Python, we might need to write our own little helper function to do<br>
it. I think Chris should weigh in on this issue, and whether there is<br>
anything to consider mimicking that does some custom Python scripting<br>
in RSB.<br>
<br>
Gedare<br>
<br>
On Sat, Aug 15, 2020 at 8:18 AM Mritunjay Sharma<br>
<<a href="mailto:mritunjaysharma394@gmail.com" target="_blank">mritunjaysharma394@gmail.com</a>> wrote:<br>
><br>
><br>
> On Sat, Aug 15, 2020 at 7:42 PM Mritunjay Sharma <<a href="mailto:mritunjaysharma394@gmail.com" target="_blank">mritunjaysharma394@gmail.com</a>> wrote:<br>
>><br>
>> [Update]: I have built a workable python cli package known as 'pycli'<br>
>> which works as an alternative for 'sed'.<br>
>><br>
>> I made the following changes in the config file:<br>
>><br>
>> diff --git a/source-builder/config/epics-7-1.cfg b/source-builder/config/epics-7-1.cfg<br>
>> index f51c658..6408534 100644<br>
>> --- a/source-builder/config/epics-7-1.cfg<br>
>> +++ b/source-builder/config/epics-7-1.cfg<br>
>> @@ -34,12 +34,11 @@ URL:  <a href="https://epics.mpg.de/" rel="noreferrer" target="_blank">https://epics.mpg.de/</a><br>
>>  #<br>
>>  # Changing the RTEMS Version in epics-base/configure/os/CONFIG_SITE.Common.RTEMS<br>
>>  #<br>
>> -sed -i 's/RTEMS_VERSION = .*/RTEMS_VERSION = 5/g' configure/os/CONFIG_SITE.Common.RTEMS<br>
>> +pycli 'RTEMS_VERSION = .*' 'RTEMS_VERSION = 5' configure/os/CONFIG_SITE.Common.RTEMS<br>
>><br>
>>  #<br>
>>  # Changing the RTEMS Base in epics-base/configure/os/CONFIG_SITE.Common.RTEMS<br>
>> -#<br>
>> -sed -i "s/^RTEMS_BASE .*/RTEMS_BASE = \/home\/mritunjay\/development\/rtems\/\$\(RTEMS_VERSION\)\-arm/g" configure/os/CONFIG_SITE.Common.RTEMS<br>
>> +pycli '^RTEMS_BASE .*' 'RTEMS_BASE = /home/mritunjay/development/rtems/$(RTEMS_VERSION)-arm/' configure/os/CONFIG_SITE.Common.RTEMS<br>
>><br>
>>    cd ${build_top}<br>
>><br>
><br>
><br>
> Kindly ignore this spike part, It was mistakenly sent.<br>
><br>
>><br>
>> diff --git a/source-builder/config/spike-1-1.cfg b/source-builder/config/spike-1-1.cfg<br>
>> index e731348..aff3f35 100644<br>
>> --- a/source-builder/config/spike-1-1.cfg<br>
>> +++ b/source-builder/config/spike-1-1.cfg<br>
>> @@ -3,7 +3,7 @@<br>
>>  #<br>
>>  # This configuration file configure's, make's and install's RISC-V's spike simulator.<br>
>>  #<br>
>> -<br>
>> +%define spike_version 01252686902fa30665fbecfc1476d169ad1333d1<br>
>>  %if %{release} == %{nil}<br>
>>  %define release 1<br>
>>  %endif<br>
>><br>
>> This worked successfully and the build ran fine. I am going to upload the entire python pycli project on the github in a couple of hours.<br>
>><br>
>> The main part of the python script that did the work is here:<br>
>><br>
>> '''import re<br>
>><br>
>> def replace(oldstring, newstring, infile, dryrun=False):<br>
>>     '''<br>
>>     Sed-like Replace<br>
>>     Usage: pycli <Old string>  <Replacement String> <Text File><br>
>>     Example: pycli 'xyz' 'XYZ' '/path/to/file.txt'<br>
>>     '''<br>
>>     linelist = []<br>
>>     with open(infile) as f:<br>
>>         for item in f:<br>
>>             newitem = re.sub(oldstring, newstring, item)<br>
>>             linelist.append(newitem)<br>
>>     if dryrun == False:<br>
>>         with open(infile, "w") as f:<br>
>>             f.truncate()<br>
>>             for line in linelist: f.writelines(line)<br>
>>     elif dryrun == True:<br>
>>         for line in linelist: print(line, end='')<br>
>>     else:<br>
>>         exit("Unknown option specified to 'dryrun' argument, Usage: dryrun=<True|False>.")'''<br>
>><br>
>> Please do give the feedback if this has been done in the right way?<br>
>><br>
>> Thanks<br>
>> Mritunjay Sharma<br>
>><br>
>><br>
>><br>
>> On Fri, Aug 14, 2020 at 3:13 AM Mritunjay Sharma <<a href="mailto:mritunjaysharma394@gmail.com" target="_blank">mritunjaysharma394@gmail.com</a>> wrote:<br>
>>><br>
>>> Hello everyone,<br>
>>><br>
>>> Based on the input received by Gedare, I have started working<br>
>>> on finding a 'sed' alternative to be used in the RSB recipes to<br>
>>> do streamline text replacements.<br>
>>><br>
>>> I have gone through the Python Development Guidelines (<a href="https://docs.rtems.org/branches/master/eng/python-devel.html" rel="noreferrer" target="_blank">https://docs.rtems.org/branches/master/eng/python-devel.html</a>)<br>
>>> and have installed the things suggested in this for the development<br>
>>> environment.<br>
>>><br>
>>> To start with the research work, I found this interesting<br>
>>> the discussion here <a href="https://unix.stackexchange.com/questions/13711/differences-between-sed-on-mac-osx-and-other-standard-sed" rel="noreferrer" target="_blank">https://unix.stackexchange.com/questions/13711/differences-between-sed-on-mac-osx-and-other-standard-sed</a> that gave me an idea<br>
>>> on how sed differs in BSD and UNIX platforms.<br>
>>><br>
>>> I learnt about differences like:<br>
>>> `OS X's sed uses -E for ERE and GNU sed uses -r. -E is an alias for -r in GNU sed (added in 4.2, not documented until 4.3). Newer versions of FreeBSD and NetBSD sed support both -E and -r. OpenBSD sed only supports -E.<br>
>>> `<br>
>>><br>
>>> I also found a similar project <a href="https://github.com/chmln/sd" rel="noreferrer" target="_blank">https://github.com/chmln/sd</a> which can help us in<br>
>>> developing the Python code needed in our case.<br>
>>><br>
>>> I would request the mentors to guide me on how and where to begin from<br>
>>> in writing this alternative?<br>
>>> Where do I have to write it? Is it the rtems-tools project (<a href="https://github.com/RTEMS/rtems-tools" rel="noreferrer" target="_blank">https://github.com/RTEMS/rtems-tools</a>) where I have to contribute to for building this alternative?<br>
>>><br>
>>> Thanks<br>
>>> Mritunjay Sharma<br>
</blockquote></div></div></div>