GSOC project: #4334 Replace Mongoose with Civetweb

Ayushman Mishra ayushvidushi01 at gmail.com
Wed Mar 31 09:18:26 UTC 2021


Sir,
I am trying to integrate mongoose web-server in simple rtems
application (https://devel.rtems.org/wiki/Developer/Mongoose_Web_Server),
for that I have to configure networking in rtems. I am using
xilinx_zynq_a9_qemu for simulation bsp and following steps given here
https://git.rtems.org/rtems-libbsd/tree/README.md but after doing
./waf install , i was not able to find qemu-system-arm in any
directory , I did sudo apt-get install qemu but then also
qemu-system-arm was not found . I discussed in discord channel and
started using rsb recipe devel/qemu4 (
$ ../source-builder/sb-set-builder --prefix=<TOOLCHAIN_DIR>
devel/qemu4.bset ) present in branch 5 of rsb ( since master branch
doesn't have qemu4.bset ) but after building for few minutes it gave
BUILD FAILED error
( Last lines of error report:
 ../../glib-2.46.2/gio/gdbusauth.c: In function '_g_dbus_auth_run_server':
../../glib-2.46.2/gio/gdbusauth.c:1295:11: error: '%s' directive
argument is null [-Werror=format-overflow=]
 1295 |           debug_print ("SERVER: WaitingForBegin, read '%s'", line);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [Makefile:3624: libgio_2_0_la-gdbusauth.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory
'/home/ayush/quick-start1/src/rsb/rtems/build/glib-2.46.2-x86_64-linux-gnu-1/build/gio'
make[3]: *** [Makefile:4094: all-recursive] Error 1
make[3]: Leaving directory
'/home/ayush/quick-start1/src/rsb/rtems/build/glib-2.46.2-x86_64-linux-gnu-1/build/gio'
make[2]: *** [Makefile:1861: all] Error 2
make[2]: Leaving directory
'/home/ayush/quick-start1/src/rsb/rtems/build/glib-2.46.2-x86_64-linux-gnu-1/build/gio'
make[1]: *** [Makefile:1212: all-recursive] Error 1
make[1]: Leaving directory
'/home/ayush/quick-start1/src/rsb/rtems/build/glib-2.46.2-x86_64-linux-gnu-1/build'
make: *** [Makefile:854: all] Error 2
shell cmd failed: /bin/sh -ex
/home/ayush/quick-start1/src/rsb/rtems/build/glib-2.46.2-x86_64-linux-gnu-1/do-build
error: building glib-2.46.2-x86_64-linux-gnu-1
)
I think i am really stuck here and I would be highly obliged if you
can please provide some guidance in configuring networking and
integrating mongoose with simple rtems application.

Also I think creating a separate repository like rtems-civetweb would
make the tree more clearer to understand and easy to build and install
, since integrating it with rsb like a package may sometimes cause
build failed due to bugs in rsb.
thanks , Ayushman

On Tue, Mar 30, 2021 at 12:16 PM Christian MAUDERER
<christian.mauderer at embedded-brains.de> wrote:
>
> Hello Ayushman, hello Gedare,
>
> Am 29.03.21 um 18:50 schrieb Gedare Bloom:
> > CC: Christian
> >
> > On Mon, Mar 29, 2021 at 10:34 AM Ayushman Mishra
> > <ayushvidushi01 at gmail.com> wrote:
> >>
> >> Sir ,
> >> It would be very helpful to know about potential mentors of (Replace mongoose with civetweb) https://devel.rtems.org/ticket/4334 this project.
> >>
> > I think Christian is the most likely potential mentor.
> >
>
> Possible for the civetweb part. I have done quite a bit with mongoose or
> later civetweb. So most likely I should at least help on this project.
> But I don't think that building civetweb will be the critical part here.
> That is quite straightforward.
>
> The more tricky part of the project will be to find a way to make the
> configuration options available to the users. That means either creating
> a repo (similar to for example rtems-littlevgl) or some integration into
> RSB (no idea how to add options there). We should try to get someone
> with more experience in that area into this project too.
>
> >> On Mon, Mar 29, 2021, 9:39 PM Gedare Bloom <gedare at rtems.org> wrote:
> >>>
> >>> On Mon, Mar 29, 2021 at 9:49 AM Ayushman Mishra
> >>> <ayushvidushi01 at gmail.com> wrote:
> >>>>
> >>>> I have installed libbsd package (made
> >>>> RTEMS_POSIX_API=True,RTEMS_NETWORKING=True in config.ini file to
> >>>> enable POSIX and networking) but I am still confused about the work
> >>> That doesn't look right. RTEMS_NETWORKING=True enables the legacy
> >>> network stack. If you want to build libbsd, you need to check out
> >>> https://git.rtems.org/rtems-libbsd/
> >>>
> >>>> already done in this project in past. Also after interacting on
> >>>> discord I think completely replacing  mongoose with another web-server
> >>>> is not a good option since it may rise some user complaints who are
> >>>> already using old system and may find it difficult to instantly switch
> >>>> over to new system , instead civetweb can be added as an extra new
> >>>> web-server where user has a choice to either use old mongoose or the
> >>>> new web server both having all dependencies and functionalities
> >>>> available.
> >>>>
> >>> No, we will replace mghttpd with civetweb. Anyone who still wants the
> >>> frozen version of mghttpd can revive it, but we want to replace it
> >>> moving forward.
>
> Agreed. We maybe can leave some hints where to get the current version
> of mghttpd (basically a commit number, a path and current build
> options). If someone really want's to continue using mghttpd, he can
> then copy the files into his application build. But the old version we
> have is now a lot behind the master and most likely has a lot of bugs
> and quite some security holes.
>
> >>>
> >>>> Also I still don't know whether the project #4334 is long enough for
> >>>> summer of code project and after going through docs I think
> >>> There are other activities involved in getting civetweb to work well
> >>> with RTEMS. It should be sufficient, but you would need to flesh out
> >>> the proposal details with mentor assistance. To be clear, it will be
> >>> C/network programming.
> >>>
>
> Civetweb also has a lot of different features. If building with basic
> features is not enough for the project, we can pile different
> configurations on top of it ;-)
>
> I think that we should target at least two configurations:
>
> 1. Minimal functionality as http server.
>
> 2. Integration with OpenSSL (most likely the version from libbsd) so
> that we can use https.
>
> Having two configurations makes it necessary to create a build
> environment that allows having configurations. That is a good start for
> further extensions.
>
> Best regards
>
> Christian
>
> >>>> https://devel.rtems.org/ticket/4272 is also a very interesting project
> >>>> since now I think I know a little bit about BSPs and I am good in
> >>>> python and know shell-scripting. I would be very grateful to know more
> >>>> about this project.
> >>> You should start a new thread to discuss this project. I thought
> >>> someone else may have inquired about this, maybe it was you? I didn't
> >>> see any response yet, but probably because it was buried in other
> >>> content (like this comment) so likely the potential mentor didn't even
> >>> notice it, especially since all you mention here is the ticket number.
> >>>
> >>> Gedare
> >>>
> >>>> Thanks.
> >>>>
> >>>> On Sat, Mar 27, 2021 at 5:36 PM Ayushman Mishra
> >>>> <ayushvidushi01 at gmail.com> wrote:
> >>>>>
> >>>>> Greetings to all the respected mentors,
> >>>>> 1. I saw there has been a lot of discussion regarding replacing
> >>>>> mongoose with civetweb (
> >>>>> https://lists.rtems.org/pipermail/devel/2016-April/014661.html ).
> >>>>> I think the basic outline of the project is like this
> >>>>> a. Completely removing mongoose and replace it with civetweb and make
> >>>>> it configurable in rsb
> >>>>> b. check the parameters and options available in civetweb and make it
> >>>>> usable for users in rtems.
> >>>>> c. making test-cases for civetweb (should be similar to mongoose)
> >>>>> d. documentation of using civetweb and web-server in general.
> >>>>> I would be very grateful to know what is the actual current status of
> >>>>> this project and the coding involved in it enough for a summer of code
> >>>>> project or some extra things should be added in it.
> >>>>>
> >>>>> Also,
> >>>>> 2. I have build bsp on rtems6 and a simple application is working
> >>>>> correct, but while trying to build libbsd package in rtems6
> >>>>> (../source-builder/sb-set-builder --prefix=$HOME/quick-start/rtems/6 \
> >>>>>    --host=sparc-rtems6 --with-rtems-bsp=erc32 6/rtems-libbsd ) I am
> >>>>> constantly getting build failed
> >>>>> RTEMS Source Builder - Set Builder, 6 (ade089253e70)
> >>>>> Build Set: 6/rtems-libbsd
> >>>>> config: tools/rtems-libbsd-6.cfg
> >>>>> error: rtems-bsp.cfg:155: invalid %if operator:  -mcpu=cypress
> >>>>> -I/home/ayush/quick-start/rtems/6/sparc-rtems6/erc32/lib/include ==
> >>>>> Build FAILED
> >>>>> Build Set: Time 0:00:00.045392
> >>>>> Build FAILED
> >>>>>
> >>>>> I also tried building all packages for bsp erc32
> >>>>> (../source-builder/sb-set-builder --prefix=$HOME/quick-start/rtems/6 \
> >>>>>      --with-rtems-tests=yes bsps/erc32) but after building for more
> >>>>> than an hour it also gave build failed error.
> >>>>> building: sparc-rtems6-kernel-erc32-1
> >>>>> error: building sparc-rtems6-kernel-erc32-1
> >>>>> Build FAILED
> >>>>>    See error report: rsb-report-sparc-rtems6-kernel-erc32-1.txt
> >>>>> error: building sparc-rtems6-kernel-erc32-1
> >>>>> Build Set: Time 0:23:14.195494
> >>>>> error: building sparc-rtems6-kernel-erc32-1
> >>>>> Build Set: Time 3:55:05.826612
> >>>>> Build FAILED
> >>>>>
> >>>>> Thanks, Ayushman
> >>>>>
> >>>>> On Mon, Mar 22, 2021 at 6:37 AM Ayushman Mishra
> >>>>> <ayushvidushi01 at gmail.com> wrote:
> >>>>>>
> >>>>>> Thanks a lot for help and information , actually i am trying to setup
> >>>>>> mongoose on simple rtems application
> >>>>>> (https://devel.rtems.org/wiki/Developer/Mongoose_Web_Server) and for
> >>>>>> that right now I am trying to configure networking and file-system in
> >>>>>> the application.
> >>>>>>
> >>>>>> On Sun, Mar 21, 2021 at 8:54 PM Joel Sherrill <joel at rtems.org> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Sun, Mar 21, 2021, 4:45 AM Christian Mauderer <oss at c-mauderer.de> wrote:
> >>>>>>>>
> >>>>>>>> Hello Ayushman,
> >>>>>>>>
> >>>>>>>> On 21/03/2021 04:15, Ayushman Mishra wrote:
> >>>>>>>>> Ayushman
> >>>>>>>>> Hello everyone , I am very much interested in taking
> >>>>>>>>> https://devel.rtems.org/ticket/4334
> >>>>>>>>> as a GSOC 2021 project. I know some basic networking concepts and would like to
> >>>>>>>>> learn more about it and how its applied to OS like RTEMS , regarding
> >>>>>>>>> this I have some questions.
> >>>>>>>>
> >>>>>>>> Note that the ticket will be more about integrating civetweb into a
> >>>>>>>> RTEMS Source Builder (RSB) recipe and finding a way to make it
> >>>>>>>> configurable there. Alternative could be some kind of stand alone repo
> >>>>>>>> like for littlevgl.
> >>>>>>>
> >>>>>>>
> >>>>>>> Making the civitweb configure options available to RTEMS user is a key point.
> >>>>>>>
> >>>>>>> It may make sense to do a repo with waf build system and config.ini that maps to their settings.
> >>>>>>>
> >>>>>>>>
> >>>>>>>> civetweb builds on RTEMS nearly out of the box. So don't expect too much
> >>>>>>>> C-Code.
> >>>>>>>
> >>>>>>>
> >>>>>>> I set it up recently on Linux for embedding in their application. As you turned on options, it had more dependencies. This would have to be managed with RTEMS.
> >>>>>>>
> >>>>>>>>
> >>>>>>>> I'm not yet sure how much work will be on that ticket. If it is too few
> >>>>>>>> for a whole GSoC, you might want to think about reviving the discussion
> >>>>>>>> about some useful civetweb parameters (for an embedded system) here:
> >>>>>>>>
> >>>>>>>>       https://github.com/civetweb/civetweb/pull/297
> >>>>>>>
> >>>>>>>
> >>>>>>> +1
> >>>>>>>
> >>>>>>> How to present the options to the user and manage their dependencies would be a key part of this.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>>
> >>>>>>>>> 1. After building a simple hello world application how and where should i write
> >>>>>>>>> configurations of
> >>>>>>>>> https://docs.rtems.org/branches/master/networking/using_networking_rtems_app.html
> >>>>>>>>> OR  https://docs.rtems.org/branches/master/user/migration/v4_11-to-v5.html#networking
> >>>>>>>>> to start using networking stack in RTEMS .
> >>>>>>>>
> >>>>>>>> The documentation is currently mostly for the legacy stack. Please
> >>>>>>>> ignore most of that. You should focus on a BSP that uses libbsd. The
> >>>>>>>> legacy stack and it's documentation will be removed from the main repos
> >>>>>>>> soon.
> >>>>>>>>
> >>>>>>>>> Also I think a simple shell has to be spawned to use networking modules in RTEMS
> >>>>>>>>> and for getting it this
> >>>>>>>>> https://docs.rtems.org/branches/master/shell/configuration_and_init.html#attached-to-a-serial-port
> >>>>>>>>> I think could be a simple method and for doing so ( like executing
> >>>>>>>>> rtems_shell_init with parameters )
> >>>>>>>>> do i have to run the specific test in testsuite or re-run the application
> >>>>>>>>
> >>>>>>>> There is a "mghttpd01" test in rtems-libbsd which is used for the
> >>>>>>>> current fixed version of mongoose that is integrated in RTEMS. I would
> >>>>>>>> suggest to use that as a starting point.
> >>>>>>>>
> >>>>>>>>>
> >>>>>>>>> 2. Is there any specific device or bsp needed for running networking
> >>>>>>>>> or shell configurations
> >>>>>>>>> with file-system in RTEMS
> >>>>>>>>
> >>>>>>>> Basically you can use every BSP that has network support. A good
> >>>>>>>> simulation BSP where you don't need any hardware is xilinx_zynq_a9_qemu:
> >>>>>>>>
> >>>>>>>> https://docs.rtems.org/branches/master/user/bsps/bsps-arm.html#debugging-with-xilinx-zynq-a9-qemu
> >>>>>>>>
> >>>>>>>> Best Regards
> >>>>>>>>
> >>>>>>>> Christian
> >>>>>>>>
> >>>>>>>>> I would be very thankful if someone can please clarify my doubts and
> >>>>>>>>> guide me further
> >>>>>>>>> with this project as I am getting lost and don't know how to proceed
> >>>>>>>>> after building a simple application.
> >>>>>>>>> Thank-you
> >>>>>>>>> _______________________________________________
> >>>>>>>>> devel mailing list
> >>>>>>>>> devel at rtems.org
> >>>>>>>>> http://lists.rtems.org/mailman/listinfo/devel
> >>>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> devel mailing list
> >>>>>>>> devel at rtems.org
> >>>>>>>> http://lists.rtems.org/mailman/listinfo/devel
> >>>> _______________________________________________
> >>>> devel mailing list
> >>>> devel at rtems.org
> >>>> http://lists.rtems.org/mailman/listinfo/devel
>
> --
> --------------------------------------------
> embedded brains GmbH
> Herr Christian MAUDERER
> Dornierstr. 4
> 82178 Puchheim
> Germany
> email: christian.mauderer at embedded-brains.de
> phone: +49-89-18 94 741 - 18
> fax:   +49-89-18 94 741 - 08
>
> Registergericht: Amtsgericht München
> Registernummer: HRB 157899
> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
> Unsere Datenschutzerklärung finden Sie hier:
> https://embedded-brains.de/datenschutzerklaerung/


More information about the devel mailing list