[Buildroot] Build reproducibility

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Tue Sep 3 16:54:05 UTC 2013


Dear Jérôme Pouiller,

(Your e-mail client has wrapped the e-mail in a somewhat weird fashion,
leaving only one word one every two lines. Ah, yes a Roundcube Webmail!)

On Tue, 03 Sep 2013 10:15:55 +0200, Jérôme Pouiller wrote:
> I may have an idea to detect cases where a package has a non declared 
> dependency.
> 
> Inotify may help us to know which files are accessed during build of 
> one package.
> Especially, we can know which files in staging/ are accessed. If we 
> knew which
> package own which file under staging and we may find what are 
> dependencies
> of a package
> 
> I already made a system to monitor which files are installed by each
> package 
> (http://comments.gmane.org/gmane.comp.lib.uclibc.buildroot/53094). It
> may be adapted to detect owner of staging/ files

This indeed looks interesting. I'm not sure it's really easy to do (on
one side, we need to get the list of files that are installed/owned by
each package, and then whenever a file is accessed, check whether this
file is owned by a package which is part of the dependencies of the
currently built package), but if it's possible, it would quite
certainly raise a number of interesting warnings/issues.

>    make allyespackageconfig

Note that an allyespackageconfig doesn't build all packages: they are
some choices in the Buildroot Config.in options, and some packages
depend on the value of those choices. Hence, in a given configuration,
it is not possible to really enable and test all packages.

>    make        # And monitor which package create which file in
> staging/ for PKG in $PACKAGES[@]; do
>       make $PKG-dirclean
>       make $PKG # And monitor which files are accessed in staging/
>       # process result to get $PKG dependencies

I don't think we should try to infer automatically the dependencies,
but at least show a report of files that were accessed even though they
don't belong to packages that are part of the dependencies.

>    done
> 
> It would not fix automatically the problem, but an autobuilder may
> send notifications. Inotify instrumentation may stay in a separate
> patch or branch to not be intrusive in Buildroot.
> 
> Do you think it would be useful?

It might certainly be useful to do some experiments around this idea
and see if it brings a reasonable result (both in terms of code to
merge, and in terms of warnings/issues that we are able to discover and
fix).

Thanks,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com



More information about the buildroot mailing list