[Buildroot] [PATCH] Rebuild busybox when an external config is updated

Michal Sojka sojka at merica.cz
Fri May 2 13:07:40 UTC 2014


Hi,

thanks for the response.

On Thu, May 01 2014, Yann E. MORIN wrote:
> Thomas, Michal, All,
>
> On 2014-05-01 21:46 +0200, Thomas De Schampheleire spake thusly:

[...]

> We've already talked about it with Thomas P on IRC a while back. Here's
> the transcript of our discussion:
>
> --- Log opened Sun Apr 20 10:52:25 2014
> [--SNIP--]
> 12:02 < kos_tom> opinions about http://patchwork.ozlabs.org/patch/336465/ ?
> 12:04 < y_morin> kos_tom: http://patchwork.ozlabs.org/patch/336465/  <--
>                  we have PKG-clean-for-reconfigure for this, no?
> 12:05 < y_morin> kos_tom: But most importantly: if we do that for
>                  busybox, we need to do that for: linux, uClibc and any
>                  other package for which the user can provide a .config
> 12:06 < y_morin> kos_tom: So, I'd suggest we mark is as "Rejected" and
>                  ask to modify the manual about his situation.
> 12:09 < kos_tom> y_morin: to me, it's part of the "we don't try to be
>                  smart and to detect what needs to be rebuilt"
> 12:11 < kos_tom> clean-for-* are internal targets, they are not really
>                  meant to be used, and they are not documented
> 12:12 < y_morin> kos_tom: Well, we do have rebuild and reconfigure.
>
>
> So, it looks like both Thomas and me thinks this is not really something
> we want. I especially like kos_tom's comment:
>
>     it's part of the "we don't try to be smart and to detect what needs
>     to be rebuilt"
>
> I still stand by this position.

I could definitely live with this conclusion, but on the other hand I
don't think that adding one more dependency is being "too smart". What
are the drawbacks of adding this functionality? If it is just adding the
same to other packages, I'm willing to do that. Quick grep suggests that
only the following packages have custom config files: at91bootstrap3.mk,
barebox.mk, ubi.mk, linux.mk, busybox.mk, freetype.mk, luarocks.mk,
qt.mk, uclibc.mk.

Or, is there other easy way how to achieve the following? I want to have
all files that influence my root filesystem in a separate repository.
Currently my repo contains the following files:

    output/.config          # buildroot config
    output/.gitignore
    output/GNUmakefile      # See below
    output/busybox.config
    output/perm_table.txt
    output/postbuild
    output/ubinize.cfg
    buildroot               # Git submodule with buildroot

Cloning this repo and running make in output/ reproducibly rebuilds the
root filesystem. The GNUmakefile is a modified version of automatically
generated Makefile from 'make menuconfig O=../output'. The modification
include changing the -C parameter of make to relative path, setting
environment variables such as BUSYBOX_CONFIG_FILE and updating "my"
busybox config after buildroot innovation. See the full listing below.
This setup allows me the easily track what has been changed in my project
and I don't have to remember running XXX-update-config after every
busybox-menuconfig.

    export BUSYBOX_CONFIG_FILE=$(CURDIR)/busybox.config
    #export BR2_EXTERNAL=$(CURDIR)/../XXX
     
    lastword = $(word $(words $(1)),$(1))
    makedir := $(dir $(call lastword,$(MAKEFILE_LIST)))
     
    MAKEARGS := -C ../buildroot
    MAKEARGS += O=$(if $(patsubst /%,,$(makedir)),$(CURDIR)/)$(patsubst %/,%,$(makedir))
     
    MAKEFLAGS += --no-print-directory
     
    .PHONY: all $(MAKECMDGOALS)
     
    all     := $(filter-out Makefile,$(MAKECMDGOALS))
     
    _all:
            $(MAKE) $(MAKEARGS) $(all)
            -$(MAKE) $(MAKEARGS) busybox-update-config
     
    Makefile:;
     
    $(all): _all
            @:
     
    %/: _all
            @:

Best regards,
-Michal



More information about the buildroot mailing list