All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] [WIP] package/swupdate: new package
Date: Wed, 29 Oct 2014 00:25:03 +0100	[thread overview]
Message-ID: <545025CF.3030409@mind.be> (raw)
In-Reply-To: <1413841658-10259-1-git-send-email-romain.naour@openwide.fr>

On 20/10/14 23:47, Romain Naour wrote:
> This is mainly a draft based on Busybox package.

 Busybox?

> Just build tested with one x86 toolchain.
> 
> Signed-off-by: Romain Naour <romain.naour@openwide.fr>
> Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> Cc: Jeremy Rosen <jeremy.rosen@openwide.fr>
> ---
> Note: The following patch was sent in order to build swupdate in Buildroot:
>     http://patchwork.ozlabs.org/patch/386687/

 Since that patch was applied a while ago, this comment is no longer necessary.

> 
>  package/Config.in                                  |  1 +
>  package/swupdate/Config.in                         | 41 ++++++++++
>  ...wupdate-0001-Add-missing-header-for-off_t.patch | 25 ++++++
>  package/swupdate/swupdate.config                   | 77 ++++++++++++++++++
>  package/swupdate/swupdate.mk                       | 94 ++++++++++++++++++++++
>  5 files changed, 238 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 89b46dc..8fccb25 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -370,6 +370,7 @@ endif
>  	source "package/sunxi-cedarx/Config.in"
>  	source "package/sunxi-mali/Config.in"
>  	source "package/sunxi-mali-prop/Config.in"
> +	source "package/swupdate/Config.in"

 I really don't think Hardware Handling is the right menu for this. Maybe System
tools?

>  	source "package/sysstat/Config.in"
>  	source "package/targetcli-fb/Config.in"
>  	source "package/ti-gfx/Config.in"
> diff --git a/package/swupdate/Config.in b/package/swupdate/Config.in
> new file mode 100644
> index 0000000..7edc75b
> --- /dev/null
> +++ b/package/swupdate/Config.in
> @@ -0,0 +1,41 @@
> +config BR2_PACKAGE_SWUPDATE
> +	select BR2_PACKAGE_ZLIB
> +	select BR2_PACKAGE_MTD
> +	# Probably needs some dependency

 uboot-tools as a runtime dependency?

> +	bool "swupdate"
> +	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 to use?"
> +	default "package/swupdate/swupdate.config"
> +	help
> +	  Some people may wish to use their own modified swupdate configuration
> +	  file, and will specify their config file location with this option.
> +
> +	  Most people will just use the default swupdate configuration file.
> +
> +config BR2_PACKAGE_SWUPDATE_LUA
> +	depends on BR2_PACKAGE_HAS_LUAINTERPRETER
> +	depends on !BR2_PACKAGE_LUA_5_1
> +	bool "Enable lua interpreter"
> +	help
> +	  Enable LUA interpreter.
> +
> +comment "swupdate needs a Lua 5.2 interpreter"
> +	depends on BR2_PACKAGE_LUA_5_1 || !BR2_PACKAGE_HAS_LUAINTERPRETER
> +
> +config BR2_PACKAGE_SWUPDATE_LIBCONFIG
> +	select BR2_PACKAGE_LIBCONFIG
> +	bool "Enable libconfig parser"
> +	default y
> +	help
> +	  Use libconfig to parse the configuration file.
> +	  This is the default parser.

 So, without libconfig it doesn't support a config file I guess?

> +
> +endif
> 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>
> +---
> + 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..1787824
> --- /dev/null
> +++ b/package/swupdate/swupdate.config
> @@ -0,0 +1,77 @@
> +#
> +# Automatically generated make config: don't edit
> +# swupdate version: 2014.07.0
> +# Thu Sep  4 23:38:08 2014

 That's pretty long ago :-)

> +#
> +CONFIG_HAVE_DOT_CONFIG=y
> +
> +#
> +# Swupdate Settings
> +#
> +
> +#
> +# General Configuration
> +#
> +CONFIG_SCRIPTS=y
> +# CONFIG_HW_COMPATIBILITY is not set
> +CONFIG_HW_COMPATIBILITY_FILE=""
> +CONFIG_LUA=y
> +# CONFIG_FEATURE_SYSLOG is not set
> +
> +#
> +# Build Options
> +#
> +# CONFIG_STATIC is not set
> +CONFIG_CROSS_COMPILER_PREFIX=""
> +CONFIG_SYSROOT=""
> +CONFIG_EXTRA_CFLAGS=""
> +CONFIG_EXTRA_LDFLAGS=""
> +CONFIG_EXTRA_LDLIBS=""
> +
> +#
> +# Debugging Options
> +#
> +# CONFIG_DEBUG is not set
> +# CONFIG_DEBUG_PESSIMIZE is not set
> +# CONFIG_WERROR is not set
> +# CONFIG_NOCLEANUP is not set
> +CONFIG_WEBSERVER=y

 You're disabling it in the .mk file, so it doesn't make much sense to enable it
here.

> +
> +#
> +# Webserver Features
> +#
> +# CONFIG_MONGOOSE is not set
> +# CONFIG_MONGOOSELUA is not set
> +# CONFIG_MONGOOSESQL is not set
> +# CONFIG_MONGOOSEIPV6 is not set
> +# CONFIG_MONGOOSESSL is not set
> +
> +#
> +# Archival Features
> +#
> +CONFIG_CPIO=y
> +CONFIG_GUNZIP=y
> +
> +#
> +# Parser Features
> +#
> +CONFIG_LIBCONFIG=y
> +# CONFIG_LUAEXTERNAL is not set
> +# CONFIG_SETEXTPARSERNAME is not set
> +CONFIG_EXTPARSERNAME=""
> +# CONFIG_SETSWDESCRIPTION is not set
> +CONFIG_SWDESCRIPTION=""
> +
> +#
> +# Image Handlers
> +#
> +CONFIG_UBIVOL=y
> +CONFIG_UBIBLACKLIST=""
> +CONFIG_UBIVIDOFFSET=0
> +CONFIG_CFI=y
> +CONFIG_RAW=y
> +CONFIG_LUASCRIPTHANDLER=y
> +CONFIG_SHELLSCRIPTHANDLER=y
> +CONFIG_HANDLER_IN_LUA=y
> +# CONFIG_UBOOT is not set
> +CONFIG_UBOOT_FWENV=""
> diff --git a/package/swupdate/swupdate.mk b/package/swupdate/swupdate.mk
> new file mode 100644
> index 0000000..7e07245
> --- /dev/null
> +++ b/package/swupdate/swupdate.mk
> @@ -0,0 +1,94 @@
> +################################################################################
> +#
> +# swupdate
> +#
> +################################################################################
> +
> +SWUPDATE_VERSION = a4c94e334c4bdb0b95b8ea324a413abade93ed03
> +SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
> +SWUPDATE_LICENSE = GPLv2
> +SWUPDATE_LICENSE_FILES = COPYING
> +SWUPDATE_DEPENDENCIES = zlib mtd
> +
> +SWUPDATE_CFLAGS = \
> +	$(TARGET_CFLAGS)
> +
> +SWUPDATE_LDFLAGS = \
> +	$(TARGET_LDFLAGS)

 I think it's more appropriate to remove these definitions and instead add
TARGET_XXX directly in _MAKE_ENV.

 However, wouldn't it be better to pass these through the corresponding .config
values?


> +
> +SWUPDATE_BUILD_CONFIG = $(SWUPDATE_DIR)/.config
> +# Allows the build system to tweak CFLAGS
> +SWUPDATE_MAKE_ENV = \
> +	$(TARGET_MAKE_ENV) \
> +	CFLAGS="$(SWUPDATE_CFLAGS)" \
> +	LDFLAGS="$(SWUPDATE_LDFLAGS)"
> +
> +SWUPDATE_MAKE_OPTS = \
> +	CC="$(TARGET_CC)" \
> +	ARCH=$(KERNEL_ARCH) \
> +	PREFIX="$(TARGET_DIR)" \
> +	EXTRA_LDFLAGS="$(SWUPDATE_LDFLAGS)" \

 So you pass these twice?

> +	CROSS_COMPILE="$(TARGET_CROSS)" \
> +	CONFIG_PREFIX="$(TARGET_DIR)" \
> +	SKIP_STRIP=y
> +
> +ifndef SWUPDATE_CONFIG_FILE
> +	SWUPDATE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))
> +endif
> +
> +SWUPDATE_KCONFIG_FILE = $(SWUPDATE_CONFIG_FILE)

 What's the point of SWUPDATE_CONFIG_FILE? You can just set

SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))

> +SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig
> +SWUPDATE_KCONFIG_OPTS = $(SWUPDATE_MAKE_OPTS)
> +
> +ifeq ($(BR2_PACKAGE_SWUPDATE_LUA),y)
> +SWUPDATE_DEPENDENCIES += lua
> +define SWUPDATE_LUA
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_LUA,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +else
> +define SWUPDATE_LUA
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_LUA,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +endif
> +
> +# If we're using static libs do the same for swupdate
> +ifeq ($(BR2_PREFER_STATIC_LIB),y)
> +define SWUPDATE_PREFER_STATIC
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +endif
> +
> +# Disable swupdate's version of mongoose.
> +# Use the Buildroot's mongoose package instead.
> +define SWUPDATE_WEBSERVER_MONGOOSE
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_WEBSERVER,$(SWUPDATE_BUILD_CONFIG))
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_MONGOOSE,$(SWUPDATE_BUILD_CONFIG))

 Doesn't swupdate use an embedded mongoose? I.e., doesn't it link with it?


 Regards,
 Arnout

> +endef
> +
> +ifeq ($(BR2_PACKAGE_SWUPDATE_LIBCONFIG),y)
> +SWUPDATE_DEPENDENCIES += libconfig
> +define SWUPDATE_LIBCONFIG_PARSER
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_LIBCONFIG,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +else
> +define SWUPDATE_LIBCONFIG_PARSER
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_LIBCONFIG,$(SWUPDATE_BUILD_CONFIG))
> +endef
> +endif
> +
> +define SWUPDATE_KCONFIG_FIXUP_CMDS
> +	$(SWUPDATE_LUA)
> +	$(SWUPDATE_PREFER_STATIC)
> +	$(SWUPDATE_WEBSERVER_MONGOOSE)
> +	$(SWUPDATE_LIBCONFIG_PARSER)
> +endef
> +
> +define SWUPDATE_BUILD_CMDS
> +	$(SWUPDATE_MAKE_ENV) $(MAKE) $(SWUPDATE_MAKE_OPTS) -C $(@D)
> +endef
> +
> +define SWUPDATE_INSTALL_TARGET_CMDS
> +	$(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/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:[~2014-10-28 23:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-20 21:47 [Buildroot] [PATCH 1/1] [WIP] package/swupdate: new package Romain Naour
2014-10-26 21:49 ` Jörg Krause
2014-10-28 21:44   ` Romain Naour
2014-10-28 23:25 ` Arnout Vandecappelle [this message]

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=545025CF.3030409@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.