Remove upstream patches:
* 0001-compat.h-introduce-compatibility-header.patch
* 0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch
Update note about bundled modified version of mongoose 6.11.
Update licenses. Some files are LGPL-2.1+ now. Remove Public Domain as the
relevant bundled sqlite3 code was removed some time age.
Regenerated the .config file by doing:
```
make swupdate-menuconfig
make swupdate-update-config
```
.. and removing the paths for the build options manually.
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
When building SWUpdate with the following defconfig:
```
CONFIG_DOWNLOAD=y
```
.. the build process breaks with:
```
corelib/channel_curl.c:27:10: fatal error: json-c/json.h: No such file or directory
#include <json-c/json.h>
```
Looking at the SWUpdate Kconfig based build system shows that `CONFIG_DOWNLOAD`
depends on `HAVE_LIBCURL`, which selects CURL, which eventually enables the
(unnecessary) build of channel_curl.o.
The upstream fixes the condition for building channel_curl.o by adding a new
hidden config option `CHANNEL_CURL`, which is only selected by the
dependent options.
Backported from:
37a6666a53
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Remove upstream patch 0001-Fix-SHA256-hash-verification.patch.
Re-enable support for Lua 5.1 and LuaJIT, which was removed in version 2017.09
because of compatibility issues [1]. Meanwhile, the issues have been resolved
upstream [2].
Note, that `CONFIG_HANDLER_IN_LUA` is now supported by Lua 5.1/LuaJIT, too.
Add a fixup command `SWUPDATE_SET_LUA_VERSION` to set the correct base name for
the Lua/LuaJIT pkg-config file used by the swupdates config option `LUAPKG`.
Fix a small type in the help text:
'in my mind' -> 'in mind'.
Regenerated the .config script by doing:
```
make swupdate-menuconfig
make swupdate-update-config
```
.. and removing the paths for the build options manually.
[1] http://patchwork.ozlabs.org/patch/795958/
[2] 7b49b8dc59
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit fixes the warnings reported by check-package on the help
text of all package Config.in files, related to the formatting of the
help text: should start with a tab, then 2 spaces, then at most 62
characters.
The vast majority of warnings fixed were caused by too long lines. A
few warnings were related to spaces being used instead of a tab to
indent the help text.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
swupdate 2017.07 has a bug which makes hash verification faulty.
The commit adds a patch to fix the issue. The fix has already been
pushed to upstream and is a copy of the commit
dba95dcd3739c604a81ffa2df2545e7a4cd430cf in the swupdate repo [1].
[1] https://github.com/sbabic/swupdate
Signed-off-by: Maksim Salau <msalau@iotecha.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Buildroot no longer supports toolchains with glibc older than 2.17, so there
is no need to link with librt for clock_* system calls.
Cc: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Upstream rejected[1] the patch added in commit 6a1aa4e2da (swupdate: fix
build with older glibc). Instead of carrying this patch going forward, make
librt an extra library dependency in the Buildroot local swupdate .config.
This solution is somewhat less optimal than the patch, because it always adds
librt regardless of whether SURICATTA_HAWKBIT is enabled. In theory we could
add a test for (BR2_PACKAGE_JSON_C && BR2_PACKAGE_LIBCURL), which are the
SURICATTA_HAWKBIT dependencies, and edit .config at build time. But this adds
much complexity for little gain.
[1] https://groups.google.com/forum/?hl=en#!topic/swupdate/77QWIka27es
Cc: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Add optional dependency on zeromq which was already added in version
2016.10.
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
We want to use SPDX identifier for license strings as much as possible.
SPDX short identifier for GPLv2/GPLv2+ is GPL-2.0/GPL-2.0+.
This change is done by using following command.
find . -name "*.mk" | xargs sed -ri '/LICENSE( )?[\+:]?=/s/\<GPLv2\>/GPL-2.0/g'
Signed-off-by: Rahul Bedarkar <rahulbedarkar89@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The symbol to control static compilation was renamed in 2015.02, but missed
when swupdate was added.
Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
A short list of new features:
- progress interface as general way to signalize the update
status outside of the process.
- support encrypted artifacts (encryption via simmetric keys)
- host verification for swu images (-c option)
- configuration file to configure the update process
- HAwkbit backend: API extended, support for configData messages
- Hawkbit backend: supports SSL certificates
- remote handler : general interface to connect external
installers.
Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
It now explains limitations of building against Lua < 5.2 interpreters
and how to link to LuaJIT library.
Signed-off-by: Jordan Yelloz <jordan@yelloz.me>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Most probably this was missed in commit
65b2ae49fe which removed pinning to Lua
5.2.
Signed-off-by: Jordan Yelloz <jordan@yelloz.me>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Until now, HAVE_LUA=y was only passed when BR2_PACKAGE_LUA=y. However,
swupdate can also use LuaJIT instead of the classic Lua. Therefore,
this commit updates the package to use BR2_PACKAGE_HAS_LUAINTERPRETER
and the luainterpreter virtual package.
Note that the swupdate configuration needs to be updated separately
(via swupdate-menuconfig) to enable Lua support, and to specify the
Lua version (which should be jit-5.1 to link against LuaJIT).
Signed-off-by: Jordan Yelloz <jordan@yelloz.me>
[Thomas: use the luainterpreter virtual package, expand commit log.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Remove fetching upstream patch to fix build without MTD support
* Update .config
* Update help text as SSL support is now needed for other features
than the webserver too
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Also:
* Update the .config file
* Update the help text:
- Lua support is not restricted to Lua 5.2
- U-Boot supports needs now BR2_PACKAGE_UBOOT_TOOLS additionally
* Remove comment about bundled lsqlite3, it has been removed.
* Remove upstream patches:
- "Kbuild: Fix link error for CONFIG_UBOUT and missing libz" [1]
- "Kbuild: Link with GCC instead of LD" [2]
* Add patch from upstream:
- "Fix build without MTD support" [3]
* Add optional dependency for libarchive
* Add optional dependency for uboot-tools
[1] 5a5ef5909f
[2] f26577423e
[3] 69c0e66994
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
[Thomas: add host-pkgconf in the dependency when Lua is enabled, as it
is used to find Lua.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Add patch from upstream to fix build issue with some toolchains.
For some toolchains used in Buildroot (x86_64 and mips64) partial linking using
'ld' directly doesn't work well, as the 'ld' default emulation may not
necessarily be the correct one. Note, that the default emulation depends upon
how the linker was configured at build time. The leads to different kind of
build errors, like:
* /usr/bin/i686-pc-linux-gnu-ld: Relocatable linking with relocations from
format elf64-x86-64 (core/swupdate.o) to format elf32-i386 (core/built-in.o)
is not supported.
* /usr/bin/mips-linux-gnu-ld: handlers/raw_handler.o: endianness incompatible
with that of the selected emulation
* /usr/bin/mips64el-linux-ld: core/swupdate.o: ABI is incompatible with that
of the selected
Linking with gcc will pass all the appropriate linker flags to the linker.
'-nostdlib' has to be added to ldflags-y to link properly without pulling in GCC
libs during partial linking. Note, for Kbuild ldflags-y is prefered over the
deprecated EXTRA_LDFLAGS.
Build config for x86_64:
BR2_x86_64=y
BR2_x86_corei7=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209=y
Runtime test:
$ output/build/swupdate-2015.07/swupdate -v
Swupdate v2015.07.0
Licensed under GPLv2. See source distribution for detailed copyright notices.
Registered handlers:
rawfile
raw
Note, that a previous patch [1] had to be reverted [2] because ld does not take
gcc's constructor functions into account and so none of the handlers have been
registered at runtime.
Fixes:
http://autobuild.buildroot.net/results/de9/de920298075d32f3de83a0cfb7417846eb833425/http://autobuild.buildroot.net/results/975/975915aa33005806e78260bae385cd4b3e359ca8/http://autobuild.buildroot.net/results/c54/c54e7a2ea353d95d41a1e966de0dffa7b6ac432e/http://autobuild.buildroot.net/results/019/0198596ebfed05ab86552b628da2274d55bf42ae/
and many more.
[1] https://patchwork.ozlabs.org/patch/532542/
[2] https://patchwork.ozlabs.org/patch/535408/
Cc: Bjørn Forsman <bjorn.forsman@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This patch caused an unfortunate regression that prevents any handlers
from being registered (runtime issue). This means swupdate cannot
perform any update. Upstream has reverted it.
See discussion:
https://groups.google.com/d/msg/swupdate/oVIhJmYPT8A/eq3uZvYVDQAJ
This reverts commit a8cc6eeec5.
Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
CONFIG_UBOOT needs libz [1]. So CONFIG_UBOUT mustn't be available when
HAVE_ZLIB=n.
Add patch from upstream to fix a link error for CONFIG_UBOOT and missing libz.
Note, that this link error does not affect the default config provided by
Buildroot.
[1] cf495e23ad
[Thomas: use a single <pkg>_PATCH variable.]
Reported-by: Romain Naour <romain.naour@openwide.fr>
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Some toolchains used in Buildroot (x86-64 and mips64) have a problem to compile
a set of object files into one object file as it is done for the
`builtin-target` declared in swupdate's Kbuild Makefile.build. This target
collects all object files from every subdirectory declared in `objs-dir` and
compiles them into a single object file named `build-in.o` using the linker ld.
For the addressed toolchains the default emulation of ld is not the correct one
leading to different kind of relocation errors:
/usr/bin/i686-pc-linux-gnu-ld: Relocatable linking with relocations from
format elf64-x86-64 (core/swupdate.o) to format elf32-i386 (core/built-in.o)
is not supported.
or
/usr/bin/mips-linux-gnu-ld: handlers/raw_handler.o: endianness incompatible
with that of the selected emulation
or
/usr/bin/mips64el-linux-ld: core/swupdate.o: ABI is incompatible with that
of the selected
As there is no need to have single object file `built-in.o` to be compiled for
the subdirectories core and handlers we can easily allow swupdate to be built
with these toolchains by compiling the source files from core and handlers with
the `lib-target` target by assigning them to the `libs-y` variable as it is done
for all other subdirectories. The `lib-target` compiles a set of object files
into one archive file. With this target we avoid using the ld linker and use the
ar archiver instead.
Add a patch from upstream to fix a whole bunch of autobuild errors.
Fixes:
http://autobuild.buildroot.net/results/de9/de920298075d32f3de83a0cfb7417846eb833425/http://autobuild.buildroot.net/results/975/975915aa33005806e78260bae385cd4b3e359ca8/http://autobuild.buildroot.net/results/c54/c54e7a2ea353d95d41a1e966de0dffa7b6ac432e/http://autobuild.buildroot.net/results/019/0198596ebfed05ab86552b628da2274d55bf42ae/
and many more.
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
swupdate provides a reliable way to update the software on an embedded system.
Note that swupdates has a reworked Kbuild/Kconfig system. It has now support
for the 'option' and 'env' symbols as well for the 'savedefconfig' target.
This makes dependency handling much easier. We're now able to pass which
dependencies are available through the environment, as suggested by Arnout
Vandecappelle [1].
In previous version of this patch we had a configuration setting where all
package dependencies except Lua were selected by default. This has changed with
v7 as we are now able to pass dependencies to the swupdate build system through
the environment. For useful operation swupdate requires a parser which depends
by default on libconfig, but can be replaced by a json-c or Lua parser.
To provide a reasonable firmware update system we enable the embedded webserver
based on mongoose (also see notes about mongoose below), a parser as stated
above and a handler for raw NAND or NOR flash.
The user can modify this configuration by selecting the appropriate dependencies
before running `make swupdate-menuconfig`. The help text contains information
about which packages may be of interest for the user.
The embedded web server requires a website for proper operation. We install the
included website by default, however the user may choose to install a custom
website on the post-build scripts.
Note, swupdate includes some old versions of mongoose and lsqlite3:
- mongoose is version 3.8 from year 2013
- lsqlite3 is version 0.8 from year 2011
Currently, swupdate does not provide a way to replace these with external
packages.
This patch is based on a WIP version submitted by Romain Naour, commented by
Arnout Vandecappelle [2].
[1]
http://lists.busybox.net/pipermail/buildroot/2015-March/122981.html
[2]
https://patchwork.ozlabs.org/patch/401270/
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Cc: Romain Naour <romain.naour@openwide.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Tested-by: Mike Williams <mike@mikebwilliams.com>
Reviewed-by: Romain Naour <romain.naour@openwide.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>