All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC] New feature to handle a custom board folder
@ 2013-09-06 18:45 Ryan Barnett
  2013-09-09 16:53 ` Arnout Vandecappelle
  0 siblings, 1 reply; 3+ messages in thread
From: Ryan Barnett @ 2013-09-06 18:45 UTC (permalink / raw)
  To: buildroot

All,

I would like to introduce a new concept I've got for how the board
folder is brought into buildroot. I propose adding a feature to
buildroot to treat the board folder as a package. In treating the board
folder as a package, it would allow a board folder to be downloaded
using currently supported methods of packages (HG/Git/SVN/archives from
websites). It would be placed as an archive in the DL_DIR and extracted
to BUILD_DIR/board. I will go into more detail further down about the
structure.

The motivation for this feature is that most of the customization done
to buildroot in order to support  a project (board) is usually
contained to a board folder. However, in many work environments in
which buildroot is used, GIT isn't a preferred version control method
(mine included) so being able to track mainline of buildroot is very
difficult.

NOTE: I haven't attempted to implement this yet as this an idea that 
is still in its infancies. 

Theory
---------
In theory the custom board folder structure would work as follows:

1. User specifies the custom board folder in menuconfig
    a. Initial though would to place it as follows in menuconfig

Target Options 
 > Target Board Folder Type 
     > No Custom Board Folder (default)
     > External Custom Board Folder
 > Target Board Folder Site Method
     > Git
     > HG
     > SVN
     > List goes on...
 > Board folder contains custom applications
     COMMENTARY: This feature allows the use for downloading and building
     a company's custom applications that need to place in the release.
 > (Future Option) Check folder out using method above
     COMMENTARY: This feature would be useful during development of 
     board folder to allow the actual checkout board folder to the 
BUILD_DIR
     to allow for modifications tha easily pushed back.

Target Packages
 > Text editor and viewers
 > Custom board applications
    > App A
    > App B
 
    COMMENTARY: the custom board applications would only appear when 
    "Board folder contains custom applications" is enabled. The 
application 
    list from custom board applications would be sourced an applications 
folder
    within the custom board folder. These apps wouldn't display until the 
board
    folder is actually extract. 
 
    One issue I see with this is how the makefile structure would handle 
    building without the board folder checked out and the make rules for 
these 
    packages being defined.

2. Board folder structure would be as follows:

> BUILD_DIR
   > board (new)
      > kernel-patches
      > local-skeleton
      > packages (this would be the board specific packages)
      > uboot-patches
      > config files
   > build
   > host
   > target

3. User says "make board-folder" and the custom board folder is extracted

4. The user can say "make menuconfig" and their board customization will 
   appear and would be available for selection.

5. User say "make" and buildroot builds them their system

Summary
--------
With adding this feature to buildroot, it will help companies/users easily 

bring in their customization into buildroot with just using a defconfig.

Please provide me with feedback in if this idea is feasible/be useful. I'm 

also very open suggestions to help make this a reality.




Ryan J Barnett / Software Engineer / Platform SW 
MS 137-157, 855 35th St NE, Cedar Rapids, IA, 52498-3161, US
Phone: 319-263-3880 / VPN: 263-3880 
rjbarnet at rockwellcollins.com
www.rockwellcollins.com 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130906/73d37c78/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 2004 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130906/73d37c78/attachment.gif>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] [RFC] New feature to handle a custom board folder
  2013-09-06 18:45 [Buildroot] [RFC] New feature to handle a custom board folder Ryan Barnett
@ 2013-09-09 16:53 ` Arnout Vandecappelle
  2013-09-10  1:28   ` rjbarnet at rockwellcollins.com
  0 siblings, 1 reply; 3+ messages in thread
From: Arnout Vandecappelle @ 2013-09-09 16:53 UTC (permalink / raw)
  To: buildroot

  Hi Ryan,

On 06/09/13 20:45, Ryan Barnett wrote:
> All,
>
> I would like to introduce a new concept I've got for how the board
> folder is brought into buildroot.  I propose adding a feature to
> buildroot to treat the board folder as a package. In treating the board
> folder as a package, it would allow a board folder to be downloaded
> using currently supported methods of packages (HG/Git/SVN/archives from
> websites). It would be placed as an archive in the DL_DIR and extracted
> to BUILD_DIR/board. I will go into more detail further down about the
> structure.

  Something like this has been proposed in buildroot several times 
already (including by me), and it has been rejected every time. The main 
reasons for rejection is that it adds a lot of complexity, while the 
current setup is already very simple and feature-complete for the user. 
See below for an explanation why your proposal is very complicated.

  The simple way to do it is as follows:

- import buildroot in your VCS;

- create directory 'package/mycompany';

- add 'source package/mycompany/Config.in' to package/Config.in;

- create directory 'board/mycompany';

- create file 'configs/mycompanyboard_defconfig'.


  Since the diff to mainline is limited to a bunch of new files and a 
single line change in package/Config.in, merging is normally not an issue.


> The motivation for this feature is that most of the customization done
> to buildroot in order to support  a project (board) is usually
> contained to a board folder. However, in many work environments in
> which buildroot is used, GIT isn't a preferred version control method
> (mine included) so being able to track mainline of buildroot is very
> difficult.

  That's a situation that we didn't expect, I think. In most company 
environments, buildroot is only occasionally updated. Also, you would 
typically require buildroot to be maintained under the "preferred version 
control method", because you make some changes - cfr. all the changes 
that you're upstreaming now.

  Also, keeping the buildroot integration files for proprietary packages 
outside of the buildroot tree makes your repository a bit messy. Putting 
this stuff inside the buildroot tree is cleaner and more understandable.


> NOTE: I haven't attempted to implement this yet as this an idea that
> is still in its infancies.
>
> Theory
> ---------
> In theory the custom board folder structure would work as follows:
>
> 1. User specifies the custom board folder in menuconfig
>      a. Initial though would to place it as follows in menuconfig
>
> Target Options
>   > Target Board Folder Type
>       > No Custom Board Folder (default)
>       > External Custom Board Folder
>   > Target Board Folder Site Method
>       > Git
>       > HG
>       > SVN
>       > List goes on...
>   > Board folder contains custom applications
>       COMMENTARY: This feature allows the use for downloading and building
>       a company's custom applications that need to place in the release.
>   > (Future Option) Check folder out using method above
>       COMMENTARY: This feature would be useful during development of
>       board folder to allow the actual checkout board folder to the
> BUILD_DIR
>       to allow for modifications tha easily pushed back.
>
> Target Packages
>   > Text editor and viewers
>   > Custom board applications
>      > App A
>      > App B
>
>      COMMENTARY: the custom board applications would only appear when
>      "Board folder contains custom applications" is enabled. The application
>      list from custom board applications would be sourced an applications
> folder
>      within the custom board folder. These apps wouldn't display until
> the board
>      folder is actually extract.

  Because of limitations in the Kconfig tool, this is very difficult to 
do in practice. You need some serious patching of Kconfig, and even then 
it probably doesn't work very well. A patch was submitted that attempted 
to implement this about a year ago IIRC.


>      One issue I see with this is how the makefile structure would handle
>      building without the board folder checked out and the make rules for
> these
>      packages being defined.

  Yeah, that was not even supported by the patch I mentioned above.


> 2. Board folder structure would be as follows:
>
>  > BUILD_DIR
>     > board (new)
>        > kernel-patches
>        > local-skeleton
>        > packages (this would be the board specific packages)
>        > uboot-patches
>        > config files
>     > build
>     > host
>     > target
>
> 3. User says "make board-folder" and the custom board folder is extracted
>
> 4. The user can say "make menuconfig" and their board customization will
>     appear and would be available for selection.
>
> 5. User say "make" and buildroot builds them their system

  This is making things a lot more difficult for the user, compared to 
when everything would just be in the buildroot tree, no?


  Regards,
  Arnout

>
> Summary
> --------
> With adding this feature to buildroot, it will help companies/users easily
> bring in their customization into buildroot with just using a defconfig.
>
> Please provide me with feedback in if this idea is feasible/be useful. I'm
> also very open suggestions to help make this a reality.
>
> -------------------------------------------------------------------------
> 	*Ryan J Barnett* / Software Engineer / Platform SW
> MS 137-157, 855 35th St NE, Cedar Rapids, IA, 52498-3161, US
> Phone: 319-263-3880 / VPN: 263-3880 _
> __rjbarnet at rockwellcollins.com_ <mailto:rjbarnet@rockwellcollins.com>_
> __www.rockwellcollins.com_ <http://www.rockwellcollins.com/>
>
>
>
>
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] [RFC] New feature to handle a custom board folder
  2013-09-09 16:53 ` Arnout Vandecappelle
@ 2013-09-10  1:28   ` rjbarnet at rockwellcollins.com
  0 siblings, 0 replies; 3+ messages in thread
From: rjbarnet at rockwellcollins.com @ 2013-09-10  1:28 UTC (permalink / raw)
  To: buildroot

Hi Arnout -

Thanks for the feedback. Please see my responses to your comments below.

Arnout Vandecappelle <arnout@mind.be> wrote on 09/09/2013 11:53:53 AM:

>   Hi Ryan,
>
> On 06/09/13 20:45, Ryan Barnett wrote:
> > All,
> >
> > I would like to introduce a new concept I've got for how the board
> > folder is brought into buildroot.  I propose adding a feature to
> > buildroot to treat the board folder as a package. In treating the 
board
> > folder as a package, it would allow a board folder to be downloaded
> > using currently supported methods of packages (HG/Git/SVN/archives 
from
> > websites). It would be placed as an archive in the DL_DIR and 
extracted
> > to BUILD_DIR/board. I will go into more detail further down about the
> > structure.
>
>   Something like this has been proposed in buildroot several times
> already (including by me), and it has been rejected every time. The main
> reasons for rejection is that it adds a lot of complexity, while the
> current setup is already very simple and feature-complete for the user.
> See below for an explanation why your proposal is very complicated.

During my search of the mailing list archives I did not come across any
of this proposals. I probably didn't come up with the correct search
terms to find this however.

>
>   The simple way to do it is as follows:
>
> - import buildroot in your VCS;
>
> - create directory 'package/mycompany';
>
> - add 'source package/mycompany/Config.in' to package/Config.in;
>
> - create directory 'board/mycompany';
>
> - create file 'configs/mycompanyboard_defconfig'.

Yes - currently this is the way that we are doing this. However, the 
problem
my company faces is that we have to spread buildroot configurations for 
boards over
multiple different repositories. This means that we have around 10-15 
different
check-in's of buildroot. For various reasons, there are things in the 
board
folder that have to be kept in the different repositories. Allowing the 
board
folder to be checked out from a configuration file would help us eliminate 
this
need to have so many different version of buildroot in our environment.

In proposing this idea - I was hoping that I could remove the reasons for 
keeping
so many versions of buildroot in different repositories.

>   Since the diff to mainline is limited to a bunch of new files and a
> single line change in package/Config.in, merging is normally not an 
issue.

In my ideal world, managing the diff to mainline would be easy with GIT 
but
using SVN it not quite as easy though possible.

> > The motivation for this feature is that most of the customization done
> > to buildroot in order to support  a project (board) is usually
> > contained to a board folder. However, in many work environments in
> > which buildroot is used, GIT isn't a preferred version control method
> > (mine included) so being able to track mainline of buildroot is very
> > difficult.
>
>   That's a situation that we didn't expect, I think. In most company
> environments, buildroot is only occasionally updated. Also, you would
> typically require buildroot to be maintained under the "preferred 
version
> control method", because you make some changes - cfr. all the changes
> that you're upstreaming now.

I agree that buildroot be maintained under the "preferred VCS" as things
stand now. However, if the only modifications made to buildroot are
limited to a "board folder", the requirement to maintain the whole
of buildroot in the "preferred VCS" could be removed.

Another motivation for this is that during a development cycle for a board
we would like to easily track mainline. So we could constantly follow
buildroot mainline - using git- until we have to lock it down which is 
when
we go to verification of the board/software where we lock the board down 
to
a specific stable release of buildroot.

As for changes that would make to mainline (minus board folder and custom
packages), it would become easy for us to submit patches to mainline.

We have gone through the development process a couple times with the board
folder method you mentioned above, but our biggest challenge we always run
into is trying to distinguish "our" changes from buildroot's because we 
have
usually merged in some sort of patches from mainline buildroot and have 
trouble distinguishing what changes were ours vs. ones that came from you 
guys.
Since SVN doesn't have a good way to import GIT patches and make sure you 
know that those changes were from an external source (other than to go 
through the SVN Log).

>   Also, keeping the buildroot integration files for proprietary packages
> outside of the buildroot tree makes your repository a bit messy. Putting
> this stuff inside the buildroot tree is cleaner and more understandable.

Agreed with more understandable but reason above could be modification of 
why it might now always be the cleanest.

> >      COMMENTARY: the custom board applications would only appear when
> >      "Board folder contains custom applications" is enabled. The 
application
> >      list from custom board applications would be sourced an 
applications
> > folder
> >      within the custom board folder. These apps wouldn't display until
> > the board
> >      folder is actually extract.
>
>   Because of limitations in the Kconfig tool, this is very difficult to
> do in practice. You need some serious patching of Kconfig, and even then
> it probably doesn't work very well. A patch was submitted that attempted
> to implement this about a year ago IIRC.

This was my fear but I was hoping for the best.

Do you guys have any other ideas for this problem? I would really like 
hear other
ways that could possibly lead to compromise. One idea that is coming to 
mind
now as I type response is to treat the various things that are usually 
board
specific as packages.

I was thinking that packages could be added for the following:
 * Extend Rootfs Overlay to allow downloading of an overlay
 * Allow downloading of configs
 * Allow downloading of kernel patches
 * Allow downloading of u-boot patches
     COMMENTARY: I don't know if there could be a more generic 
implementation
     of this where any application that allows custom patches, could 
utilize
     the downloading of patches from some site.
 * Package that allows building of "custom app"
     COMMENTARY: this custom app would probably build more than just one
     application but could install by copying to a "install" directory 
which
     would then be overlaid to the target.

I understand that this may add more complications to buildroot and deviate 
a
bit from the current "simple" way buildroot works now. I hope though that 
I've
illustrated that this "simple" method isn't always so simple for companies 
that
don't have the ability to use GIT as their preferred VCS.

> > 5. User say "make" and buildroot builds them their system
>
>   This is making things a lot more difficult for the user, compared to
> when everything would just be in the buildroot tree, no?
>
>
>   Regards,
>   Arnout

Bottom line: the motivation  for these changes is to 1) reduce the number 
of
modified version of builroot we have and 2) allow me to take a snapshot of
buildroot and use it without custom modification to it.

At the end of the day I'm probably digging myself into a hole here but I 
hope
I've illustrated my reasoning behind this and hopefuly can make case for
something like this being incorporated into buildroot. Maybe someday I'll 
be
able to achieve my nirvana of having a buildroot where the only changes 
that
need to be made are to a "defconfig".

Thanks,
-Ryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130909/09db20ef/attachment-0001.html>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-09-10  1:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-06 18:45 [Buildroot] [RFC] New feature to handle a custom board folder Ryan Barnett
2013-09-09 16:53 ` Arnout Vandecappelle
2013-09-10  1:28   ` rjbarnet at rockwellcollins.com

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.