<div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 15, 2019 at 3:46 AM Chris Johns <<a href="mailto:chrisj@rtems.org">chrisj@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">On 15/8/19 2:07 am, Vijay Kumar Banerjee wrote:<br>
> I wrote a patch for lv_drivers repository to support FreeBSD framebuffer<br>
> in fbdev, which they merged to the master today. <br>
<br>
Well done, that is great.<br>
<br>
> I have tested<br>
> the driver to be working with an app that I wrote on FreeBSD and<br>
> tested it on Beaglebone black image 12-STABLE.<br>
<br>
Awesome.<br>
<br>
> I intend to write an RSB recipe to build littleVGL and seek some guidance<br>
> on how to proceed. :)<br>
<br>
Please review<br>
<a href="https://docs.rtems.org/branches/master/user/rsb/third-party-packages.html" rel="noreferrer" target="_blank">https://docs.rtems.org/branches/master/user/rsb/third-party-packages.html</a><br>
<br>
I suggest you see how the curl package is done. It is a nice clean example.<br>
<br>
The packages are sort of based on the FreeBSD ports layout. Littlevgl is not a<br>
port so we can use `graphics/littlevgl`.<br>
<br>
The file pattern used in the RSB for a 3rd party package is:<br>
<br>
- A buildset or bset file, this is the top level wrapper for the config files<br>
and selects the version to be built...<br>
<br>
<a href="https://git.rtems.org/rtems-source-builder/tree/rtems/config/ftp/curl.bset" rel="noreferrer" target="_blank">https://git.rtems.org/rtems-source-builder/tree/rtems/config/ftp/curl.bset</a><br>
<br>
- The version specific config file that sets the version and checksum for the<br>
package. It includes the build config or recipe...<br>
<br>
<a href="https://git.rtems.org/rtems-source-builder/tree/rtems/config/ftp/curl-7.65.1-1.cfg" rel="noreferrer" target="_blank">https://git.rtems.org/rtems-source-builder/tree/rtems/config/ftp/curl-7.65.1-1.cfg</a><br>
<br>
Note, this is a 3prd party package so includes `rtems-bsp.cfg`. This create a<br>
suitable environment to build a package for a BSP.<br>
<br>
- The build config file ...<br>
<br>
<a href="https://git.rtems.org/rtems-source-builder/tree/source-builder/config/curl-1.cfg" rel="noreferrer" target="_blank">https://git.rtems.org/rtems-source-builder/tree/source-builder/config/curl-1.cfg</a><br>
<br></blockquote><div>Hi,</div><div><br></div><div>I have some doubts regarding the build.</div><div>The lvgl needs two directoried, lvgl (main) and lv_drivers (for the driver). And on</div><div>top of both, there needs to be two header files to configure the library, lvgl_conf.h</div><div>and lvgl_drv_conf.h . These conf headers are supposed to be edited by the user</div><div>to set the options. Do we want to build both the directories separately?  Or do we</div><div>want to create our own directoy and put both driver and other stuffs in it?</div><div><br></div><div>Also, lvgl doesn't have its own makefile, so we have to write our own. in my</div><div>application, I included the .mk file in my app's makefile and added the build recipe</div><div>for it. How do we want to handle this in RSB? </div><div>If I create an lvgl tar with drivers and library in it, along with a makefile, will it go</div><div>into our ftp server somewhere?  Can this be an approach to build the whole stuff?</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
These configs do not include any other configs and could be used to build a<br>
native package for a host or a 3rd party package for RTEMS.<br>
<br>
- The `%prep` section prepares the source to build. For github if we are<br>
building from master we select a commit and fetch a compressed tarball. This<br>
means we can snapshot the source when making a release. The RSB can work<br>
directly with the git repo however this has proven to be more fragile than a<br>
tarball.<br>
<br>
- The `%build` section builds the package. The contents of this file are used to<br>
create a shell script. Use --dry-run, --trace and --log to debug what is<br>
happening. The shell script contents should be viewable in the log file if a dry<br>
run does not created it. There is a lot of trace but searching will help you<br>
locate the piece you are interested in. The `source_dir_*` shell variable is the<br>
directory created by extracting the tarfile. The macros `%{build_directory}` and<br>
`%{host_build_flags}` are defined in `<a href="http://defaults.mc" rel="noreferrer" target="_blank">defaults.mc</a>` and should handle the<br>
compiler and flags. You may want to check libbsd is installed in your config,<br>
see ...<br>
<br>
<a href="https://git.rtems.org/rtems-source-builder/tree/rtems/config/rtems-bsp.cfg#n198" rel="noreferrer" target="_blank">https://git.rtems.org/rtems-source-builder/tree/rtems/config/rtems-bsp.cfg#n198</a><br>
<br>
.. for an example of how to check and add `%error This package needs libbsd,<br>
please build and install` or something like that as an error. The paths to<br>
install to are set up for you, these match how a BSP and RTEMS are installed.<br>
The layout needs to be followed or applications will not be able to find the<br>
header or the library.<br>
<br>
- The `%install` section installs the package. The install process is to a<br>
staging area `${SB_BUILD_ROOT}`. Nothing is installed unless all parts build so<br>
we do not have an inconsistent build in the install prefix.<br>
<br>
Chris<br>
</blockquote></div></div>