diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/uboot-envtools/Makefile | 54 | ||||
-rw-r--r-- | package/uboot-envtools/files/ar71xx | 25 | ||||
-rw-r--r-- | package/uboot-envtools/files/lantiq | 25 | ||||
-rw-r--r-- | package/uboot-envtools/files/uboot-envtools.sh | 36 | ||||
-rw-r--r-- | package/uboot-envtools/patches/001-crc32_func_signature.patch | 17 | ||||
-rw-r--r-- | package/uboot-envtools/patches/002-makefile.patch | 39 | ||||
-rw-r--r-- | package/uboot-envtools/patches/003-nor-eraselen.patch | 2 | ||||
-rw-r--r-- | package/uboot-envtools/patches/004-allow_mac_change.patch | 21 |
8 files changed, 169 insertions, 50 deletions
diff --git a/package/uboot-envtools/Makefile b/package/uboot-envtools/Makefile index adb2aea..45f7430 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:=2012.04.01 +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:=192bb231082d9159fb6e16de3039b6b2 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.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..f68f29e 100644 --- a/package/uboot-envtools/patches/001-crc32_func_signature.patch +++ b/package/uboot-envtools/patches/001-crc32_func_signature.patch @@ -84,7 +84,7 @@ #ifdef MTD_OLD # include <stdint.h> -@@ -210,13 +211,14 @@ static char default_environment[] = { +@@ -212,13 +213,14 @@ static char default_environment[] = { static int flash_io (int mode); static char *envmatch (char * s1, char * s2); static int parse_config (void); @@ -101,7 +101,7 @@ if (HaveRedundEnv) rc -= sizeof (char); -@@ -346,7 +348,7 @@ int fw_env_close(void) +@@ -348,7 +350,7 @@ int fw_env_close(void) /* * Update CRC */ @@ -110,16 +110,7 @@ /* 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) +@@ -1116,7 +1118,7 @@ int fw_env_open(void) if (flash_io (O_RDONLY)) return -1; @@ -128,7 +119,7 @@ crc0_ok = (crc0 == *environment.crc); if (!HaveRedundEnv) { if (!crc0_ok) { -@@ -1151,7 +1153,7 @@ int fw_env_open(void) +@@ -1160,7 +1162,7 @@ int fw_env_open(void) 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/package/uboot-envtools/patches/003-nor-eraselen.patch b/package/uboot-envtools/patches/003-nor-eraselen.patch index fd10fec..c6eb59a 100644 --- a/package/uboot-envtools/patches/003-nor-eraselen.patch +++ b/package/uboot-envtools/patches/003-nor-eraselen.patch @@ -1,6 +1,6 @@ --- a/fw_env.c +++ b/fw_env.c -@@ -779,7 +779,10 @@ static int flash_write_buf (int dev, int +@@ -790,7 +790,10 @@ static int flash_write_buf (int dev, int erase_offset = (offset / blocklen) * blocklen; /* Maximum area we may use */ diff --git a/package/uboot-envtools/patches/004-allow_mac_change.patch b/package/uboot-envtools/patches/004-allow_mac_change.patch new file mode 100644 index 0000000..b7d600b --- /dev/null +++ b/package/uboot-envtools/patches/004-allow_mac_change.patch @@ -0,0 +1,21 @@ +--- a/fw_env.c ++++ b/fw_env.c +@@ -46,8 +46,6 @@ + + #include "fw_env.h" + +-#include <config.h> +- + #define WHITESPACE(c) ((c == '\t') || (c == ' ')) + + #define min(x, y) ({ \ +@@ -401,9 +399,7 @@ int fw_env_write(char *name, char *value + if ( + (strcmp(name, "serial#") == 0) || + ((strcmp(name, "ethaddr") == 0) +-#if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR) + && (strcmp(oldval, MK_STR(CONFIG_ETHADDR)) != 0) +-#endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */ + ) ) { + fprintf (stderr, "Can't overwrite \"%s\"\n", name); + errno = EROFS; |