Is anybody so kind and can commit this patch.
http://patchwork.openwrt.org/patch/1645/

Thanks
Maddes

On 04.12.2011 20:52, Matthias Buecher / Germany wrote:
> Signed-off-by: Matthias Bücher <m...@maddes.net>
> 
> 
> Patch is attached and inline for comments
> 
> Regards
> Maddes
> 
> 
> Index: tools/wrt350nv2-builder/Makefile
> ===================================================================
> --- tools/wrt350nv2-builder/Makefile  (revision 29422)
> +++ tools/wrt350nv2-builder/Makefile  (working copy)
> @@ -1,5 +1,5 @@
>  #
> -# Copyright (C) 2006-2010 OpenWrt.org
> +# Copyright (C) 2006-2011 OpenWrt.org
>  #
>  # This is free software, licensed under the GNU General Public License v2.
>  # See /LICENSE for more information.
> @@ -8,7 +8,7 @@
>  include $(TOPDIR)/rules.mk
> 
>  PKG_NAME:=wrt350nv2-builder
> -PKG_VERSION:=2.3
> +PKG_VERSION:=2.4
> 
>  HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/${PKG_NAME}-$(PKG_VERSION)
> 
> Index: tools/wrt350nv2-builder/src/wrt350nv2-builder.c
> ===================================================================
> --- tools/wrt350nv2-builder/src/wrt350nv2-builder.c   (revision 29422)
> +++ tools/wrt350nv2-builder/src/wrt350nv2-builder.c   (working copy)
> @@ -1,8 +1,8 @@
>  /*
> 
> -     WRT350Nv2-Builder 2.3 (previously called buildimg)
> +     WRT350Nv2-Builder 2.4 (previously called buildimg)
>       Copyright (C) 2008-2009 Dirk Teurlings <i...@upexia.nl>
> -     Copyright (C) 2009-2010 Matthias Buecher (http://www.maddes.net/)
> +     Copyright (C) 2009-2011 Matthias Buecher (http://www.maddes.net/)
> 
>       This program is free software; you can redistribute it and/or modify
>       it under the terms of the GNU General Public License as published by
> @@ -33,6 +33,9 @@
>               :u-boot 0       /path/to/u-boot.bin
>               #version        0x2020
> 
> +     Additionally since v2.4 an already complete image can be used:
> +             :image          0       
> /path/to/openwrt-wrt350nv2-[squashfs|jffs2-64k].img
> +
>       args:
>               1       wrt350nv2.par           parameter file describing the 
> image layout
>               2       wrt350nv2.img           output file for linksys style 
> image
> @@ -62,6 +65,8 @@
>       https://forum.openwrt.org/viewtopic.php?pid=92928#p92928
> 
>       Changelog:
> +     v2.4 - added ":image" definition for parameter file, this allows
> +            to use a complete sysupgrade image without any kernel size check
>       v2.3 - allow jffs by adding its magic number (0x8519)
>              added parameter option -i to ignore unknown magic numbers
>       v2.2 - fixed checksum byte calculation for other versions than 0x2019
> @@ -92,7 +97,7 @@
> 
> 
>  // version info
> -#define VERSION "2.3"
> +#define VERSION "2.4"
>  char program_info[] = "WRT350Nv2-Builder v%s by Dirk Teurlings
> <i...@upexia.nl> and Matthias Buecher (http://www.maddes.net/)\n";
> 
>  // verbosity
> @@ -112,6 +117,7 @@
> 
>  mtd_info mtd_kernel = { "kernel", 0, 0, NULL, 0L, { 0, 0 } };
>  mtd_info mtd_rootfs = { "rootfs", 0, 0, NULL, 0L, { 0, 0 } };
> +mtd_info mtd_image = { "image", 0, 0, NULL, 0L, { 0, 0 } };
>  mtd_info mtd_uboot = { "u-boot", 0, 0, NULL, 0L, { 0, 0 } };
> 
>  #define ROOTFS_END_OFFSET    0x00760000
> @@ -281,6 +287,8 @@
>                                               mtd = &mtd_rootfs;
>                                       } else if (!strcmp(string1, 
> mtd_uboot.name)) {
>                                               mtd = &mtd_uboot;
> +                                     } else if (!strcmp(string1, 
> mtd_image.name)) {
> +                                             mtd = &mtd_image;
>                                       }
> 
>                                       if (!mtd) {
> @@ -404,20 +412,24 @@
> 
>       // add files
>       if (!exitcode) {
> -             for (i = 1; i <= 3; i++) {
> +             for (i = 1; i <= 4; i++) {
>                       addsize = 0;
>                       padsize = 0;
> 
>                       switch (i) {
>                               case 1:
> +                                     mtd = &mtd_image;
> +                                     padsize = ROOTFS_MIN_OFFSET - 
> mtd->filesize;
> +                                     break;
> +                             case 2:
>                                       mtd = &mtd_kernel;
>                                       break;
> -                             case 2:
> +                             case 3:
>                                       mtd = &mtd_rootfs;
>                                       addsize = mtd->filesize;
>                                       padsize = ROOTFS_MIN_OFFSET - 
> mtd_kernel.size - mtd->filesize;
>                                       break;
> -                             case 3:
> +                             case 4:
>                                       mtd = &mtd_uboot;
>                                       addsize = mtd->filesize;
>                                       break;
> @@ -723,7 +735,6 @@
> 
>       int i;
>       mtd_info *mtd;
> -     int mandatory;
>       int noupdate;
>       int sizecheck;
>       int magiccheck;
> @@ -934,28 +945,30 @@
>       if ((!exitcode) && (par_filename)) {
>               lprintf(DEBUG, "checking mtd data...\n");
> 
> -             for (i = 1; i <= 3; i++) {
> -                     mandatory = 0;
> +             for (i = 1; i <= 4; i++) {
>                       noupdate = 0;
>                       sizecheck = 0;
>                       magiccheck = 0;
> 
>                       switch (i) {
>                               case 1:
> +                                     mtd = &mtd_image;
> +                                     sizecheck = ROOTFS_END_OFFSET;
> +                                     magiccheck = 1;
> +                                     break;
> +                             case 2:
>                                       mtd = &mtd_kernel;
> -                                     mandatory = 1;
>                                       sizecheck = mtd_kernel.size - 16;
>                                       magiccheck = 1;
>                                       break;
> -                             case 2:
> +                             case 3:
>                                       mtd = &mtd_rootfs;
>                                       mtd->offset = mtd_kernel.size;
>                                       mtd->size = ROOTFS_END_OFFSET - 
> mtd_kernel.size;
> -                                     mandatory = 1;
>                                       sizecheck = PRODUCT_ID_OFFSET - 
> mtd_kernel.size;
>                                       magiccheck = 1;
>                                       break;
> -                             case 3:
> +                             case 4:
>                                       mtd = &mtd_uboot;
>                                       mtd->offset = BOOT_ADDR_BASE_OFF;
>                                       noupdate = 1;
> @@ -974,10 +987,6 @@
>                       lprintf(DEBUG_LVL2, " checking mtd %s\n", mtd->name);
> 
>                       // general checks
> -                     if ((mandatory) && (!mtd->filename)) {
> -                             exitcode = 1;
> -                             printf("mtd %s not specified correctly or at 
> all in parameter
> file\n", mtd->name);
> -                     }
> 
>                       // no further checks if no file data present
>                       if (!mtd->filename) {
> @@ -993,14 +1002,15 @@
>                       magicerror = 0;
>                       if (magiccheck) {
>                               switch (i) {
> -                                     case 1: // kernel
> +                                     case 1: // image
> +                                     case 2: // kernel
>                                               if (!(
>                                                      ((mtd->magic[0] == 0x27) 
> && (mtd->magic[1] == 0x05))     // uImage
>                                               )) {
>                                                       magicerror = 1;
>                                               }
>                                               break;
> -                                     case 2: // rootfs
> +                                     case 3: // rootfs
>                                               if (!(
>                                                      ((mtd->magic[0] == 0x68) 
> && (mtd->magic[1] == 0x73))     //
> squashfs
>                                                   || ((mtd->magic[0] == 0x85) 
> && (mtd->magic[1] == 0x19))     // jffs
> @@ -1024,8 +1034,15 @@
>                       }
> 
>                       // mtd specific size check
> +                     if (mtd == &mtd_image) {
> +                             if (mtd->filesize < 0x00200000) {
> +                                     exitcode = 1;
> +                                     printf("mtd %s input file %s too 
> unrealistic small (0x%08lX)\n",
> mtd->name, mtd->filename, mtd->filesize);
> +                             }
> +                     }
> +
>                       if (mtd == &mtd_kernel) {
> -                             if (mtd->filesize < 0x00050000) {
> +                             if (mtd->filesize < 0x00080000) {
>                                       exitcode = 1;
>                                       printf("mtd %s input file %s too 
> unrealistic small (0x%08lX)\n",
> mtd->name, mtd->filename, mtd->filesize);
>                               }
> @@ -1044,6 +1061,25 @@
>                               }
>                       }
>               }
> +
> +             // Check for mandatory parts
> +             if ((!mtd_image.filename) && (!mtd_kernel.filename ||
> !mtd_rootfs.filename)) {
> +                     exitcode = 1;
> +                     if (mtd_kernel.filename && !mtd_rootfs.filename) {
> +                             printf("Kernel without rootfs, either 
> incorrectly specified or not
> at all in parameter file\n");
> +                     } else if (!mtd_kernel.filename && mtd_rootfs.filename) 
> {
> +                             printf("Rootfs without kernel, either 
> incorrectly specified or not
> at all in parameter file\n");
> +                     } else {
> +                             printf("Neither an image nor kernel with rootfs 
> was/were correctly
> specified or at all in parameter file\n");
> +                     }
> +             }
> +
> +             // Check for duplicate parts
> +             if ((mtd_image.filename) && (mtd_kernel.filename ||
> mtd_rootfs.filename)) {
> +                     exitcode = 1;
> +                     printf("Image and kernel/rootfs specified in parameter 
> file\n");
> +             }
> +
>               lprintf(DEBUG, "...done checking mtd data\n");
>       }
> 
> Index: target/linux/orion/image/generic.mk
> ===================================================================
> --- target/linux/orion/image/generic.mk       (revision 29422)
> +++ target/linux/orion/image/generic.mk       (working copy)
> @@ -1,15 +1,24 @@
>  #
> -# Copyright (C) 2008-2010 OpenWrt.org
> +# Copyright (C) 2008-2011 OpenWrt.org
>  #
>  # This is free software, licensed under the GNU General Public License v2.
>  # See /LICENSE for more information.
>  #
> 
> +### DO NOT INDENT LINES CONTAINING $(call xyz) AS THIS MAY CHANGE THE
> CONTEXT
> +### OF THE FIRST LINE IN THE CALLED VARIABLE (NOTE: variable!)
> +### see
> http://www.gnu.org/software/make/manual/html_node/Call-Function.html#Call-Function
> +### ACTUALLY IT IS A SIMPLE MACRO EXPANSION
> +
> +### use round brackets for make variables, and curly brackets for shell
> variables
> +
>  define Image/Prepare
> +### Dummy comment for indented calls of Image/Prepare
>       cp $(LINUX_DIR)/arch/arm/boot/uImage $(KDIR)/uImage
>  endef
> 
>  define Image/BuildKernel
> +### Dummy comment for indented calls of Image/BuildKernel
>       # Orion Kernel uImages
>   # WRT350N v2: mach id 1633 (0x661)
>       echo -en "\x06\x1c\xa0\xe3\x61\x10\x81\xe3" > $(KDIR)/wrt350nv2-zImage
> @@ -51,25 +60,27 @@
>       rm -rf "${TMP_DIR}/$2_webupgrade"
>       mkdir "${TMP_DIR}/$2_webupgrade"
>   # create parameter file
> -     echo ":kernel $5 ${BIN_DIR}/openwrt-$2-uImage"
>> "${TMP_DIR}/$2_webupgrade/$2.par"
> -     echo ":rootfs 0 ${KDIR}/root.$1" >>"${TMP_DIR}/$2_webupgrade/$2.par"
> +     echo ':image 0 $(BIN_DIR)/openwrt-$(2)-$(1).img'
>> '$(TMP_DIR)/$(2)_webupgrade/$(2).par'
>       [ ! -f "$(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin" ] || ( \
>               echo ":u-boot 0
> $(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin"
>>> "${TMP_DIR}/$2_webupgrade/$2.par"; )
>       echo "#version 0x2020" >>"${TMP_DIR}/$2_webupgrade/$2.par"
>   # create bin file for recovery and webupgrade image
>       ( cd "${TMP_DIR}/$2_webupgrade"; \
> -             "${STAGING_DIR_HOST}/bin/$2-builder" \
> +             "${STAGING_DIR_HOST}/bin/wrt350nv2-builder" \
>                       -v -b "${TMP_DIR}/$2_webupgrade/$2.par"; \
>       )
>   # copy bin file as recovery image
>       $(CP) "${TMP_DIR}/$2_webupgrade/wrt350n.bin"
> "$(BIN_DIR)/openwrt-$2-$1-recovery.bin"
>   # create webupgrade image for stock firmware update mechanism
> -     zip "${TMP_DIR}/$2_webupgrade/wrt350n.zip"
> "${TMP_DIR}/$2_webupgrade/wrt350n.bin"
> -     "${STAGING_DIR_HOST}/bin/$2-builder" -v -z
> "${TMP_DIR}/$2_webupgrade/wrt350n.zip"
> "${BIN_DIR}/openwrt-$2-$1-webupgrade.img"
> +     ( cd '$(TMP_DIR)/$(2)_webupgrade'; \
> +             zip 'wrt350n.zip' 'wrt350n.bin'; \
> +     )
> +     "${STAGING_DIR_HOST}/bin/wrt350nv2-builder" -v -z
> "${TMP_DIR}/$2_webupgrade/wrt350n.zip"
> "${BIN_DIR}/openwrt-$2-$1-webupgrade.img"
>       rm -rf "${TMP_DIR}/$2_webupgrade"
>  endef
> 
>  define Image/Build
> +### Dummy comment for indented calls of Image/Build with $(1)
>  $(call Image/Build/$(1),$(1))
>  $(call Image/Build/Netgear,$(1),wnr854t,NG_WNR854T,$(1))
>   # Leave WRT350Nv2 at last position due to webimage dependency for zip
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to