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