From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v3 1/1] package/swupdate: new package
Date: Tue, 21 Apr 2015 23:28:13 +0200 [thread overview]
Message-ID: <5536C0ED.1080301@mind.be> (raw)
In-Reply-To: <1429576251-28975-1-git-send-email-joerg.krause@embedded.rocks>
On 21/04/15 02:30, J?rg Krause wrote:
> This patch is based on an WIP version submitted by Romain Naour, commented by
> Arnout Vandecappelle:
> https://patchwork.ozlabs.org/patch/401270/
>
> This package provides a default configuration with all external dependencies
> enabled. This is necessary because upstream does not detect which dependencies
> are available. Furthermore, upstream does not implement a savedefconfig target.
>
> Note that swupdate provides its own customized version of mongoose and
> lsqlite3.
>
> swupdate provides a default website which can be installed to the target to
> enable firmware update with a browser. This patch adds the user option to
> install this website.
>
> 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>
> Tested-by: Mike Williams <mike@mikebwilliams.com>
> ---
> Changes v2 -> v3:
> - bump to latest commit d7753be4fd8bdf2ba4ba56ee869550663b2cca80
> - enable all dependencies (Arnout)
> - rewrite help text for configuration file
> - add option to install default website
>
> Changes v1 -> v2:
> - bump to latest commit d9f58b5a3263b1b00c6d011cd8cdd65e69890b46
> - update Sob email address
>
> Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
> ---
> package/Config.in | 1 +
> package/swupdate/Config.in | 42 +++++++++++
> ...wupdate-0001-Add-missing-header-for-off_t.patch | 25 +++++++
> package/swupdate/swupdate.config | 82 ++++++++++++++++++++++
> package/swupdate/swupdate.mk | 62 ++++++++++++++++
> 5 files changed, 212 insertions(+)
> create mode 100644 package/swupdate/Config.in
> create mode 100644 package/swupdate/swupdate-0001-Add-missing-header-for-off_t.patch
> create mode 100644 package/swupdate/swupdate.config
> create mode 100644 package/swupdate/swupdate.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 319f01a..9ffd9b6 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1402,6 +1402,7 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
> source "package/start-stop-daemon/Config.in"
> endif
> source "package/supervisor/Config.in"
> + source "package/swupdate/Config.in"
> if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
> source "package/sysklogd/Config.in"
> endif
> diff --git a/package/swupdate/Config.in b/package/swupdate/Config.in
> new file mode 100644
> index 0000000..6e86ee9
> --- /dev/null
> +++ b/package/swupdate/Config.in
> @@ -0,0 +1,42 @@
> +config BR2_PACKAGE_SWUPDATE
> + bool "swupdate"
> + depends on BR2_TOOLCHAIN_HAS_THREADS # OpenSSL
> + depends on BR2_PACKAGE_LUA_5_2
Yikes, now I see this dependency so explicitly, it does look kind of scary...
Maybe it's a better idea to not support lua at all instead.
How big a difference does it make in rootfs size?
What do you think, Joerg? Romain? Others?
> + select BR2_PACKAGE_LIBCONFIG
> + select BR2_PACKAGE_LIBCURL
> + select BR2_PACKAGE_MTD
> + select BR2_PACKAGE_OPENSSL
> + select BR2_PACKAGE_ZLIB
> + help
> + swupdate provides a reliable way to update the software on an
> + embedded system.
> +
> + https://github.com/sbabic/swupdate.git
> +
> +if BR2_PACKAGE_SWUPDATE
> +
> +config BR2_PACKAGE_SWUPDATE_CONFIG
> + string "swupdate configuration file"
> + default "package/swupdate/swupdate.config"
> + help
> + The default swupdate configuration file will enable swupdate with
> + an image downloader, a webserver, and lua support, as well as
> + handlers for UBI volumes, raw NAND or NOR flash, SD cards, shell
> + scripts, and the U-Boot bootloader environment.
> +
> + Most people will just use the default swupdate configuration file.
> + However, some people may wish to use their own modified swupdate
> + configuration file, and will specify their config file location
> + with this option.
> +
> +config BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE
> + bool "install default website"
> + help
> + Install the provided website to /var/www/swupdate.
> +endif
> +
> +comment "swupate support needs toolchain w/ threads"
> + depends on !BR2_TOOLCHAIN_HAS_THREADS
> +
> +comment "swupate needs a Lua 5.2 interpreter"
> + depends on !BR2_PACKAGE_LUA_5_2
> diff --git a/package/swupdate/swupdate-0001-Add-missing-header-for-off_t.patch b/package/swupdate/swupdate-0001-Add-missing-header-for-off_t.patch
> new file mode 100644
> index 0000000..4be0f7b
> --- /dev/null
> +++ b/package/swupdate/swupdate-0001-Add-missing-header-for-off_t.patch
> @@ -0,0 +1,25 @@
> +From 4e382373cad64ca7e183336e33b72c53cfeed340 Mon Sep 17 00:00:00 2001
> +From: Romain Naour <romain.naour@openwide.fr>
> +Date: Sun, 7 Sep 2014 17:31:09 +0200
> +Subject: [PATCH 1/1] Add missing header for off_t
> +
> +Signed-off-by: Romain Naour <romain.naour@openwide.fr>
What's the upstream status of this? Stefan is normally pretty reactive...
> +---
> + include/swupdate.h | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/include/swupdate.h b/include/swupdate.h
> +index 78b7f85..c193397 100644
> +--- a/include/swupdate.h
> ++++ b/include/swupdate.h
> +@@ -23,6 +23,7 @@
> + #ifndef _SWUPDATE_H
> + #define _SWUPDATE_H
> +
> ++#include <sys/types.h>
> + #include <sys/queue.h>
> + #include "flash.h"
> + #include "globals.h"
> +--
> +1.9.3
> +
> diff --git a/package/swupdate/swupdate.config b/package/swupdate/swupdate.config
> new file mode 100644
> index 0000000..cb75998
> --- /dev/null
> +++ b/package/swupdate/swupdate.config
> @@ -0,0 +1,82 @@
[snip]
> +CONFIG_UBOOT=y
> +CONFIG_UBOOT_FWENV="/etc/fw_env.config"
Does it still work correctly if fw_env.config is not installed on the target?
Probably not... So I think this should be mentioned in the help text.
> diff --git a/package/swupdate/swupdate.mk b/package/swupdate/swupdate.mk
> new file mode 100644
> index 0000000..c78092a
> --- /dev/null
> +++ b/package/swupdate/swupdate.mk
> @@ -0,0 +1,62 @@
> +################################################################################
> +#
> +# swupdate
> +#
> +################################################################################
> +
> +# Choose latest commit instead of release 2014.07 for getting bug fixes and
> +# image downloading feature
This type of comment should be in the commit message, not in the .mk file.
> +SWUPDATE_VERSION = 8f59c21a07a99b94b53ab9ae3579cd2014b3cedc
> +SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
> +SWUPDATE_LICENSE = GPLv2+
> +SWUPDATE_LICENSE_FILES = COPYING
> +
> +# swupdate bundles its own mongoose and lsqlite3 versions
> +SWUPDATE_DEPENDENCIES = libconfig libcurl lua mtd openssl zlib
> +
> +SWUPDATE_BUILD_CONFIG = $(SWUPDATE_DIR)/.config
In linux.mk we directly use $(@D)/.config, which is IMHO clearer than adding an
extra variable.
> +
> +SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))
> +SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig
No nconfig?
> +
> +SWUPDATE_CFLAGS = $(TARGET_CFLAGS)
> +SWUPDATE_LDFLAGS = $(TARGET_LDFLAGS)
> +SWUPDATE_LDLIBS =
These are redundant, just use the appropriate variables directly below.
> +
> +# If we're using static libs do the same for swupdate
This comment is redundant.
> +ifeq ($(BR2_PREFER_STATIC_LIB),y)
> +define SWUPDATE_PREFER_STATIC
> + $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +endif
> +
> +define SWUPDATE_BUILD_OPTIONS
Better name would be _SET_BUILD_OPTIONS.
> + $(call KCONFIG_SET_OPT,CONFIG_CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)", \
> + $(SWUPDATE_BUILD_CONFIG))
> + $(call KCONFIG_SET_OPT,CONFIG_SYSROOT,"$(SYSROOT_DIR)", \
SYSROOT_DIR doesn't exist, you probably meant STAGING_DIR.
> + $(SWUPDATE_BUILD_CONFIG))
> + $(call KCONFIG_SET_OPT,CONFIG_EXTRA_CFLAGS,"$(SWUPDATE_CFLAGS)", \
> + $(SWUPDATE_BUILD_CONFIG))
> + $(call KCONFIG_SET_OPT,CONFIG_EXTRA_LDFLAGS,"$(SWUPDATE_LDFLAGS)", \
> + $(SWUPDATE_BUILD_CONFIG))
> + $(call KCONFIG_SET_OPT,CONFIG_EXTRA_LDLIBS,"$(SWUPDATE_LDLIBS)", \
> + $(SWUPDATE_BUILD_CONFIG))
> +endef
> +
> +define SWUPDATE_KCONFIG_FIXUP_CMDS
> + $(SWUPDATE_PREFER_STATIC)
> + $(SWUPDATE_BUILD_OPTIONS)
> +endef
> +
> +define SWUPDATE_BUILD_CMDS
> + $(MAKE) -C $(@D)
You should at least pass $(TARGET_MAKE_ENV) as well.
Regards,
Arnout
> +endef
> +
> +define SWUPDATE_INSTALL_TARGET_CMDS
> + $(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/swupdate
> + $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \
> + mkdir -p $(TARGET_DIR)/var/www/swupdate; \
> + cp -dpf $(@D)/www/* $(TARGET_DIR)/var/www/swupdate)
> +endef
> +
> +$(eval $(kconfig-package))
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
next prev parent reply other threads:[~2015-04-21 21:28 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-21 0:30 [Buildroot] [PATCH v3 1/1] package/swupdate: new package Jörg Krause
2015-04-21 13:49 ` Mike Williams
2015-04-21 19:33 ` Jörg Krause
2015-04-21 20:45 ` Arnout Vandecappelle
2015-04-21 21:28 ` Arnout Vandecappelle [this message]
2015-04-22 7:56 ` Jörg Krause
2015-04-22 19:52 ` Arnout Vandecappelle
2015-04-22 21:27 ` Romain Naour
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=5536C0ED.1080301@mind.be \
--to=arnout@mind.be \
--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.