All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 03/13] docs/manual: rephrase and expand part on when a full rebuild is necessary
Date: Sun, 23 Feb 2014 16:24:57 +0100	[thread overview]
Message-ID: <20140223152457.GE3342@free.fr> (raw)
In-Reply-To: <1393167879-16637-4-git-send-email-thomas.petazzoni@free-electrons.com>

Thomas, All,

On 2014-02-23 16:04 +0100, Thomas Petazzoni spake thusly:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
>  docs/manual/rebuilding-packages.txt | 93 ++++++++++++++++++++++++++++---------
>  1 file changed, 71 insertions(+), 22 deletions(-)
> 
> diff --git a/docs/manual/rebuilding-packages.txt b/docs/manual/rebuilding-packages.txt
> index 4872e88..26e244c 100644
> --- a/docs/manual/rebuilding-packages.txt
> +++ b/docs/manual/rebuilding-packages.txt
> @@ -5,33 +5,82 @@
>  Understanding when a full rebuild is necessary
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  
> -A full rebuild is achieved by running:
> +Buildroot does not attempt to detect what parts of the system should
> +be rebuilt when the system configuration is changed through +make
> +menuconfig+, +make xconfig+ or one of the other configuration
> +tools. In some cases, Buildroot should rebuild the entire system, in
> +some cases, only a specific subset of packages. But detecting this in
> +a completely reliable manner is very difficult, and therefore the
> +Buildroot developers have decided to simply not attempt to do this.
> +
> +Instead, it is the responsibility of the user to know when a full
> +rebuild is necessary. As a hint, here are a few rules of thumb that
> +can help you understand how to work with Buildroot:
> +
> + * When the target architecture configuration is changed, a complete
> +   rebuild is needed. Changing the architecture variant, the binary
> +   format or the floating point strategy for example has an impact on
> +   the entire system.
> +
> + * When the toolchain configuration is changed, a complete rebuild
> +   generally is needed. Changing the toolchain configuration often
> +   involves changing the compiler version, the type of C library or
> +   its configuration, or some other fundamental configuration item,
> +   and these changes have an impact on the entire system.
> +
> + * When an additional package is added to the configuration, a full
> +   rebuild is not necessarily needed. Buildroot will detect that this
> +   package has never been built, and will build it. However, if this
> +   package is a library that can optionally be used by packages that
> +   have already been built, Buildroot will not automatically rebuild
> +   those. Either you know which packages should be rebuilt, and you
> +   can rebuild them manually, or you should do a full rebuild. For
> +   example, let's suppose you have built a system with the +ctorrent+
> +   package, but without +openssl+. Your system works, but you realize
> +   you would like to have SSL support in +ctorrent+, so you enable the
> +   +openssl+ package in Buildroot configuration and restart the
> +   build. Buildroot will detect that +openssl+ should be built and
> +   will be build it, but it will not detect that +ctorrent+ should be
> +   rebuilt to benefit from +openssl+ to add OpenSSL support. You will
> +   either have to do a full rebuild, or rebuild +ctorrent+ itself.
> +
> + * When a package is removed from the configuration, Buildroot does
> +   not do anything special. It does not remove the files installed by
> +   this package from the target root filesystem or from the toolchain
> +   _sysroot_. A full rebuild is needed to get rid of this
> +   package. However, generally you don't necessarily need this package
> +   to be removed right now: you can wait for the next lunch break to
> +   restart the build from scratch.
> +
> + * When the sub-options of a package are changed, the package is not
> +   automatically rebuilt. After making such changes, rebuilding only
> +   this package is often sufficient, unless enabling the package
> +   sub-option adds some features to the package that are useful for
> +   another package which has already been built. Again, Buildroot does
> +   not track when a package should be rebuilt: once a package has been
> +   built, it is never rebuilt unless explicitly told to do so.
> +
> + * When a change to the root filesystem skeleton is made, a full
> +   rebuild is needed. However, when changes to the root filesystem
> +   overlay, to a post-build script or a post-image script are made,
> +   there is no need for a full rebuild: a simple +make+ invocation
> +   will take the changes into account.
> +
> +Generally speaking, when you're facing a build error and you're unsure
> +of the potential consequences of the configuration changes you've
> +made, do a full rebuild. If you get the same build error, then you are
> +sure that the error is not related to partial rebuilds of packages,
> +and if this error occurs with packages from the official Buildroot, do
> +not hesitate to report the problem! As your experience with Buildroot
> +progresses, you will progressively learn when a full rebuild is really
> +necessary, and you will save more and more time.
> +
> +For reference, a full rebuild is achieved by running:
>  
>  ---------------
>  $ make clean all
>  ---------------
>  
> -In some cases, a full rebuild is mandatory:
> -
> -* each time the toolchain properties are changed, this includes:
> -
> -** after changing any toolchain option under the _Toolchain_ menu (if
> -   the internal Buildroot backend is used);
> -** after running +make uclibc-menuconfig+.
> -
> -* after removing some libraries from the package selection.
> -
> -In some cases, a full rebuild is recommended:
> -
> -* after adding some libraries to the package selection (otherwise,
> -  packages that can be optionally linked against those libraries
> -  won't be rebuilt, so they won't support those new available
> -  features).
> -
> -In other cases, it is up to you to decide if you should run a
> -full rebuild, but you should know what is impacted and understand what
> -you are doing anyway.
> -
>  [[rebuild-pkg]]
>  Understanding how to rebuild packages
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> -- 
> 1.8.3.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2014-02-23 15:24 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-23 15:04 [Buildroot] [PATCH 00/13] Documentation updates and improvements Thomas Petazzoni
2014-02-23 15:04 ` [Buildroot] [PATCH 01/13] docs/manual: toolchain packages no longer use custom makefiles Thomas Petazzoni
2014-02-23 15:16   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 02/13] docs/manual: rephrase part about rebuilding packages Thomas Petazzoni
2014-02-23 15:19   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 03/13] docs/manual: rephrase and expand part on when a full rebuild is necessary Thomas Petazzoni
2014-02-23 15:24   ` Yann E. MORIN [this message]
2014-02-23 15:04 ` [Buildroot] [PATCH 04/13] docs/manual: reference Python and Lua infras from the list of package infrastructures Thomas Petazzoni
2014-02-23 15:29   ` Yann E. MORIN
2014-02-23 15:37     ` Thomas Petazzoni
2014-02-23 15:04 ` [Buildroot] [PATCH 05/13] docs/manual: add section about dependency graphs Thomas Petazzoni
2014-02-23 15:32   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 06/13] docs/manual: add section about build time graphing Thomas Petazzoni
2014-02-23 15:35   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 07/13] docs/manual: update informations about C library in internal backend Thomas Petazzoni
2014-02-23 16:21   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 08/13] docs/manual: update external toolchain examples Thomas Petazzoni
2014-02-23 15:39   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 09/13] docs/manual: mention that custom toolchains is also useful for BR toolchains Thomas Petazzoni
2014-02-23 15:48   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 10/13] docs/manual: rephrase paragraph about unsupported external toolchains Thomas Petazzoni
2014-02-23 15:04 ` [Buildroot] [PATCH 11/13] docs/manual: refresh informations about *-menuconfig targets Thomas Petazzoni
2014-02-23 15:53   ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 12/13] docs/manual: document the usage of <pkg>_OVERRIDE_SRCDIR Thomas Petazzoni
2014-02-23 16:29   ` Yann E. MORIN
2014-02-23 21:29     ` Peter Korsgaard
2014-02-23 21:33       ` Yann E. MORIN
2014-02-23 15:04 ` [Buildroot] [PATCH 13/13] docs/manual: mention the per-package graph-depends target Thomas Petazzoni
2014-02-23 16:06   ` Yann E. MORIN
2014-02-23 21:30 ` [Buildroot] [PATCH 00/13] Documentation updates and improvements Peter Korsgaard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140223152457.GE3342@free.fr \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.