kumquat-buildroot/docs/manual
Yann E. MORIN c32ad51cbf core/sdk: generate the SDK tarball ourselves
Currently, the wording in the manual instructs the user to generate a
tarball from "the contents of the +output/host+ directory".

This is pretty confusing, because taken literally, this would amount to
running a command like:

    tar cf my-sdk.tar -C output/host/ .

This creates a tarbomb [0], which is very bad practice, because when
extracted, it creates multiple files in the current directory.

What one really wants to do, is create a tarball of the host/ directory,
with something like:

    tar cf my-sdk.tar -C output host/

However, this is not much better, because the top-most directory would
have a very common name, host/, which is pretty easy to get conflict
with when it gets extracted.

So, we fix that mess by giving the top-most directory a recognisable
name, based on the target tuple, which we also use as the name of the
archive (suffixed with the usual +.tar.gz+.) We offer the user the
possibility to override that default by specifying the +BR2_SDK_PREFIX+
variable on the command line.

Since this is an output file, we place it in the images/ directory.

As some users expressed a very strong feeling that they do not want to
generate a tarball at all, and that doing so would badly hurt their
workflows [1], we actually prepare the SDK as was previously done, but
under the new, intermediate rule 'prepare-sdk'. The existing 'sdk' rule
obviously depend on that before generating the tarball.

We choose to make the existing rule to generate the tarball, and
introduce a new rule to just prepare the SDK, rather than keep the
existing rule as-is and introduce a new one to generate the tarball,
because it makes sense to have the simplest rule do the correct thing,
leaving advanced, power users use the longest command. If someone
already had a wrapper that called 'sdk' and expected just the host
directory to be prepared, then this is not broken; it just takes a bit
longer (gzip is pretty fast).

Update the manual accordingly.

[0] https://en.wikipedia.org/wiki/Tar_(computing)#Tarbomb
[1] http://lists.busybox.net/pipermail/buildroot/2018-June/thread.html#223377
    and some messages in the ensuing thread...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Stefan Becker <chemobejk@gmail.com>
Cc: Trent Piepho <tpiepho@impinj.com>
Signed-off-by: &quot;Yann E. MORIN&quot; &lt;<a href="mailto:yann.morin.1998@free.fr" target="_blank">yann.morin.1998@free.fr</a>&gt;<br>
Reviewed-by: Stefan Becker <chemobejk@gmail.com>
Signed-off-by: &quot;Yann E. MORIN&quot; &lt;<a href="mailto:yann.morin.1998@free.fr" target="_blank">yann.morin.1998@free.fr</a>&gt;<br>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-08-14 16:03:48 +02:00
..
adding-board-support.txt
adding-packages-asciidoc.txt
adding-packages-autotools.txt
adding-packages-cargo.txt docs/manual: use SPDX short identifier for license 2018-04-05 21:06:45 +02:00
adding-packages-cmake.txt
adding-packages-conclusion.txt
adding-packages-directory.txt toolchain: merge toolchain-common.in to Config.in 2018-04-01 08:45:54 +02:00
adding-packages-generic.txt docs/manual: using a branch name as FOO_VERSION does not work 2018-05-11 23:03:21 +02:00
adding-packages-gettext.txt
adding-packages-golang.txt package/pkg-golang: use 'build' instead of 'install' 2018-04-01 16:36:28 +02:00
adding-packages-hooks.txt
adding-packages-kconfig.txt
adding-packages-kernel-module.txt
adding-packages-linux-kernel-spec-infra.txt
adding-packages-luarocks.txt
adding-packages-meson.txt docs/manual: document pkg-meson infra 2018-05-30 21:59:05 +02:00
adding-packages-perl.txt docs/manual: fix scancpan path 2018-06-15 10:04:45 +02:00
adding-packages-python.txt
adding-packages-rebar.txt
adding-packages-tips.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
adding-packages-virtual.txt
adding-packages-waf.txt
adding-packages.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
advanced.txt
appendix.txt
beyond-buildroot.txt
ccache-support.txt
common-usage.txt support/scripts/graph-depends: use colors instead of colours 2018-04-01 20:01:38 +02:00
configure-other-components.txt
configure.txt
contribute.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
customize-configuration.txt
customize-device-permission-tables.txt
customize-directory-structure.txt
customize-outside-br.txt docs/manual: fix BR2_EXTERNAL path typo 2017-10-15 15:47:59 +02:00
customize-packages.txt
customize-patches.txt
customize-post-image.txt
customize-quick-guide.txt
customize-rootfs.txt
customize-users-tables.txt
customize.txt
debugging-buildroot.txt
developers.txt Manual: DEVELOPERS file integrity check 2017-11-08 13:20:02 +01:00
download-infra.txt
download-location.txt
eclipse-integration.txt
faq-troubleshooting.txt
getting.txt
how-buildroot-works.txt
introduction.txt
known-issues.txt
legal-notice.txt
make-tips.txt
makedev-syntax.txt
makeusers-syntax.txt
manual.mk
manual.txt docs/manual: always point to the correct license file 2018-06-10 16:33:44 +02:00
migrating.txt
package-make-target.txt
patch-policy.txt docs: clarify <packagename>_PATCH behaviour 2017-09-24 14:43:37 +02:00
prerequisite.txt docs/manual: update host gcc minimum required version 2018-08-05 14:13:41 +02:00
quickstart.txt
rebuilding-packages.txt
resources.txt
using-buildroot-debugger.txt
using-buildroot-development.txt Allow adding per-package override rsync exclusions 2018-04-01 17:05:35 +02:00
using-buildroot-toolchain.txt core/sdk: generate the SDK tarball ourselves 2018-08-14 16:03:48 +02:00
writing-rules.txt