Correction:
http://patchwork.openwrt.org/patch/1646/

On 16.12.2011 20:01, Matthias Buecher / Germany wrote:
> 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

Matthias "Maddes" Bücher

-- 
http://www.maddes.net/
Home: Earth / Germany / Ruhr-Area
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to