From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1OFGDp-0001j2-S0 for mharc-grub-devel@gnu.org; Thu, 20 May 2010 20:36:17 -0400 Received: from [140.186.70.92] (port=49839 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OFGDh-0001io-JS for grub-devel@gnu.org; Thu, 20 May 2010 20:36:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OFGDd-0000o3-Sy for grub-devel@gnu.org; Thu, 20 May 2010 20:36:09 -0400 Received: from mail-ew0-f216.google.com ([209.85.219.216]:40357) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OFGDd-0000nh-Hk for grub-devel@gnu.org; Thu, 20 May 2010 20:36:05 -0400 Received: by ewy8 with SMTP id 8so98559ewy.8 for ; Thu, 20 May 2010 17:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :x-enigmail-version:content-type; bh=dgVcooiTX8OLbDwVl+Sbdzg4+6gZzqeoQ6iHpWU9ml8=; b=K4AAn33R4YsXyWyMUw2rv2mWbM40OEg/4rKYcckXNYyo62d0IMctvKNlZbH5R1/405 PTf5UCEJtlYum1ZEGgc53xccR03q3lNQsu8e1uz7JDyhGrt/DkfsdxggjRjbUc0Rghp2 sijOzDAd617qVjtAH9rHBy67xPnud8TzRIW/s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:x-enigmail-version:content-type; b=HJZtXLQUJnbuNbodlNNY8/HifxbqIvj+pTsX6GeQtW4G0BItPxIBXfTe9O1y3yQ3O9 99XlBhl8/jch9D13FreLRCjRzS1/NJ9Asin4E+UJ07ajVXBlK17X02U4RdSsRdWDtSqz G1JYBEVp46mDVYwdaMSCAKto+9Sz6HRb8fPNg= Received: by 10.213.40.201 with SMTP id l9mr108676ebe.28.1274402164470; Thu, 20 May 2010 17:36:04 -0700 (PDT) Received: from debian.bg45.phnet (gprs35.swisscom-mobile.ch [193.247.250.35]) by mx.google.com with ESMTPS id 15sm220749ewy.0.2010.05.20.17.36.00 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 20 May 2010 17:36:03 -0700 (PDT) Message-ID: <4BF5D564.6090701@gmail.com> Date: Fri, 21 May 2010 02:35:48 +0200 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20091109) MIME-Version: 1.0 To: The development of GNU GRUB References: <4BF5CB75.20101@gmail.com> In-Reply-To: X-Enigmail-Version: 0.95.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="------------enigA1894853C26BEE7AFD8A498D" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: Re: update-grub & Xen boot stanza generation X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 00:36:16 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigA1894853C26BEE7AFD8A498D Content-Type: multipart/mixed; boundary="------------070907030303080508030907" This is a multi-part message in MIME format. --------------070907030303080508030907 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Bruce Edge wrote: > 2010/5/20 Vladimir '=CF=86-coder/phcoder' Serbinenko > > > Bruce Edge wrote: > > Hi > > Apologies in advance if this is already in the works. > > > > I wanted to provide an etc/grub.d rule for generating boot > stanzas for > > Xen based systems such that it would end up in the upstream grub > release. > > If this conforms to the appropriate conventions, could someone > > possibly add it ? > > > > It's basically a copy of etc/grub.d/10_linux and adds checks for > dom0 > > capable kernels. I picked "09_" as I assumed that one would want = to > > default to the Xen boot entry, but that may be a matter of some > debate. > > > This is aready worked on but the problem is that it generates too m= uch > entries. If you have 5 different versions of hypervisor and 10 > different > kernels you have 100 entries. > > > What if I add a max_entries option. Say, don't generate more than 4 > stanzas total. Although I suppose then I need to go through and pick > the most recent kernel and hypervisor versions. > It feels like a kludgy solution > Actually the hypervisor version isn't an issue, > Xen installs a symlink for the most recent hypervisor in /boot, No such link here and most recent may break after upgrade > so one only needs to generate entries for one hypervisor. > > Where can I get a copy of the current implementation of this mechanism?= > > Thanks > > -Bruce > > =20 > > > Thanks > > > > -Bruce > > > > > > #!/bin/bash -e > > > #=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > > # > > # FILE: 09_xen > > # > > # USAGE: update-grub ... with this in /etc/grub.d > > # > > # DESCRIPTION: Generate grub2 boot stanza for Xen systems > > # Xen boot entries are automaticall= y > > added to grub.cfg > > # The 09-... name prefix puts the X= en > > boot entries before > > # the linux kernel entries > > # > > # OPTIONS: --- > > # REQUIREMENTS: --- grub2, Xen hypervisor > > # BUGS: --- probably > > # NOTES: --- Copied from 10_linux with a few hacks to > make ir > > work for Xen. > > # Incorporated suggestions = to > > only do this for valid dom0 kernels > > # AUTHOR: Bruce Edge (BRE), bruce.edge@lsi.com > > > > > > # COMPANY: LSI > > # VERSION: 1.0 > > # CREATED: 05/19/2010 02:32:34 PM PDT > > # REVISION: --- > > > #=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > > > > prefix=3D/usr > > exec_prefix=3D${prefix} > > libdir=3D${exec_prefix}/lib > > . ${libdir}/grub/update-grub_lib > > > > if [ "x${GRUB_DISTRIBUTOR}" =3D "x" ] ; then > > OS=3DGNU/Linux > > else > > OS=3D"${GRUB_DISTRIBUTOR}" > > fi > > > > # Source grub defaults > > . /etc/default/grub > > > > # loop-AES arranges things so that /dev/loop/X can be our root > device, but > > # the initrds that Linux uses don't like that. > > case ${GRUB_DEVICE} in > > /dev/loop/*|/dev/loop[0-9]) > > GRUB_DEVICE=3D`losetup ${GRUB_DEVICE} | sed -e > > "s/^[^(]*(\([^)]\+\)).*/\1/"` > > ;; > > esac > > > > if [ "x${GRUB_DEVICE_UUID}" =3D "x" ] || [ > "x${GRUB_DISABLE_LINUX_UUID}" > > =3D "xtrue" ] \ > > || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ; then > > LINUX_ROOT_DEVICE=3D${GRUB_DEVICE} > > else > > LINUX_ROOT_DEVICE=3DUUID=3D${GRUB_DEVICE_UUID} > > fi > > > > test_gt () > > { > > local a=3D`echo $1 | sed -e > > "s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g"` > > local b=3D`echo $2 | sed -e > > "s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g"` > > if [ "x$b" =3D "x" ] ; then > > return 0 > > fi > > dpkg --compare-versions "$a" gt "$b" > > return $? > > } > > > > find_latest () > > { > > local a=3D"" > > for i in $@ ; do > > if test_gt "$i" "$a" ; then > > a=3D"$i" > > fi > > done > > echo "$a" > > } > > > > list=3D`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do > > if grub_file_is_not_garbage "$i" && grep -q 'DOM0=3Dy' > > ${i/vmlinu[xz]/config} ; then echo -n "$i " ; fi > > done` > > > > while [ "x$list" !=3D "x" ] ; do > > linux=3D`find_latest $list` > > echo "Found linux image: $linux" >&2 > > basename=3D`basename $linux` > > dirname=3D`dirname $linux` > > rel_dirname=3D`make_system_path_relative_to_its_root $dirname` > > version=3D`echo $basename | sed -e "s,^[^0-9]*-,,g"` > > alt_version=3D`echo $version | sed -e "s,\.old$,,g"` > > linux_root_device_thisversion=3D"${LINUX_ROOT_DEVICE}" > > > > initrd=3D > > for i in "initrd.img-${version}" "initrd-${version}.img" \ > > "initrd.img-${alt_version}" > "initrd-${alt_version}.img"; do > > if test -e "${dirname}/${i}" ; then > > initrd=3D"$i" > > break > > fi > > done > > if test -n "${initrd}" ; then > > echo "Found initrd image: ${dirname}/${initrd}" >&2 > > else > > # "UUID=3D" magic is parsed by initrds. Since there's no > initrd, it > > can't work here. > > linux_root_device_thisversion=3D${GRUB_DEVICE} > > fi > > > > cat << EOF > > insmod lvm > > set root=3D(system-dom0_0) > > menuentry "Xen ${OS}, linux ${version}" { > > multiboot dummy=3Ddummy /boot/xen.gz $GRUB_CMDLINE_XEN_DE= FAULT > > module ${rel_dirname}/${basename} > > root=3D${linux_root_device_thisversion} $GRUB_CMDLINE_LINUX_DEFAU= LT > > EOF > > if test -n "${initrd}" ; then > > cat << EOF > > module ${rel_dirname}/${initrd} ${rel_dirname}/${initrd} > > EOF > > fi > > cat << EOF > > } > > EOF > > > > list=3D`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' = '` > > done > > > > > -------------------------------------------------------------------= ----- > > > > _______________________________________________ > > Grub-devel mailing list > > Grub-devel@gnu.org > > http://lists.gnu.org/mailman/listinfo/grub-devel > > > > > -- > Regards > Vladimir '=CF=86-coder/phcoder' Serbinenko > > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > > > -----------------------------------------------------------------------= - > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > =20 --=20 Regards Vladimir '=CF=86-coder/phcoder' Serbinenko --------------070907030303080508030907 Content-Type: text/plain; name="20_linux_xen.in" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="20_linux_xen.in" IyEgL2Jpbi9zaCAtZQoKIyBncnViLW1rY29uZmlnIGhlbHBlciBzY3JpcHQuCiMgQ29weXJp Z2h0IChDKSAyMDA2LDIwMDcsMjAwOCwyMDA5LDIwMTAgIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgojCiMgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgoj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBHUlVCIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKcHJlZml4PUBwcmVmaXhACmV4ZWNfcHJl Zml4PUBleGVjX3ByZWZpeEAKYmluZGlyPUBiaW5kaXJACmxpYmRpcj1AbGliZGlyQAouICR7 bGliZGlyfS9ncnViL2dydWItbWtjb25maWdfbGliCgpleHBvcnQgVEVYVERPTUFJTj1AUEFD S0FHRUAKZXhwb3J0IFRFWFRET01BSU5ESVI9QGxvY2FsZWRpckAKCkNMQVNTPSItLWNsYXNz IGdudS1saW51eCAtLWNsYXNzIGdudSAtLWNsYXNzIG9zIC0tY2xhc3MgeGVuIgoKaWYgWyAi eCR7R1JVQl9ESVNUUklCVVRPUn0iID0gIngiIF0gOyB0aGVuCiAgT1M9R05VL0xpbnV4CmVs c2UKICBPUz0iJHtHUlVCX0RJU1RSSUJVVE9SfSBHTlUvTGludXgiCiAgQ0xBU1M9Ii0tY2xh c3MgJChlY2hvICR7R1JVQl9ESVNUUklCVVRPUn0gfCB0ciAnW0EtWl0nICdbYS16XScgfCBj dXQgLWQnICcgLWYxKSAke0NMQVNTfSIKZmkKCiMgbG9vcC1BRVMgYXJyYW5nZXMgdGhpbmdz IHNvIHRoYXQgL2Rldi9sb29wL1ggY2FuIGJlIG91ciByb290IGRldmljZSwgYnV0CiMgdGhl IGluaXRyZHMgdGhhdCBMaW51eCB1c2VzIGRvbid0IGxpa2UgdGhhdC4KY2FzZSAke0dSVUJf REVWSUNFfSBpbgogIC9kZXYvbG9vcC8qfC9kZXYvbG9vcFswLTldKQogICAgR1JVQl9ERVZJ Q0U9YGxvc2V0dXAgJHtHUlVCX0RFVklDRX0gfCBzZWQgLWUgInMvXlteKF0qKFwoW14pXVwr XCkpLiovXDEvImAKICA7Owplc2FjCgppZiBbICJ4JHtHUlVCX0RFVklDRV9VVUlEfSIgPSAi eCIgXSB8fCBbICJ4JHtHUlVCX0RJU0FCTEVfTElOVVhfVVVJRH0iID0gInh0cnVlIiBdIFwK ICAgIHx8ICEgdGVzdCAtZSAiL2Rldi9kaXNrL2J5LXV1aWQvJHtHUlVCX0RFVklDRV9VVUlE fSIgOyB0aGVuCiAgTElOVVhfUk9PVF9ERVZJQ0U9JHtHUlVCX0RFVklDRX0KZWxzZQogIExJ TlVYX1JPT1RfREVWSUNFPVVVSUQ9JHtHUlVCX0RFVklDRV9VVUlEfQpmaQoKbGludXhfZW50 cnkgKCkKewogIG9zPSIkMSIKICB2ZXJzaW9uPSIkMiIKICB4ZW5fdmVyc2lvbj0iJDMiCiAg cmVjb3Zlcnk9IiQ0IgogIGFyZ3M9IiQ1IgogIHhlbl9hcmdzPSIkNiIKICBpZiAke3JlY292 ZXJ5fSA7IHRoZW4KICAgIHRpdGxlPSIkKGdldHRleHRfcXVvdGVkICIlcywgd2l0aCBMaW51 eCAlcyBhbmQgWEVOICVzIChyZWNvdmVyeSBtb2RlKSIpIgogIGVsc2UKICAgIHRpdGxlPSIk KGdldHRleHRfcXVvdGVkICIlcywgd2l0aCBMaW51eCAlcyBhbmQgWEVOICVzIikiCiAgZmkK ICBwcmludGYgIm1lbnVlbnRyeSAnJHt0aXRsZX0nICR7Q0xBU1N9IHtcbiIgIiR7b3N9IiAi JHt2ZXJzaW9ufSIgIiR7eGVuX3ZlcnNpb259IgogIHNhdmVfZGVmYXVsdF9lbnRyeSB8IHNl ZCAtZSAicy9eL1x0LyIKCiAgaWYgWyAteiAiJHtwcmVwYXJlX2Jvb3RfY2FjaGV9IiBdOyB0 aGVuCiAgICBwcmVwYXJlX2Jvb3RfY2FjaGU9IiQocHJlcGFyZV9ncnViX3RvX2FjY2Vzc19k ZXZpY2UgJHtHUlVCX0RFVklDRV9CT09UfSB8IHNlZCAtZSAicy9eL1x0LyIpIgogIGZpCiAg cHJpbnRmICclc1xuJyAiJHtwcmVwYXJlX2Jvb3RfY2FjaGV9IgogIGNhdCA8PCBFT0YKCWVj aG8JJyQocHJpbnRmICIkKGdldHRleHRfcXVvdGVkICJMb2FkaW5nIExpbnV4ICVzIC4uLiIp IiAke3ZlcnNpb259KScKCW11bHRpYm9vdAkke3JlbF94ZW5fZGlybmFtZX0vJHt4ZW5fYmFz ZW5hbWV9IHBsYWNlaG9sZGVyICR7eGVuX2FyZ3N9Cgltb2R1bGUJJHtyZWxfZGlybmFtZX0v JHtiYXNlbmFtZX0gcGxhY2Vob2xkZXIgcm9vdD0ke2xpbnV4X3Jvb3RfZGV2aWNlX3RoaXN2 ZXJzaW9ufSBybyAke2FyZ3N9CkVPRgogIGlmIHRlc3QgLW4gIiR7aW5pdHJkfSIgOyB0aGVu CiAgICBjYXQgPDwgRU9GCgllY2hvCSckKGdldHRleHRfcXVvdGVkICJMb2FkaW5nIGluaXRp YWwgcmFtZGlzayAuLi4iKScKCW1vZHVsZQkke3JlbF9kaXJuYW1lfS8ke2luaXRyZH0KRU9G CiAgZmkKICBjYXQgPDwgRU9GCn0KRU9GCn0KCmxpbnV4X2xpc3Q9YGZvciBpIGluIC9ib290 L3ZtbGludVt4el0tKmplcmVteSogL3ZtbGludVt4el0tKmplcmVteSogOyBkbwogICAgICAg IGlmIGdydWJfZmlsZV9pc19ub3RfZ2FyYmFnZSAiJGkiIDsgdGhlbiBlY2hvIC1uICIkaSAi IDsgZmkKICAgICAgZG9uZWAKeGVuX2xpc3Q9YGZvciBpIGluIC9ib290L3hlbio7IGRvCiAg ICAgICAgaWYgZ3J1Yl9maWxlX2lzX25vdF9nYXJiYWdlICIkaSIgOyB0aGVuIGVjaG8gLW4g IiRpICIgOyBmaQogICAgICBkb25lYApwcmVwYXJlX2Jvb3RfY2FjaGU9Cgp3aGlsZSBbICJ4 JHt4ZW5fbGlzdH0iICE9ICJ4IiBdIDsgZG8KICAgIGxpc3Q9IiR7bGludXhfbGlzdH0iCiAg ICBjdXJyZW50X3hlbj1gdmVyc2lvbl9maW5kX2xhdGVzdCAkeGVuX2xpc3RgCiAgICB4ZW5f YmFzZW5hbWU9YGJhc2VuYW1lICR7Y3VycmVudF94ZW59YAogICAgeGVuX2Rpcm5hbWU9YGRp cm5hbWUgJHtjdXJyZW50X3hlbn1gCiAgICByZWxfeGVuX2Rpcm5hbWU9YG1ha2Vfc3lzdGVt X3BhdGhfcmVsYXRpdmVfdG9faXRzX3Jvb3QgJHhlbl9kaXJuYW1lYAogICAgeGVuX3ZlcnNp b249YGVjaG8gJHhlbl9iYXNlbmFtZSB8IHNlZCAtZSAicywuZ3okLCxnO3MsXnhlbi0sLGci YAogICAgd2hpbGUgWyAieCRsaXN0IiAhPSAieCIgXSA7IGRvCglsaW51eD1gdmVyc2lvbl9m aW5kX2xhdGVzdCAkbGlzdGAKCWVjaG8gIkZvdW5kIGxpbnV4IGltYWdlOiAkbGludXgiID4m MgoJYmFzZW5hbWU9YGJhc2VuYW1lICRsaW51eGAKCWRpcm5hbWU9YGRpcm5hbWUgJGxpbnV4 YAoJcmVsX2Rpcm5hbWU9YG1ha2Vfc3lzdGVtX3BhdGhfcmVsYXRpdmVfdG9faXRzX3Jvb3Qg JGRpcm5hbWVgCgl2ZXJzaW9uPWBlY2hvICRiYXNlbmFtZSB8IHNlZCAtZSAicyxeW14wLTld Ki0sLGciYAoJYWx0X3ZlcnNpb249YGVjaG8gJHZlcnNpb24gfCBzZWQgLWUgInMsXC5vbGQk LCxnImAKCWxpbnV4X3Jvb3RfZGV2aWNlX3RoaXN2ZXJzaW9uPSIke0xJTlVYX1JPT1RfREVW SUNFfSIKCglpbml0cmQ9Cglmb3IgaSBpbiAiaW5pdHJkLmltZy0ke3ZlcnNpb259IiAiaW5p dHJkLSR7dmVyc2lvbn0uaW1nIiBcCgkgICAgImluaXRyZC0ke3ZlcnNpb259IiAiaW5pdHJk LmltZy0ke2FsdF92ZXJzaW9ufSIgXAoJICAgICJpbml0cmQtJHthbHRfdmVyc2lvbn0uaW1n IiAiaW5pdHJkLSR7YWx0X3ZlcnNpb259IjsgZG8KCSAgICBpZiB0ZXN0IC1lICIke2Rpcm5h bWV9LyR7aX0iIDsgdGhlbgoJCWluaXRyZD0iJGkiCgkJYnJlYWsKCSAgICBmaQoJZG9uZQoJ aWYgdGVzdCAtbiAiJHtpbml0cmR9IiA7IHRoZW4KCSAgICBlY2hvICJGb3VuZCBpbml0cmQg aW1hZ2U6ICR7ZGlybmFtZX0vJHtpbml0cmR9IiA+JjIKCWVsc2UKICAgICMgIlVVSUQ9IiBt YWdpYyBpcyBwYXJzZWQgYnkgaW5pdHJkcy4gIFNpbmNlIHRoZXJlJ3Mgbm8gaW5pdHJkLCBp dCBjYW4ndCB3b3JrIGhlcmUuCgkgICAgbGludXhfcm9vdF9kZXZpY2VfdGhpc3ZlcnNpb249 JHtHUlVCX0RFVklDRX0KCWZpCgoJbGludXhfZW50cnkgIiR7T1N9IiAiJHt2ZXJzaW9ufSIg IiR7eGVuX3ZlcnNpb259IiBmYWxzZSBcCgkgICAgIiR7R1JVQl9DTURMSU5FX0xJTlVYfSAk e0dSVUJfQ01ETElORV9MSU5VWF9ERUZBVUxUfSIgIiR7R1JVQl9DTURMSU5FX1hFTn0gJHtH UlVCX0NNRExJTkVfWEVOX0RFRkFVTFR9IgoJaWYgWyAieCR7R1JVQl9ESVNBQkxFX0xJTlVY X1JFQ09WRVJZfSIgIT0gInh0cnVlIiBdOyB0aGVuCgkgICAgbGludXhfZW50cnkgIiR7T1N9 IiAiJHt2ZXJzaW9ufSIgIiR7eGVuX3ZlcnNpb259IiB0cnVlIFwKCQkic2luZ2xlICR7R1JV Ql9DTURMSU5FX0xJTlVYfSIgIiR7R1JVQl9DTURMSU5FX1hFTn0iCglmaQoKCWxpc3Q9YGVj aG8gJGxpc3QgfCB0ciAnICcgJ1xuJyB8IGdyZXAgLXZ4ICRsaW51eCB8IHRyICdcbicgJyAn YAogICAgZG9uZQogICAgeGVuX2xpc3Q9YGVjaG8gJHhlbl9saXN0IHwgdHIgJyAnICdcbicg fCBncmVwIC12eCAkY3VycmVudF94ZW4gfCB0ciAnXG4nICcgJ2AKZG9uZQo= --------------070907030303080508030907-- --------------enigA1894853C26BEE7AFD8A498D Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iF4EAREKAAYFAkv11WwACgkQNak7dOguQglhQQD5AW4fapfRuEEDnaJY+o3hM2Rg 5EG69Ee6Zg2KcGLEY4oBAJN0J7ySVPpiMAbN/H2h+sZooXzOGARnVU2wEwDfQrBi =wBWj -----END PGP SIGNATURE----- --------------enigA1894853C26BEE7AFD8A498D--