Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox