All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] Project layout : where to put the .config files
       [not found] <1357102119.4889305.1391074415327.JavaMail.root@openwide.fr>
@ 2014-01-30  9:53 ` Jeremy Rosen
  2014-01-30  9:59   ` Thomas De Schampheleire
  2014-01-30 11:39   ` Mike Zick
  0 siblings, 2 replies; 10+ messages in thread
From: Jeremy Rosen @ 2014-01-30  9:53 UTC (permalink / raw)
  To: buildroot

Hello everybody

Buildroot is currently in the process of cleanly separating files
that are generated by buildroot and are throwaway files (in the 
output directory) from files that are configuration files (the
BR2_EXTERNAL directory) 

However the .config files used by buildroot and other kconfig
enabled software are not dealt with in a way that is consistant.

.config is the main buildroot configuration file. This is, more
than anything else "the project." It is the file we want to 
keep in git, share within a software project, be warned in 
case of conflict. However it is currently savedin the output 
directory. 

I am sending this mail to understand how the community see this
file, if there is something that needs to be changed to follow
the new separation and see what I can do to get this going.

(I will focus only in the buildroot .config file, the kernel,
busybox and uclibc ones can be worked out after that)

so, I have been looking around and there are a couple of
approches I can think of...


* keep the current approch

.config is considered a throw away file, it is logical that 
it is in output/ and it is normal that it is destroyed on a
regular basis.

I don't like this too much because, for a final product, it 
is the most important file, and a file that needs to be 
kept in git. I don't think it is very logical to have such
an important file be a hidden file and be in a directory that
is meant to be removed.

* keep the file as $(CONFIG_DIR)/.config, but document that
CONFIG_DIR can be overridden

This keeps the file as a hidden file, but it allows us to 
move it out of the output directory. Maybe CONFIG_DIR should
default to BR2_EXTERNAL instead of output/ (with some 
backward compatibility layer)

* allow to override the configuration file with env variables

Basically allow overriding BUILDROOT_CONFIG from the command
line. This would solve all the problems I have but I am not 
sure it follows the buildroot philosophy, thus the long mail.



This could be a subject for the buildroot days. If other people
are interested I can add it to the list of topics...


(note that I tried moving the kernel/busybox .config and it's 
more tricky than the buildroot one... maybe we need a generic
infrastructure for kconfig enabled packages...)


    Regards

    J?r?my Rosen

fight key loggers : write some perl using vim


Open Wide Ingenierie

23, rue Daviel
75013 Paris - France
www.openwide.fr

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30  9:53 ` [Buildroot] Project layout : where to put the .config files Jeremy Rosen
@ 2014-01-30  9:59   ` Thomas De Schampheleire
  2014-01-30 10:42     ` Jeremy Rosen
  2014-01-30 11:11     ` Sagaert Johan
  2014-01-30 11:39   ` Mike Zick
  1 sibling, 2 replies; 10+ messages in thread
From: Thomas De Schampheleire @ 2014-01-30  9:59 UTC (permalink / raw)
  To: buildroot

On Thu, Jan 30, 2014 at 10:53 AM, Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:
> Hello everybody
>
> Buildroot is currently in the process of cleanly separating files
> that are generated by buildroot and are throwaway files (in the
> output directory) from files that are configuration files (the
> BR2_EXTERNAL directory)
>
> However the .config files used by buildroot and other kconfig
> enabled software are not dealt with in a way that is consistant.
>
> .config is the main buildroot configuration file. This is, more
> than anything else "the project." It is the file we want to
> keep in git, share within a software project, be warned in
> case of conflict. However it is currently savedin the output
> directory.
>
> I am sending this mail to understand how the community see this
> file, if there is something that needs to be changed to follow
> the new separation and see what I can do to get this going.
>
> (I will focus only in the buildroot .config file, the kernel,
> busybox and uclibc ones can be worked out after that)
>
> so, I have been looking around and there are a couple of
> approches I can think of...
>
>
> * keep the current approch
>
> .config is considered a throw away file, it is logical that
> it is in output/ and it is normal that it is destroyed on a
> regular basis.
>
> I don't like this too much because, for a final product, it
> is the most important file, and a file that needs to be
> kept in git. I don't think it is very logical to have such
> an important file be a hidden file and be in a directory that
> is meant to be removed.
>
> * keep the file as $(CONFIG_DIR)/.config, but document that
> CONFIG_DIR can be overridden
>
> This keeps the file as a hidden file, but it allows us to
> move it out of the output directory. Maybe CONFIG_DIR should
> default to BR2_EXTERNAL instead of output/ (with some
> backward compatibility layer)
>
> * allow to override the configuration file with env variables
>
> Basically allow overriding BUILDROOT_CONFIG from the command
> line. This would solve all the problems I have but I am not
> sure it follows the buildroot philosophy, thus the long mail.
>
>
>
> This could be a subject for the buildroot days. If other people
> are interested I can add it to the list of topics...
>
>
> (note that I tried moving the kernel/busybox .config and it's
> more tricky than the buildroot one... maybe we need a generic
> infrastructure for kconfig enabled packages...)
>
>

I find it a strange strategy to put .config in git: this is why we
have the configs/ directory, and a target 'make savedefconfig' to
store the .config configuration in a defconfig file. If you don't like
defconfigs, you can still copy .config directly in the configs/
subdirectory.

Best regards,
Thomas

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30  9:59   ` Thomas De Schampheleire
@ 2014-01-30 10:42     ` Jeremy Rosen
  2014-01-30 11:00       ` Thomas De Schampheleire
  2014-01-30 11:11     ` Sagaert Johan
  1 sibling, 1 reply; 10+ messages in thread
From: Jeremy Rosen @ 2014-01-30 10:42 UTC (permalink / raw)
  To: buildroot

Thomas, All

> 
> I find it a strange strategy to put .config in git: this is why we
> have the configs/ directory, and a target 'make savedefconfig' to
> store the .config configuration in a defconfig file. If you don't
> like
> defconfigs, you can still copy .config directly in the configs/
> subdirectory.
> 
> Best regards,
> Thomas
> 

This is my own little project I am building here it is not a new
board I am trying to support. I have been bitten multiple times 
by .config not being saved until I do a savedefconfig. savedefconfig
should not be a "my change are good let's validate" step. That's 
what git commit is for.

Defconfigs are a great way to define templates for a board and
distribute them with buildroot, but when you are building a final
product they are not the right tool. 

In particular the fact that you have to do a savedefconfig before 
any git commit is very error prone. moreover savedefconfig won't
warn you if defconfig has been modified by a pull and will overwrite
it.

This is even worse for the kernel/busybox case where the config
files are hidden in output/build/xxx/.config

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30 10:42     ` Jeremy Rosen
@ 2014-01-30 11:00       ` Thomas De Schampheleire
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas De Schampheleire @ 2014-01-30 11:00 UTC (permalink / raw)
  To: buildroot

Hi Jeremy,

On Thu, Jan 30, 2014 at 11:42 AM, Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:
> Thomas, All
>
>>
>> I find it a strange strategy to put .config in git: this is why we
>> have the configs/ directory, and a target 'make savedefconfig' to
>> store the .config configuration in a defconfig file. If you don't
>> like
>> defconfigs, you can still copy .config directly in the configs/
>> subdirectory.
>>
>> Best regards,
>> Thomas
>>
>
> This is my own little project I am building here it is not a new
> board I am trying to support. I have been bitten multiple times
> by .config not being saved until I do a savedefconfig. savedefconfig
> should not be a "my change are good let's validate" step. That's
> what git commit is for.
>
> Defconfigs are a great way to define templates for a board and
> distribute them with buildroot, but when you are building a final
> product they are not the right tool.

This is probably personal, but I don't agree. The configs directory is
not limited to 'templates'. This may be the upstream strategy, but in
the repository for a particular project you are free to add one or
more full configs for that project.

>
> In particular the fact that you have to do a savedefconfig before
> any git commit is very error prone. moreover savedefconfig won't
> warn you if defconfig has been modified by a pull and will overwrite
> it.
>
> This is even worse for the kernel/busybox case where the config
> files are hidden in output/build/xxx/.config

You you could make a mistake, but in my experience mistakes the other
way around also happen: you accidentally commit a change to .config
that was just for test. This may be fine for your personal repo, but
in a work environment it's not very nice at all, especially if this is
realized only much later.

You could create commit hooks to verify that the .config files are in
line with the actual version-controlled versions, I guess.

Note again: this is just my opinion...

Best regards,
Thomas

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30  9:59   ` Thomas De Schampheleire
  2014-01-30 10:42     ` Jeremy Rosen
@ 2014-01-30 11:11     ` Sagaert Johan
  1 sibling, 0 replies; 10+ messages in thread
From: Sagaert Johan @ 2014-01-30 11:11 UTC (permalink / raw)
  To: buildroot

 
Hi

Besides .config ,I think it could be good to also save the kernel .config and the .config files of busybox and uclibc when doing a
make savedefconfig.
Therefore I always keep the kernel, busybox and uclibc config files in my board directory and use the the path to these my buildroot
config files.

Regards Johan

-----Oorspronkelijk bericht-----
Van: buildroot-bounces at busybox.net [mailto:buildroot-bounces at busybox.net] Namens Thomas De Schampheleire
Verzonden: donderdag 30 januari 2014 10:59
Aan: Jeremy Rosen
CC: buildroot
Onderwerp: Re: [Buildroot] Project layout : where to put the .config files

On Thu, Jan 30, 2014 at 10:53 AM, Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:
> Hello everybody
>
> Buildroot is currently in the process of cleanly separating files that 
> are generated by buildroot and are throwaway files (in the output 
> directory) from files that are configuration files (the BR2_EXTERNAL 
> directory)
>
> However the .config files used by buildroot and other kconfig enabled 
> software are not dealt with in a way that is consistant.
>
> .config is the main buildroot configuration file. This is, more than 
> anything else "the project." It is the file we want to keep in git, 
> share within a software project, be warned in case of conflict. 
> However it is currently savedin the output directory.
>
> I am sending this mail to understand how the community see this file, 
> if there is something that needs to be changed to follow the new 
> separation and see what I can do to get this going.
>
> (I will focus only in the buildroot .config file, the kernel, busybox 
> and uclibc ones can be worked out after that)
>
> so, I have been looking around and there are a couple of approches I 
> can think of...
>
>
> * keep the current approch
>
> .config is considered a throw away file, it is logical that it is in 
> output/ and it is normal that it is destroyed on a regular basis.
>
> I don't like this too much because, for a final product, it is the 
> most important file, and a file that needs to be kept in git. I don't 
> think it is very logical to have such an important file be a hidden 
> file and be in a directory that is meant to be removed.
>
> * keep the file as $(CONFIG_DIR)/.config, but document that CONFIG_DIR 
> can be overridden
>
> This keeps the file as a hidden file, but it allows us to move it out 
> of the output directory. Maybe CONFIG_DIR should default to 
> BR2_EXTERNAL instead of output/ (with some backward compatibility 
> layer)
>
> * allow to override the configuration file with env variables
>
> Basically allow overriding BUILDROOT_CONFIG from the command line. 
> This would solve all the problems I have but I am not sure it follows 
> the buildroot philosophy, thus the long mail.
>
>
>
> This could be a subject for the buildroot days. If other people are 
> interested I can add it to the list of topics...
>
>
> (note that I tried moving the kernel/busybox .config and it's more 
> tricky than the buildroot one... maybe we need a generic 
> infrastructure for kconfig enabled packages...)
>
>

I find it a strange strategy to put .config in git: this is why we have the configs/ directory, and a target 'make savedefconfig' to
store the .config configuration in a defconfig file. If you don't like defconfigs, you can still copy .config directly in the
configs/ subdirectory.

Best regards,
Thomas
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30  9:53 ` [Buildroot] Project layout : where to put the .config files Jeremy Rosen
  2014-01-30  9:59   ` Thomas De Schampheleire
@ 2014-01-30 11:39   ` Mike Zick
  2014-01-30 12:34     ` Jeremy Rosen
  1 sibling, 1 reply; 10+ messages in thread
From: Mike Zick @ 2014-01-30 11:39 UTC (permalink / raw)
  To: buildroot

On Thu, 30 Jan 2014 10:53:58 +0100 (CET)
Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:

> Buildroot is currently in the process of cleanly separating files
> that are generated by buildroot and are throwaway files (in the 
> output directory) from files that are configuration files (the
> BR2_EXTERNAL directory) 
>

Are you sure of that?

The discussion that I have seen here is that BR2_EXTERNAL tree
is for the "proprietary" files, not just configuration files.

Note: 
Here "proprietary" is used as a generalization for the
portion of the overall build tree that is not required to be
made public.

And:
This list has already had the discussion over how the .config
files should be considered.
I.E: Are they some of the "required public" files to meet the
requirements of Section 3 of the GPLv2 license.

Mike

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30 11:39   ` Mike Zick
@ 2014-01-30 12:34     ` Jeremy Rosen
  2014-01-30 13:54       ` Mike Zick
  0 siblings, 1 reply; 10+ messages in thread
From: Jeremy Rosen @ 2014-01-30 12:34 UTC (permalink / raw)
  To: buildroot




----- Mail original -----
> On Thu, 30 Jan 2014 10:53:58 +0100 (CET)
> Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:
> 
> > Buildroot is currently in the process of cleanly separating files
> > that are generated by buildroot and are throwaway files (in the
> > output directory) from files that are configuration files (the
> > BR2_EXTERNAL directory)
> >
> 
> Are you sure of that?
> 
> The discussion that I have seen here is that BR2_EXTERNAL tree
> is for the "proprietary" files, not just configuration files.
> 

That's was my understanding,yes...

> Note:
> Here "proprietary" is used as a generalization for the
> portion of the overall build tree that is not required to be
> made public.
> 

well, let's use another term. .config is not about having 
close source stuff in buildroot, it's about the configuration
of a project. The project I am building is here :
https://github.com/Openwide-Ingenierie/raspaudio
it's entirely free, but it's a livingroom audio station 
for my home, and buildroot only upstreams board 
defconfigs which are defined as the minimum setup to 
get the hardware to work correctly.

I am in a different use-case here, I am building a complete
appliance using buildroot. the defconfig approch doesn't 
really suit me and this as nothing to do with license.


> And:
> This list has already had the discussion over how the .config
> files should be considered.
> I.E: Are they some of the "required public" files to meet the
> requirements of Section 3 of the GPLv2 license.
> 

That's a legal issue, i'm discussing the organisational aspect.

how to organize a project that is based on build root but is not
a new board (in my case it's a raspberry-pi based firmware)

I am pretty certain that I'm a different use-case, one that is 
not properly documented. I'm trying it out and once I have found
a way to deal with it i'll submit any patch/doc changes needed.

I would gladly submit my projet to upstream too, but once again 
buildroot (so far) only takes minimal configuration to set up
boards, not complete projects.

> Mike
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30 12:34     ` Jeremy Rosen
@ 2014-01-30 13:54       ` Mike Zick
  2014-01-30 14:10         ` Jeremy Rosen
  0 siblings, 1 reply; 10+ messages in thread
From: Mike Zick @ 2014-01-30 13:54 UTC (permalink / raw)
  To: buildroot

On Thu, 30 Jan 2014 13:34:31 +0100 (CET)
Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:

> I would gladly submit my projet to upstream too, but once again 
> buildroot (so far) only takes minimal configuration to set up
> boards, not complete projects.
>

Agreed on that point -

Buildroot is only a project component, one that builds a 
populated, root file system.

So far in the evolution of Buildroot, the other project
components required to fully define a project have been
user supplied.

It has never been a complete project build system.

Which is the use case that you want to consider.
One that certainly deserves conversation.

If my summary above is even close to an understanding
of the use case you are proposing, then - - -

Prior to your question of "where to put the .config files?",
I think there is a higher level question:
"How to support project definition files?"

I.E: To make Buildroot the central control point for the
other components that make up a complete project.

Perhaps a: BR_EXTERNAL/sub-tree ?
Perhaps a: BR_PROJECT tree ?

Keeping in mind that we do not want to upset the world
of users that use Buildroot commercially.

For instance:
The subject of "are the .config files 'required public' files?"
The current set-up leaves that answer to the end user with
commands that will include them in the 'public' buildroot tree.

Mike

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30 13:54       ` Mike Zick
@ 2014-01-30 14:10         ` Jeremy Rosen
  2014-01-30 14:42           ` Mike Zick
  0 siblings, 1 reply; 10+ messages in thread
From: Jeremy Rosen @ 2014-01-30 14:10 UTC (permalink / raw)
  To: buildroot


> 
> > I would gladly submit my projet to upstream too, but once again
> > buildroot (so far) only takes minimal configuration to set up
> > boards, not complete projects.
> >
> 
> Agreed on that point -
> 
> Buildroot is only a project component, one that builds a
> populated, root file system.
> 
> So far in the evolution of Buildroot, the other project
> components required to fully define a project have been
> user supplied.
> 
> It has never been a complete project build system.
> 
> Which is the use case that you want to consider.
> One that certainly deserves conversation.

yup, I like the way you present it.

you can have a look at the project I mentionned above,
with post-install scripts and overlays I am able to 
make a complete project managed with buildroot, that's
why I focused on the .config aspect which is the part
I am not entirely happy with


> 
> If my summary above is even close to an understanding
> of the use case you are proposing, then - - -
> 
> Prior to your question of "where to put the .config files?",
> I think there is a higher level question:
> "How to support project definition files?"
> 

the Makefile in my project fills that role (iiuc 
what you mean) it is where I define where I want my buildfiles
to go (by defining O=) and where I want my config files to go
(by defining BR2_EXTERNAL and BR2_DEFCONFIG)

> I.E: To make Buildroot the central control point for the
> other components that make up a complete project.
> 
> Perhaps a: BR_EXTERNAL/sub-tree ?
> Perhaps a: BR_PROJECT tree ?
> 
> Keeping in mind that we do not want to upset the world
> of users that use Buildroot commercially.
> 

yes, but i'm pretty sure most of us would be glad to have a 
"clean way" to do a complete project under buildroot


> For instance:
> The subject of "are the .config files 'required public' files?"
> The current set-up leaves that answer to the end user with
> commands that will include them in the 'public' buildroot tree.
> 

I'm not sure what you mean here... I'm mainly thinking in term
of project organisation. if the .config is considered derived 
from buildroot then the exact position doesn't matter. I have
to make it public, and usually in another way than by upstreaming
since this is a complete project and not a board defconfig...


> Mike
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 

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

* [Buildroot] Project layout : where to put the .config files
  2014-01-30 14:10         ` Jeremy Rosen
@ 2014-01-30 14:42           ` Mike Zick
  0 siblings, 0 replies; 10+ messages in thread
From: Mike Zick @ 2014-01-30 14:42 UTC (permalink / raw)
  To: buildroot

On Thu, 30 Jan 2014 15:10:03 +0100 (CET)
Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:

> > I.E: To make Buildroot the central control point for the
> > other components that make up a complete project.
> > 
> > Perhaps a: BR_EXTERNAL/sub-tree ?
> > Perhaps a: BR_PROJECT tree ?
> > 
> > Keeping in mind that we do not want to upset the world
> > of users that use Buildroot commercially.
> >   
> 
> yes, but i'm pretty sure most of us would be glad to have a 
> "clean way" to do a complete project under buildroot
> 

Ah, another point of agreement then.

The current "put them in 'public' tree and move if required"
and the current "put them in the 'private' tree and move if
required" is becoming a bit messy.

So without trying to answer my own questions above -

Start with adding some infra-structure for 'project related'
files; and
Then using that to support the collection of .config files.

That would be of general use to the Buildroot system and
consistent with the "keep it clean, keep it simple" objective.

The end-user could still decide on the 'ship/don't ship' question
by including the 'project related' stuff or not.

It could also help answer the question of: "BR provides hooks
to external scripting - but where do I put them in an organized
manner?"

> 
> > For instance:
> > The subject of "are the .config files 'required public' files?"
> > The current set-up leaves that answer to the end user with
> > commands that will include them in the 'public' buildroot tree.
> >   
> 
> I'm not sure what you mean here... I'm mainly thinking in term
> of project organisation. if the .config is considered derived 
> from buildroot then the exact position doesn't matter. I have
> to make it public, and usually in another way than by upstreaming
> since this is a complete project and not a board defconfig...
> 

There has already been (years ago) a Buildroot fork from those
that wanted it to become a complete project system.

So just providing the basic organizational infra-structure is
probably a good idea now.

- - - -

Let us pause here for others to comment.

Mike

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

end of thread, other threads:[~2014-01-30 14:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1357102119.4889305.1391074415327.JavaMail.root@openwide.fr>
2014-01-30  9:53 ` [Buildroot] Project layout : where to put the .config files Jeremy Rosen
2014-01-30  9:59   ` Thomas De Schampheleire
2014-01-30 10:42     ` Jeremy Rosen
2014-01-30 11:00       ` Thomas De Schampheleire
2014-01-30 11:11     ` Sagaert Johan
2014-01-30 11:39   ` Mike Zick
2014-01-30 12:34     ` Jeremy Rosen
2014-01-30 13:54       ` Mike Zick
2014-01-30 14:10         ` Jeremy Rosen
2014-01-30 14:42           ` Mike Zick

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.