diff options
author | Shane Volpe <shanevolpe@gmail.com> | 2007-04-07 20:23:43 +0000 |
---|---|---|
committer | Shane Volpe <shanevolpe@gmail.com> | 2007-04-07 20:23:43 +0000 |
commit | 3a5e5c11ca9e5d3686fce546e33eacc62f5e7dcd (patch) | |
tree | 4f25aacf8558a773fad14e0018d4afb9f560237f /classes | |
parent | 1ff6665ead8253bb6adde2afeb004f9ef625f4f4 (diff) | |
parent | 2effa2e0213c0cecaf6d3a0ca7390a288ebc9908 (diff) |
merge of '59b19c7d48e754418caf1f4214b1ce53d2cca5c4'
and 'f4a044e0ef8b886ef1bdc74ae09f12874ddf7130'
Diffstat (limited to 'classes')
-rw-r--r-- | classes/base.bbclass | 108 | ||||
-rw-r--r-- | classes/cpan.bbclass | 6 | ||||
-rw-r--r-- | classes/image.bbclass | 2 | ||||
-rw-r--r-- | classes/insane.bbclass | 5 | ||||
-rw-r--r-- | classes/lsppchd-image.bbclass | 11 | ||||
-rw-r--r-- | classes/lsppchg-image.bbclass | 11 | ||||
-rw-r--r-- | classes/meta.bbclass | 5 | ||||
-rw-r--r-- | classes/n2100-image.bbclass | 10 | ||||
-rw-r--r-- | classes/nslu2-image.bbclass | 4 | ||||
-rw-r--r-- | classes/openmoko-base.bbclass | 1 | ||||
-rw-r--r-- | classes/opie.bbclass | 4 | ||||
-rw-r--r-- | classes/package.bbclass | 5 | ||||
-rw-r--r-- | classes/package_deb.bbclass | 6 | ||||
-rw-r--r-- | classes/package_ipk.bbclass | 6 | ||||
-rw-r--r-- | classes/palmtop.bbclass | 7 | ||||
-rw-r--r-- | classes/patch.bbclass | 19 | ||||
-rw-r--r-- | classes/sanity.bbclass | 2 | ||||
-rw-r--r-- | classes/storcenter-image.bbclass | 30 | ||||
-rw-r--r-- | classes/turbostation-image.bbclass | 7 |
19 files changed, 213 insertions, 36 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass index 53139e19fa..6011790ebe 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -10,6 +10,67 @@ def base_path_join(a, *p): path += '/' + b return path +# for MD5/SHA handling +def base_chk_load_parser(config_path): + import ConfigParser, os, bb + parser = ConfigParser.ConfigParser() + if not len(parser.read(config_path)) == 1: + bb.note("Can not open the '%s' ini file" % config_path) + raise Exception("Can not open the '%s'" % config_path) + + return parser + +def base_chk_file(parser, pn, pv, src_uri, localpath, data): + import os, bb + # Try PN-PV-SRC_URI first and then try PN-SRC_URI + # we rely on the get method to create errors + pn_pv_src = "%s-%s-%s" % (pn,pv,src_uri) + pn_src = "%s-%s" % (pn,src_uri) + if parser.has_section(pn_pv_src): + md5 = parser.get(pn_pv_src, "md5") + sha256 = parser.get(pn_pv_src, "sha256") + elif parser.has_section(pn_src): + md5 = parser.get(pn_src, "md5") + sha256 = parser.get(pn_src, "sha256") + elif parser.has_section(src_uri): + md5 = parser.get(src_uri, "md5") + sha256 = parser.get(src_uri, "sha256") + else: + return False + #raise Exception("Can not find a section for '%s' '%s' and '%s'" % (pn,pv,src_uri)) + + # md5 and sha256 should be valid now + if not os.path.exists(localpath): + bb.note("The locapath does not exist '%s'" % localpath) + raise Exception("The path does not exist '%s'" % localpath) + + + # call md5(sum) and shasum + try: + md5pipe = os.popen('md5sum ' + localpath) + md5data = (md5pipe.readline().split() or [ "" ])[0] + md5pipe.close() + except OSError: + raise Exception("Executing md5sum failed") + + try: + shapipe = os.popen('PATH=%s oe_sha256sum %s' % (bb.data.getVar('PATH', data, True), localpath)) + shadata = (shapipe.readline().split() or [ "" ])[0] + shapipe.close() + except OSError: + raise Exception("Executing shasum failed") + + if not md5 == md5data: + bb.note("The MD5Sums did not match. Wanted: '%s' and Got: '%s'" % (md5,md5data)) + raise Exception("MD5 Sums do not match. Wanted: '%s' Got: '%s'" % (md5, md5data)) + + if not sha256 == shadata: + bb.note("The SHA256 Sums do not match. Wanted: '%s' Got: '%s'" % (sha256,shadata)) + raise Exception("SHA256 Sums do not match. Wanted: '%s' Got: '%s'" % (sha256, shadata)) + + return True + + def base_dep_prepend(d): import bb; # @@ -17,16 +78,22 @@ def base_dep_prepend(d): # the case where host == build == target, for now we don't work in # that case though. # - deps = "" + if bb.data.getVar('PN', d, True) == "shasum-native": + deps = "" + else: + deps = "shasum-native " + + # INHIBIT_PATCH_TOOL don't apply the patch tool dependency + inhibit_patch = (bb.data.getVar("INHIBIT_PATCH_TOOL", d, True) == "1") or False # INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not # we need that built is the responsibility of the patch function / class, not # the application. patchdeps = bb.data.getVar("PATCHTOOL", d, 1) - if patchdeps: + if patchdeps and not inhibit_patch: patchdeps = "%s-native" % patchdeps if not patchdeps in bb.data.getVar("PROVIDES", d, 1): - deps = patchdeps + deps += patchdeps if not bb.data.getVar('INHIBIT_DEFAULT_DEPS', d): if (bb.data.getVar('HOST_SYS', d, 1) != @@ -378,6 +445,7 @@ python base_do_mrproper() { addtask fetch do_fetch[dirs] = "${DL_DIR}" +do_fetch[depends] = "shasum-native:do_populate_staging" python base_do_fetch() { import sys @@ -402,6 +470,40 @@ python base_do_fetch() { except bb.fetch.FetchError: (type, value, traceback) = sys.exc_info() raise bb.build.FuncFailed("Fetch failed: %s" % value) + except bb.fetch.MD5SumError: + (type, value, traceback) = sys.exc_info() + raise bb.build.FuncFailed("MD5 failed: %s" % value) + except: + (type, value, traceback) = sys.exc_info() + raise bb.build.FuncFailed("Unknown fetch Error: %s" % value) + + + # Verify the SHA and MD5 sums we have in OE and check what do + # in + check_sum = bb.which(bb.data.getVar('BBPATH', d, True), "conf/checksums.ini") + if not check_sum: + bb.note("No conf/checksums.ini found, not checking checksums") + return + + try: + parser = base_chk_load_parser(check_sum) + except: + bb.note("Creating the CheckSum parser failed") + return + + pv = bb.data.getVar('PV', d, True) + pn = bb.data.getVar('PN', d, True) + + # Check each URI + for url in src_uri.split(): + localpath = bb.fetch.localpath(url,localdata) + (type,host,path,_,_,_) = bb.decodeurl(url) + uri = "%s://%s%s" % (type,host,path) + try: + if not base_chk_file(parser, pn, pv,uri, localpath, d): + bb.note("%s-%s-%s has no section, not checking URI" % (pn,pv,uri)) + except Exception: + raise bb.build.FuncFailed("Checksum of '%s' failed" % uri) } addtask fetchall after do_fetch diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass index 74bbebf882..a566f0fa42 100644 --- a/classes/cpan.bbclass +++ b/classes/cpan.bbclass @@ -26,6 +26,12 @@ cpan_do_compile () { if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc" fi + + if test ${TARGET_ARCH} = "powerpc" ; then + OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc" + fi + + oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" $OPTIONS } diff --git a/classes/image.bbclass b/classes/image.bbclass index 5055b5b987..4f870915d0 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -93,7 +93,7 @@ fakeroot do_rootfs () { fi cd ${DEPLOY_DIR_IMAGE}/ - rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.* + rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.$type ln -s ${IMAGE_NAME}.rootfs.$type ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.$type done diff --git a/classes/insane.bbclass b/classes/insane.bbclass index 1f20fa6614..21348a8bb6 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -59,6 +59,7 @@ def package_qa_get_machine_dict(): }, "linux-gnueabi" : { "arm" : (40, 0, 0, True, True), + "armeb" : (40, 0, 0, False, True), }, } @@ -254,6 +255,10 @@ def package_qa_check_arch(path,name,d): import bb, os target_os = bb.data.getVar('TARGET_OS', d, True) target_arch = bb.data.getVar('TARGET_ARCH', d, True) + + # FIXME: Cross package confuse this check, so just skip them + if bb.data.inherits_class('cross', d): + return True # avoid following links to /usr/bin (e.g. on udev builds) # we will check the files pointed to anyway... diff --git a/classes/lsppchd-image.bbclass b/classes/lsppchd-image.bbclass index da280551d4..cb13222d64 100644 --- a/classes/lsppchd-image.bbclass +++ b/classes/lsppchd-image.bbclass @@ -1 +1,10 @@ -IMAGE_POSTPROCESS_COMMAND += "" +IMAGE_PREPROCESS_COMMAND_lsppchd += "export KPATH=`ls -tr ${IMAGE_ROOTFS}/boot/uImage-* | tail -1`; ln -sf /boot/${KPATH##*/} ${IMAGE_ROOTFS}/boot/uImage;" +IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;" +IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;" +IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;" + +lsppchd_pack_image() { +: +} + +IMAGE_POSTPROCESS_COMMAND += "lsppchd_pack_image; " diff --git a/classes/lsppchg-image.bbclass b/classes/lsppchg-image.bbclass index da280551d4..553414224d 100644 --- a/classes/lsppchg-image.bbclass +++ b/classes/lsppchg-image.bbclass @@ -1 +1,10 @@ -IMAGE_POSTPROCESS_COMMAND += "" +IMAGE_PREPROCESS_COMMAND_lsppchg += "export KPATH=`ls -tr ${IMAGE_ROOTFS}/boot/uImage-* | tail -1`; ln -sf /boot/${KPATH##*/} ${IMAGE_ROOTFS}/boot/uImage;" +IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;" +IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;" +IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;" + +lsppchg_pack_image() { +: +} + +IMAGE_POSTPROCESS_COMMAND += "lsppchg_pack_image; " diff --git a/classes/meta.bbclass b/classes/meta.bbclass new file mode 100644 index 0000000000..f7d41eec26 --- /dev/null +++ b/classes/meta.bbclass @@ -0,0 +1,5 @@ + +PACKAGES = "" + +BUILD_ALL_DEPS = "1" +do_build[recrdeptask] = "do_build"
\ No newline at end of file diff --git a/classes/n2100-image.bbclass b/classes/n2100-image.bbclass index 811b1d37b7..bc6c12e1fb 100644 --- a/classes/n2100-image.bbclass +++ b/classes/n2100-image.bbclass @@ -1,9 +1,3 @@ -DEPENDS += "openssl-native" -EXTRA_IMAGECMD = "--little-endian" -ERASEBLOCK_SIZE = "0x20000" -IMAGE_FSTYPES = "jffs2" -IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;' - n2100_pack_image() { # find latest kernel KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/zImage* | tail -1` @@ -32,5 +26,7 @@ n2100_pack_image() { dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null cat $KERNEL $PADFILE $ROOTFS > $OUTPUT rm -f $PADFILE - ls -l $OUTPUT + ls -l $OUTPUT } + +IMAGE_POSTPROCESS_COMMAND += "n2100_pack_image; " diff --git a/classes/nslu2-image.bbclass b/classes/nslu2-image.bbclass index e1af34fa57..14bf989055 100644 --- a/classes/nslu2-image.bbclass +++ b/classes/nslu2-image.bbclass @@ -16,5 +16,5 @@ nslu2_pack_image () { rm -rf ${DEPLOY_DIR_IMAGE}/slug } -EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware ixp4xx-npe upslug2-native' -IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; " +EXTRA_IMAGEDEPENDS_nslu2 += 'slugimage-native nslu2-linksys-firmware ixp4xx-npe upslug2-native' +IMAGE_POSTPROCESS_COMMAND_nslu2 += "nslu2_pack_image; " diff --git a/classes/openmoko-base.bbclass b/classes/openmoko-base.bbclass index 35243c9752..8643daa7a4 100644 --- a/classes/openmoko-base.bbclass +++ b/classes/openmoko-base.bbclass @@ -9,6 +9,7 @@ def openmoko_base_get_subdir(d): if section == 'base' or section == 'libs': return "" elif section in 'apps tools pim'.split(): return "applications" elif section == "panel-plugin": return "panel-plugins" + elif section == "inputmethods": return "inputmethods" else: return section SUBDIR = "${@openmoko_base_get_subdir(d)}" diff --git a/classes/opie.bbclass b/classes/opie.bbclass index 92cde5487b..915de890cf 100644 --- a/classes/opie.bbclass +++ b/classes/opie.bbclass @@ -19,10 +19,6 @@ OPIE_CVS_PV ?= "1.2.2+cvs${SRCDATE}" DEPENDS_prepend = "${@["libopie2 ", ""][(bb.data.getVar('PN', d, 1) == 'libopie2')]}" -FILES_${PN}-dbg += " ${palmtopdir}/lib/.debug \ - ${palmtopdir}/bin/.debug \ - ${palmtopdir}/plugins/*/.debug " - # to be consistent, put all targets into workdir # NOTE: leave one space at the end, other files are expecting that EXTRA_QMAKEVARS_POST += "DESTDIR=${S} " diff --git a/classes/package.bbclass b/classes/package.bbclass index 07fdb7f890..3e80b2b31c 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -573,6 +573,7 @@ python package_do_shlibs() { bb.mkdirhier(shlibs_dir) needed = {} + private_libs = bb.data.getVar('PRIVATE_LIBS', d, 1) for pkg in packages.split(): needs_ldconfig = False bb.debug(2, "calculating shlib provides for %s" % pkg) @@ -596,7 +597,9 @@ python package_do_shlibs() { needed[pkg].append(m.group(1)) m = re.match("\s+SONAME\s+([^\s]*)", l) if m and not m.group(1) in sonames: - sonames.append(m.group(1)) + # if library is private (only used by package) then do not build shlib for it + if not private_libs or -1 == private_libs.find(m.group(1)): + sonames.append(m.group(1)) if m and libdir_re.match(root): needs_ldconfig = True shlibs_file = os.path.join(shlibs_dir, pkg + ".list") diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass index 9697426d5d..388f9819bd 100644 --- a/classes/package_deb.bbclass +++ b/classes/package_deb.bbclass @@ -138,7 +138,11 @@ python do_package_deb () { raise bb.build.FuncFailed("unable to open control file for writing.") fields = [] - fields.append(["Version: %s-%s\n", ['PV', 'PR']]) + pe = bb.data.getVar('PE', d, 1) + if pe and int(pe) > 0: + fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']]) + else: + fields.append(["Version: %s-%s\n", ['PV', 'PR']]) fields.append(["Description: %s\n", ['DESCRIPTION']]) fields.append(["Section: %s\n", ['SECTION']]) fields.append(["Priority: %s\n", ['PRIORITY']]) diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass index 70bcdf6b7f..19c082d978 100644 --- a/classes/package_ipk.bbclass +++ b/classes/package_ipk.bbclass @@ -142,7 +142,11 @@ python do_package_ipk () { raise bb.build.FuncFailed("unable to open control file for writing.") fields = [] - fields.append(["Version: %s-%s\n", ['PV', 'PR']]) + pe = bb.data.getVar('PE', d, 1) + if pe and int(pe) > 0: + fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']]) + else: + fields.append(["Version: %s-%s\n", ['PV', 'PR']]) fields.append(["Description: %s\n", ['DESCRIPTION']]) fields.append(["Section: %s\n", ['SECTION']]) fields.append(["Priority: %s\n", ['PRIORITY']]) diff --git a/classes/palmtop.bbclass b/classes/palmtop.bbclass index b4bd21ab25..39b9bd2b60 100644 --- a/classes/palmtop.bbclass +++ b/classes/palmtop.bbclass @@ -17,4 +17,9 @@ EXTRA_QMAKEVARS_POST += '${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "ye EXTRA_QMAKEVARS_POST += "${@["LIBS+=-lqpe ", ""][(bb.data.getVar('PN', d, 1) == 'libqpe-opie')]}" DEPENDS_prepend = "${@["virtual/libqpe1 uicmoc-native ", ""][(bb.data.getVar('PN', d, 1) == 'libqpe-opie')]}" -FILES_${PN} = "${palmtopdir}" +PACKAGES = "${PN}-dbg ${PN}-dev ${PN} ${PN}-doc ${PN}-locale" +FILES_${PN} = " ${palmtopdir} " +FILES_${PN}-dev += " ${palmtopdir}/lib/lib*.so " +FILES_${PN}-dbg += " ${palmtopdir}/lib/.debug \ + ${palmtopdir}/bin/.debug \ + ${palmtopdir}/plugins/*/.debug " diff --git a/classes/patch.bbclass b/classes/patch.bbclass index 0a7b94cffc..07d18470f7 100644 --- a/classes/patch.bbclass +++ b/classes/patch.bbclass @@ -3,10 +3,20 @@ def patch_init(d): import os, sys + class NotFoundError(Exception): + def __init__(self, path): + self.path = path + def __str__(self): + return "Error: %s not found." % self.path + def md5sum(fname): import md5, sys - f = file(fname, 'rb') + try: + f = file(fname, 'rb') + except IOError: + raise NotFoundError(fname) + m = md5.new() while True: d = f.read(8096) @@ -24,11 +34,6 @@ def patch_init(d): def __str__(self): return "Command Error: exit status: %d Output:\n%s" % (self.status, self.output) - class NotFoundError(Exception): - def __init__(self, path): - self.path = path - def __str__(self): - return "Error: %s not found." % self.path def runcmd(args, dir = None): import commands @@ -482,7 +487,7 @@ python patch_do_patch() { bb.note("Applying patch '%s'" % pname) try: patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True) - except NotFoundError: + except: import sys raise bb.build.FuncFailed(str(sys.exc_value)) resolver.Resolve() diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass index 958ab91fa6..ec73e0cab7 100644 --- a/classes/sanity.bbclass +++ b/classes/sanity.bbclass @@ -86,7 +86,7 @@ def check_sanity(e): if not check_app_exists('${BUILD_PREFIX}g++', e.data): missing = missing + "C++ Compiler (${BUILD_PREFIX}g++)," - required_utilities = "patch diffstat texi2html makeinfo cvs svn git bzip2 tar gzip gawk" + required_utilities = "patch diffstat texi2html makeinfo cvs svn git bzip2 tar gzip gawk md5sum" for util in required_utilities.split(): if not check_app_exists( util, e.data ): diff --git a/classes/storcenter-image.bbclass b/classes/storcenter-image.bbclass new file mode 100644 index 0000000000..de77f1b417 --- /dev/null +++ b/classes/storcenter-image.bbclass @@ -0,0 +1,30 @@ +storcenter_pack_image() { + # find latest kernel + KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1` + if [ -z "$KERNEL" ]; then + oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux-storcenter to create one." + exit 1 + fi + ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 + OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img + PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz + HEX_MAX_KERN_SIZE=170000 + DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc ` + HEX_MAX_ROOT_SIZE=590000 + DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc ` + KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'` + if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then + oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE." + exit 1 + fi + ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'` + if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then + oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE." + exit 1 + fi + PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc ` + dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null + cat $KERNEL $PADFILE $ROOTFS > $OUTPUT + rm -f $PADFILE + ls -l $OUTPUT +} diff --git a/classes/turbostation-image.bbclass b/classes/turbostation-image.bbclass index d82e3996d5..5a0768c687 100644 --- a/classes/turbostation-image.bbclass +++ b/classes/turbostation-image.bbclass @@ -1,8 +1,3 @@ -EXTRA_IMAGECMD = "--big-endian" -ERASEBLOCK_SIZE = "0x20000" -IMAGE_FSTYPES = "jffs2" -IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;' - turbostation_pack_image() { # find latest kernel KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1` @@ -33,3 +28,5 @@ turbostation_pack_image() { rm -f $PADFILE ls -l $OUTPUT } + +IMAGE_POSTPROCESS_COMMAND += "turbostation_pack_image; " |