[OpenWrt-Devel] [PATCH 00/14] Build system improvements

openwrt at daniel.thecshore.com openwrt at daniel.thecshore.com
Sun Jan 3 01:02:48 EST 2016

Hi all!

I have a major patch series for consideration with a number of improvements
to the SDK/ImageBuilder parts of buildroot.

The first four patches are just a repeat of patches previously sent
for output filename improvement and not discussed further here; they
are included to avoid conflicts while applying the rest of the series.

The next three patches were created during my initial plan for reducing
build times by building an OpenWrt toolchain and using the openwrt
toolchain as an external toolchain.  The later improvement make their
improvements not as relevant by providing a better option, but I
include here as they may prove useful to some.

Those patches:

1) Fix the output filename of the toolchain tarball
2) When using an external allows you to set the libc type as if
one were using an openwrt toolchain (e.g. if the toolchain is
uclibc, glibc, or musl based you can have the openwrt build
system still use the appropriate settings despite using an
external toolchain; there is also an other type where you can
enter a string if the toolchain doesn't fit into an openwrt
style toolchain category).
3) Allows you to use build the ImageBuilder and SDK with an
external toolchain (in which case the external toolchain
has to be present for IB and SDK to work).

The rest of the patches are the important ones.

They allow building a minimal SDK (and associated non-standalone
ImageBuilder) which contains only the build system, the kernel
(because of build dependencies), and their dependencies.  The
resulting SDK can be used to build a more complete SDK (including
base packages and/or packages from feeds).  You can nest the SDK
chain however deep suits your workflow (that is there is no hard
limit on SDK building SDK building SDK....).  By default all SDK
builds now generate a signing key package variant, so SDK builds
are signed with a different key from the base build, and base key
and SDK{n} keys may easily included in images build with

In addition the version configuration information has been moved
out of the base-files package (since an SDK may or may not be

Furthermore the ImageBuilder now supports using menuconfig to
choose what image types are built (although I didn't enable
modifying the target profiles to be built; that still uses

We also fix the issues of the SDK rebuilding already built
packages (for a given variant of the source packages; building
alternate variants does not pose a problem and is therefore
allowed) and also with feeds install in the SDK spewing all
kinds of warning about missing packages, by implementing logic
that records what packages were built and put that information
in the SDK).

Overriding the no install / no build default is of course

In order to achieve this the following patches were created:

1) Add version flavour (for the nesting)
2) Moving the signing-key out of base-file and into a
varianted package with a configuration option to set
the variant name (with an automatic default of base,
sdk, sdk2, sdk3, etc).  The base variant just emits
a package named signing-key.  All other packages emit
3) Allow menuconfig in imagebuild for image types (needed
to allow for minimal SDK builds without an image build as
part of the build).
4) The aforementioned fix for already built packages.
5) Allow build more complete SDK from an SDK.
6) Allow building a minimal SDK with only kernel,
buildroot, and dependencies the build system and

I think this patch series demonstrates that while it took
a while, I have my game back, and would like to end the sabbatical
I took from being an OpenWrt developer due to personal issues
combined with not having had enough time to do development for some
time before that.

Obviously for a patch series like this I'd still do an RFC and
wait for comments before pushing, but I'd like to get new commit
credentials (my old ones are are buried in archives) for the
base system, bug tracker, etc, as well as the packages feed
(I have a fair chunk of work in progress for luci, packages,
telephony, and the base system; I'm not sure how fast it will
come though the pipeline as I can only do it during unpaid time
as my current position doesn't pay for OpenWrt development, but
I now have more free time than in the past).

[PATCH 01/14] target/toolchain: Fix tarball filename
[PATCH 02/14] targets: Use configured distribution name for SDK, IB,
[PATCH 03/14] images: use configured distribution name for output
[PATCH 04/14] images imagebuilder: Allow to add sanitized extra name
[PATCH 05/14] target/sdk: Fix filename with external toolchain
[PATCH 06/14] toolchain: Allow to set libc type for external
[PATCH 07/14] toolchain sdk ib: Allow use of external chain as with
[PATCH 08/14] targets images: Add a version 'flavour'
[PATCH 09/14] package/signing-key base-files: Move the package list
[PATCH 10/14] config: Move version configuration out of base-files
[PATCH 11/14] target/imagebuilder: Add ability to menuconfig image
[PATCH 12/14] target/sdk: Fix handling of already built packages
[PATCH 13/14] target/sdk: Allow building a more complete SDK from
[PATCH 14/14] target/sdk: Allow building buildroot + kernel only
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list