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