I did not have time to test it on live board tonight (and I wont have time for it this week), that is why I'm sending it here and not in separate thread called v3...
This will be good enough for comments. upgrade and improve uboot-env package * bumps to version 2011.12 * adds md5sum * creates a menu so it will look better in "make menuconfig" * adds /etc/fw_env.config to conffile * adds /etc/config/ubootenv to conffile * refresh patches * removes init script because we should be using uci-defaults instead * supports all current targets using this package - ar71xx and lantiq Regarding board all0258n: * fw_env.config is presrved during upgrade, it's in conffile * not included in patch but should be removed completely imho is platform_add_ramfs_ubootenv from: target/linux/ar71xx/base-files/lib/upgrade/all0258n.sh Also, can somebody explain why do we need platform_add_ramfs_ubootenv in that file in the first place? And here is the proposal: package/uboot-envtools/Makefile | 54 ++++++++++++++------ package/uboot-envtools/files/ar71xx | 25 +++++++++ package/uboot-envtools/files/lantiq | 25 +++++++++ package/uboot-envtools/files/uboot-envtools.init | 27 ---------- package/uboot-envtools/files/uboot-envtools.sh | 36 +++++++++++++ .../patches/001-crc32_func_signature.patch | 9 ---- package/uboot-envtools/patches/002-makefile.patch | 39 +++++++------- .../ar71xx/base-files/etc/uci-defaults/ubootenv | 37 -------------- .../ar71xx/base-files/lib/upgrade/all0258n.sh | 1 - .../base-files/etc/uci-defaults/uboot_environment | 32 ------------ 10 files changed, 143 insertions(+), 142 deletions(-) diff --git a/package/uboot-envtools/Makefile b/package/uboot-envtools/Makefile index adb2aea..003eecc 100644 --- a/package/uboot-envtools/Makefile +++ b/package/uboot-envtools/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2011 OpenWrt.org +# Copyright (C) 2006-2012 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uboot-envtools PKG_DISTNAME:=u-boot -PKG_VERSION:=2011.06 -PKG_RELEASE:=4 +PKG_VERSION:=2011.12 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=ftp://ftp.denx.de/pub/u-boot -PKG_MD5SUM:= +PKG_MD5SUM:=7f29b9f6da44d6e46e988e7561fd1d5f PKG_BUILD_DEPENDS:=zlib include $(INCLUDE_DIR)/package.mk @@ -26,31 +26,53 @@ define Package/uboot-envtools CATEGORY:=Utilities TITLE:=read/modify U-Boot bootloader environment URL:=http://www.denx.de/wiki/U-Boot + MENU:=1 +endef + +define Package/uboot-envtools/config + menu "Configuration" + depends on PACKAGE_uboot-envtools + + config PACKAGE_uboot-envtools_setenv_symlink + bool "Create fw_setenv symlink" + default n + help + With this option selected you will be able to edit U-Boot bootloader environment. + + endmenu endef define Package/uboot-envtools/description This package includes tools to read and modify U-Boot bootloader environment. endef -define Package/uboot-envtools/config - config PACKAGE_uboot-envtools_setenv_symlink - bool "create fw_setenv symlink" +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + tar xvjf $(DL_DIR)/$(PKG_SOURCE) --strip-components=2 -C $(PKG_BUILD_DIR) $(PKG_DISTNAME)-$(PKG_VERSION)/lib/crc32.c + $(call Build/Prepare/Default) +endef + +define Package/uboot-envtools/conffiles +/etc/config/ubootenv +/etc/fw_env.config endef define Package/uboot-envtools/install $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/fw_printenv $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/fw_printenv $(1)/usr/sbin ifneq ($(CONFIG_PACKAGE_uboot-envtools_setenv_symlink),) ln -s fw_printenv $(1)/usr/sbin/fw_setenv endif - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/uboot-envtools.init $(1)/etc/init.d/uboot-envtools -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) - tar xvjf $(DL_DIR)/$(PKG_SOURCE) --strip-components=2 -C $(PKG_BUILD_DIR) $(PKG_DISTNAME)-$(PKG_VERSION)/lib/crc32.c - $(call Build/Prepare/Default) + $(INSTALL_DIR) $(1)/lib + $(INSTALL_DATA) ./files/uboot-envtools.sh $(1)/lib +ifneq ($(CONFIG_TARGET_ar71xx),) + $(INSTALL_DIR) $(1)/etc/uci-defaults + $(INSTALL_BIN) ./files/ar71xx $(1)/etc/uci-defaults/uboot-envtools +endif +ifneq ($(CONFIG_TARGET_lantiq),) + $(INSTALL_DIR) $(1)/etc/uci-defaults + $(INSTALL_BIN) ./files/lantiq $(1)/etc/uci-defaults/uboot-envtools +endif endef $(eval $(call BuildPackage,uboot-envtools)) diff --git a/package/uboot-envtools/files/ar71xx b/package/uboot-envtools/files/ar71xx new file mode 100644 index 0000000..15b6b15 --- /dev/null +++ b/package/uboot-envtools/files/ar71xx @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright (C) 2011-2012 OpenWrt.org +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/ar71xx.sh +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(ar71xx_board_name) + +case "$board" in +all0258n) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/uboot-envtools/files/lantiq b/package/uboot-envtools/files/lantiq new file mode 100644 index 0000000..40befc3 --- /dev/null +++ b/package/uboot-envtools/files/lantiq @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright (C) 2012 OpenWrt.org +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/lantiq.sh +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(lantiq_board_name) + +case "$board" in +GIGASX76X) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/uboot-envtools/files/uboot-envtools.init b/package/uboot-envtools/files/uboot-envtools.init deleted file mode 100755 index 066109b..0000000 --- a/package/uboot-envtools/files/uboot-envtools.init +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh /etc/rc.common -# (C) 2011 OpenWrt.org -# Creates /etc/fw_env.conf for fw_printenv (and fw_setenv) - -START=80 - -create_fwenv_config() { - local dev - local offset - local envsize - local secsize - local numsec - config_get dev "$1" dev - config_get offset "$1" offset "0x0000" - config_get envsize "$1" envsize - config_get secsize "$1" secsize - config_get numsec "$1" numsec - echo "$dev $offset $envsize $secsize $numsec" >>/etc/fw_env.config -} - -start() { - [ ! -e /etc/fw_env.config ] && { - echo "# MTD device name Device offset Env. size Flash sector size Number of sectors" >/etc/fw_env.config - config_load ubootenv - config_foreach create_fwenv_config ubootenv - } -} diff --git a/package/uboot-envtools/files/uboot-envtools.sh b/package/uboot-envtools/files/uboot-envtools.sh new file mode 100644 index 0000000..e21b283 --- /dev/null +++ b/package/uboot-envtools/files/uboot-envtools.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Copyright (C) 2011-2012 OpenWrt.org +# + +ubootenv_add_uci_config() { + local dev=$1 + local offset=$2 + local envsize=$3 + local secsize=$4 + local numsec=$5 + uci batch <<EOF +add ubootenv ubootenv +set ubootenv.@ubootenv[-1].dev='$dev' +set ubootenv.@ubootenv[-1].offset='$offset' +set ubootenv.@ubootenv[-1].envsize='$envsize' +set ubootenv.@ubootenv[-1].secsize='$secsize' +set ubootenv.@ubootenv[-1].numsec='$numsec' +EOF + uci commit ubootenv +} + +ubootenv_add_app_config() { + local dev + local offset + local envsize + local secsize + local numsec + config_get dev "$1" dev + config_get offset "$1" offset + config_get envsize "$1" envsize + config_get secsize "$1" secsize + config_get numsec "$1" numsec + echo "$dev $offset $envsize $secsize $numsec" >>/etc/fw_env.config +} + diff --git a/package/uboot-envtools/patches/001-crc32_func_signature.patch b/package/uboot-envtools/patches/001-crc32_func_signature.patch index da9742f..1f217ba 100644 --- a/package/uboot-envtools/patches/001-crc32_func_signature.patch +++ b/package/uboot-envtools/patches/001-crc32_func_signature.patch @@ -110,15 +110,6 @@ /* write environment back to flash */ if (flash_io(O_RDWR)) { -@@ -802,7 +804,7 @@ static int flash_write_buf (int dev, int - data = malloc (erase_len); - if (!data) { - fprintf (stderr, -- "Cannot malloc %u bytes: %s\n", -+ "Cannot malloc %zu bytes: %s\n", - erase_len, strerror (errno)); - return -1; - } @@ -1107,7 +1109,7 @@ int fw_env_open(void) if (flash_io (O_RDONLY)) return -1; diff --git a/package/uboot-envtools/patches/002-makefile.patch b/package/uboot-envtools/patches/002-makefile.patch index ddd08e1..b18bff6 100644 --- a/package/uboot-envtools/patches/002-makefile.patch +++ b/package/uboot-envtools/patches/002-makefile.patch @@ -1,13 +1,13 @@ --- a/Makefile +++ b/Makefile -@@ -21,37 +21,16 @@ +@@ -21,34 +21,17 @@ # MA 02111-1307 USA # -include $(TOPDIR)/config.mk - --HOSTSRCS := $(obj)crc32.c fw_env.c fw_env_main.c -+SRCS := crc32.c fw_env.c fw_env_main.c +-HOSTSRCS := $(SRCTREE)/lib/crc32.c fw_env.c fw_env_main.c ++SRCS := crc32.c fw_env.c fw_env_main.c HEADERS := fw_env.h -# Compile for a hosted environment on the target @@ -19,27 +19,26 @@ -ifeq ($(MTD_VERSION),old) -HOSTCPPFLAGS += -DMTD_OLD -endif -+CPPFLAGS := -Wall $(CFLAGS) - - all: $(obj)fw_printenv - - # Some files complain if compiled with -pedantic, use HOSTCFLAGS_NOPED +- +-all: $(obj)fw_printenv +- +-# Some files complain if compiled with -pedantic, use HOSTCFLAGS_NOPED -$(obj)fw_printenv: $(HOSTSRCS) $(HEADERS) - $(HOSTCC) $(HOSTCFLAGS_NOPED) $(HOSTLDFLAGS) -o $@ $(HOSTSRCS) -+$(obj)fw_printenv: $(SRCS) $(HEADERS) -+ $(CC) $(CPPFLAGS) $(SRCS) -o $(obj)fw_printenv ++CPPFLAGS := -Wall $(CFLAGS) + +-clean: +- rm -f $(obj)fw_printenv ++all: fw_printenv - clean: -- rm -f $(obj)fw_printenv $(obj)crc32.c -- --$(obj)crc32.c: -- ln -s $(src)../../lib/crc32.c $(obj)crc32.c -- -######################################################################### -- ++fw_printenv: $(SRCS) $(HEADERS) ++ $(CC) $(CPPFLAGS) $(SRCS) -o fw_printenv + -include $(TOPDIR)/rules.mk - -sinclude $(obj).depend -- --######################################################################### -+ rm -f $(obj)fw_printenv ++clean: ++ rm -f fw_printenv + + ######################################################################### diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv b/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv deleted file mode 100755 index 687f340..0000000 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2011 OpenWrt.org -# - -add_ubootenv() { - local dev=$1 - local offset=$2 - local envsize=$3 - local secsize=$4 - local numsec=$5 - uci batch <<EOF -add ubootenv ubootenv -set ubootenv.@ubootenv[-1].dev='$dev' -set ubootenv.@ubootenv[-1].offset='$offset' -set ubootenv.@ubootenv[-1].envsize='$envsize' -set ubootenv.@ubootenv[-1].secsize='$secsize' -set ubootenv.@ubootenv[-1].numsec='$numsec' -EOF -} - -[ -e /etc/config/ubootenv ] && exit 0 - -touch /etc/config/ubootenv - -. /lib/ar71xx.sh - -board=$(ar71xx_board_name) - -case "$board" in -all0258n) - add_ubootenv /dev/mtd1 0x0 0x10000 0x10000 - ;; - -esac - -uci commit ubootenv diff --git a/target/linux/ar71xx/base-files/lib/upgrade/all0258n.sh b/target/linux/ar71xx/base-files/lib/upgrade/all0258n.sh index fbcdd41..0873a73 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/all0258n.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/all0258n.sh @@ -8,7 +8,6 @@ CI_FLADDR=0x9f050000 # make sure we got uboot-envtools and fw_env.config copied over to the ramfs platform_add_ramfs_ubootenv() { [ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv - [ -e /etc/fw_env.config ] && install_file /etc/fw_env.config } append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/uboot_environment b/target/linux/lantiq/base-files/etc/uci-defaults/uboot_environment deleted file mode 100644 index 58a78df..0000000 --- a/target/linux/lantiq/base-files/etc/uci-defaults/uboot_environment +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2012 OpenWrt.org -# - -uboot_environment_configuration() { - local dev=$1 - local offset=$2 - local envsize=$3 - local secsize=$4 - local numsec=$5 - echo "$dev $offset $envsize $secsize $numsec" > /etc/fw_env.config -} - -[ -e /etc/config/fw_env.config ] && exit 0 - -. /lib/lantiq.sh - -board=$(lantiq_board_name) - -case "$board" in -GIGASX76X) - uboot_environment_configuration "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" - ;; - -*) - # custom foo goes here - true - ;; -esac - -exit 0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
