From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1S2UNW-0008Pu-Fz for garchives@archives.gentoo.org; Tue, 28 Feb 2012 21:14:37 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5849DE069C; Tue, 28 Feb 2012 21:14:23 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 52C4EE0863; Tue, 28 Feb 2012 21:13:48 +0000 (UTC) Received: from [10.0.0.62] (89-74-61-34.dynamic.chello.pl [89.74.61.34]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: nelchael) by smtp.gentoo.org (Postfix) with ESMTPSA id DB7421B4021; Tue, 28 Feb 2012 21:13:46 +0000 (UTC) Message-ID: <4F4D4380.9070909@gentoo.org> Date: Tue, 28 Feb 2012 22:13:36 +0100 From: Krzysztof Pawlik Organization: Gentoo User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120213 Thunderbird/10.0.1 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 CC: Gentoo Dev , gentoo-python@lists.gentoo.org Subject: [gentoo-dev] New eclass for Python X-Enigmail-Version: 1.3.5 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="------------enig53FBEA2CB445BAB9780984F2" X-Archives-Salt: 1338cf89-cab8-4120-8035-4f8bddb27f31 X-Archives-Hash: edc987cdfd36f1c8b5fe779ff3b4e0b3 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig53FBEA2CB445BAB9780984F2 Content-Type: multipart/mixed; boundary="------------060706040902050309090700" This is a multi-part message in MIME format. --------------060706040902050309090700 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, After some work during weekend on Python packages I've decided to start a= rewrite of Python/distutils eclass for installing Python packages. My mai= n goal was simplicity and functionality similar to ruby-ng.eclass (thanks Ruby t= eam for your great work!). Python team members already contributed comments and suggestions and helped me to make the eclass better, thank you! Highlights: - *SIMPLE*next - uses PYTHON_TARGETS use-expand (no more python-updater, whoooo!) - EAPI4 required, uses REQUIRED_USE - <400 lines of code including documentation - should work for >95% of packages (my educated guess) - did I mention it's *SIMPLE*? - easy to maintain & read so it's also easy to use Important thing: I'm not aiming at having 100% functionality of current python.eclass+distutils.eclass in the new one, I think that simplicity is= more important that supporting every possible, obscure case that's out there. I'm attaching the eclass itself and two ebuilds using it, code is also av= ailable in my overlay at http://git.overlays.gentoo.org/gitweb/?p=3Ddev/nelchael.= git;a=3Dsummary If there are no objections then during the weekend (March 3, 4) I will ad= d this to portage (after finishing remaining TODO items, PyPy requires 4G of RAM= (!!)). --=20 Krzysztof Pawlik key id: 0xF6A80E46 desktop-misc, java, vim, kernel, python, apache... --------------060706040902050309090700 Content-Type: text/plain; name="xlwt-0.7.2-r256.ebuild" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xlwt-0.7.2-r256.ebuild" IyBDb3B5cmlnaHQgMTk5OS0yMDEyIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXIkCgpFQVBJPSI0IgoKaW5oZXJpdCBweXRob24tZGlzdHV0aWxzLW5nCgpERVND UklQVElPTj0iUHl0aG9uIGxpYnJhcnkgdG8gY3JlYXRlIHNwcmVhZHNoZWV0IGZpbGVzIGNv bXBhdGlibGUgd2l0aCBFeGNlbCIKSE9NRVBBR0U9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcv cHlwaS94bHd0IgpTUkNfVVJJPSJtaXJyb3I6Ly9weXBpLyR7UE46MDoxfS8ke1BOfS8ke1B9 LnRhci5neiIKCkxJQ0VOU0U9IkJTRCIKU0xPVD0iMCIKS0VZV09SRFM9In5hbWQ2NCB+cHBj LWFpeCB+aHBwYS1ocHV4IH5pYTY0LWhwdXggfng4Ni1pbnRlcml4IH54ODYtbGludXggfnNw YXJjLXNvbGFyaXMgfng4Ni1zb2xhcmlzIgpJVVNFPSJleGFtcGxlcyIKCkRFUEVORD0iIgpS REVQRU5EPSIiCgpweXRob25fcHJlcGFyZV9hbGwoKSB7CglzZWQgLWkgXAoJCS1lICJzLCdk b2MsIyAnZG9jLGciIFwKCQktZSAicywnZXhhLCMgJ2V4YSxnIiBcCgkJc2V0dXAucHkgfHwg ZGllCn0KCnB5dGhvbl9pbnN0YWxsX2FsbCgpIHsKCWRvaHRtbCB4bHd0L2RvYy8qLmh0bWwK CWlmIHVzZSBleGFtcGxlczsgdGhlbgoJCWluc2ludG8gIi91c3Ivc2hhcmUvZG9jLyR7UEZ9 IgoJCWRvaW5zIC1yIHhsd3QvZXhhbXBsZXMKCWZpCn0K --------------060706040902050309090700 Content-Type: text/plain; name="xlrd-0.7.1-r256.ebuild" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xlrd-0.7.1-r256.ebuild" IyBDb3B5cmlnaHQgMTk5OS0yMDEyIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXIkCgpFQVBJPSI0IgoKaW5oZXJpdCBweXRob24tZGlzdHV0aWxzLW5nCgpERVND UklQVElPTj0iTGlicmFyeSBmb3IgZGV2ZWxvcGVycyB0byBleHRyYWN0IGRhdGEgZnJvbSBN aWNyb3NvZnQgRXhjZWwgKHRtKSBzcHJlYWRzaGVldCBmaWxlcyIKSE9NRVBBR0U9Imh0dHA6 Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS94bHJkIgpTUkNfVVJJPSJtaXJyb3I6Ly9weXBpLyR7 UE46MDoxfS8ke1BOfS8ke1B9LnRhci5neiIKCkxJQ0VOU0U9IkJTRCIKU0xPVD0iMCIKS0VZ V09SRFM9In5hbWQ2NCB+cHBjLWFpeCB+aHBwYS1ocHV4IH5pYTY0LWhwdXggfng4Ni1pbnRl cml4IH54ODYtbGludXggfnNwYXJjLXNvbGFyaXMgfng4Ni1zb2xhcmlzIgpJVVNFPSJleGFt cGxlcyIKCkRFUEVORD0iIgpSREVQRU5EPSIiCgpweXRob25fcHJlcGFyZV9hbGwoKSB7Cglz ZWQgLWkgXAoJCS1lICJzLCdkb2MsIyAnZG9jLGciIFwKCQktZSAicywnZXhhLCMgJ2V4YSxn IiBcCgkJc2V0dXAucHkgfHwgZGllCn0KCnB5dGhvbl9pbnN0YWxsX2FsbCgpIHsKCXJtIC1m ICIke0R9L3Vzci9iaW4iLyoucHkgfHwgZGllCgoJcHl0aG9uLWRpc3R1dGlscy1uZ19kb3Nj cmlwdCBzY3JpcHRzL3J1bnhscmQucHkKCglkb2h0bWwgeGxyZC9kb2MvKi5odG1sCglpZiB1 c2UgZXhhbXBsZXM7IHRoZW4KCQlpbnNpbnRvICIvdXNyL3NoYXJlL2RvYy8ke1BGfSIKCQlk b2lucyAtciB4bHJkL2V4YW1wbGVzCglmaQp9Cg== --------------060706040902050309090700 Content-Type: text/plain; name="python_targets.desc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="python_targets.desc" IyBDb3B5cmlnaHQgMjAwOS0yMDEyIEdlbnRvbyBGb3VuZGF0aW9uLgojIERpc3RyaWJ1dGVk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIK IyAkSGVhZGVyJAoKIyBUaGlzIGZpbGUgY29udGFpbnMgZGVzY3JpcHRpb25zIG9mIFBZVEhP Tl9UQVJHRVRTIFVTRV9FWFBBTkQgZmxhZ3MuCgpweXRob24yXzUgLSBCdWlsZCB3aXRoIFB5 dGhvbiAyLjUKcHl0aG9uMl82IC0gQnVpbGQgd2l0aCBQeXRob24gMi42CnB5dGhvbjJfNyAt IEJ1aWxkIHdpdGggUHl0aG9uIDIuNwpweXRob24zXzEgLSBCdWlsZCB3aXRoIFB5dGhvbiAz LjEKcHl0aG9uM18yIC0gQnVpbGQgd2l0aCBQeXRob24gMy4yCmp5dGhvbjJfNSAtIEJ1aWxk IHdpdGggSnl0aG9uIDIuNQpweXB5MV83IC0gQnVpbGQgd2l0aCBQeVB5IDEuNwpweXB5MV84 IC0gQnVpbGQgd2l0aCBQeVB5IDEuOAo= --------------060706040902050309090700 Content-Type: text/plain; name="python-distutils-ng.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="python-distutils-ng.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDEyIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXIkCgojIEBFQ0xBU1M6IHB5dGhvbi1kaXN0dXRpbHMtbmcKIyBATUFJTlRBSU5F UjoKIyBQeXRob24gaGVyZCA8cHl0aG9uQGdlbnRvby5vcmc+CiMgQEFVVEhPUjoKIyBBdXRo b3I6IEtyenlzenRvZiBQYXdsaWsgPG5lbGNoYWVsQGdlbnRvby5vcmc+CiMgQEJMVVJCOiBB biBlY2xhc3MgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIHVzaW5nIGRpc3R1dGls cyB3aXRoIHByb3BlcgojIHN1cHBvcnQgZm9yIG11bHRpcGxlIFB5dGhvbiBzbG90cy4KIyBA REVTQ1JJUFRJT046CiMgVGhlIFB5dGhvbiBlY2xhc3MgaXMgZGVzaWduZWQgdG8gYWxsb3cg YW4gZWFzaWVyIGluc3RhbGxhdGlvbiBvZiBQeXRob24KIyBwYWNrYWdlcyBhbmQgdGhlaXIg aW5jb3Jwb3JhdGlvbiBpbnRvIHRoZSBHZW50b28gTGludXggc3lzdGVtLgojCiMgVE9ETzog RG9jdW1lbnQgaW1wbGVtZW50YXRpb25zIQoKIyBARUNMQVNTLVZBUklBQkxFOiBQWVRIT05f Q09NUEFUCiMgQERFU0NSSVBUSU9OOgojIFRoaXMgdmFyaWFibGUgY29udGFpbnMgYSBzcGFj ZSBzZXBhcmF0ZWQgbGlzdCBvZiBpbXBsZW1lbnRhdGlvbnMgKHNlZSBhYm92ZSkgYQojIHBh Y2thZ2UgaXMgY29tcGF0aWJsZSB0by4gSXQgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBgaW5o ZXJpdCcgY2FsbC4gVGhlCiMgZGVmYXVsdCBpcyB0byBlbmFibGUgYWxsIGltcGxlbWVudGF0 aW9ucy4KCmlmIFtbIC16ICIke1BZVEhPTl9DT01QQVR9IiBdXTsgdGhlbgoJIyBEZWZhdWx0 OiBwdXJlIHB5dGhvbiwgc3VwcG9ydCBhbGwgaW1wbGVtZW50YXRpb25zCglQWVRIT05fQ09N UEFUPSIgIHB5dGhvbjJfNSBweXRob24yXzYgcHl0aG9uMl83IgoJUFlUSE9OX0NPTVBBVCs9 IiBweXRob24zXzEgcHl0aG9uM18yIgoJUFlUSE9OX0NPTVBBVCs9IiBqeXRob24yXzUiCglQ WVRIT05fQ09NUEFUKz0iIHB5cHkxXzcgcHlweTFfOCIKZmkKCiMgQEVDTEFTUy1WQVJJQUJM RTogUFlUSE9OX09QVElPTkFMCiMgQERFU0NSSVBUSU9OOgojIFNldCB0aGUgdmFsdWUgdG8g InllcyIgdG8gbWFrZSB0aGUgZGVwZW5kZW5jeSBvbiBhIFB5dGhvbiBpbnRlcnByZXRlcgoj IG9wdGlvbmFsLgoKIyBARUNMQVNTLVZBUklBQkxFOiBQWVRIT05fRElTQUJMRV9DT01QSUxB VElPTgojIEBERVNDUklQVElPTjoKIyBTZXQgdGhlIHZhbHVlIHRvICJ5ZXMiIHRvIHNraXAg Y29tcGlsYXRpb24gYW5kL29yIG9wdGltaXphdGlvbiBvZiBQeXRob24KIyBtb2R1bGVzLgoK RVhQT1JUX0ZVTkNUSU9OUyBzcmNfdW5wYWNrIHNyY19wcmVwYXJlIHNyY19jb25maWd1cmUg c3JjX2NvbXBpbGUgc3JjX3Rlc3Qgc3JjX2luc3RhbGwKCmNhc2UgIiR7RUFQSX0iIGluCgkw fDF8MnwzKQoJCWRpZSAiVW5zdXBwb3J0ZWQgRUFQST0ke0VBUEl9ICh0b28gb2xkKSBmb3Ig cHl0aG9uLWRpc3R1dGlscy1uZy5lY2xhc3MiIDs7Cgk0KQoJCSMgRUFQST00IG5lZWRlZCBm b3IgUkVRVUlSRURfVVNFCgkJUz0iJHtTOi0ke1dPUktESVJ9LyR7UH19IgoJCTs7CgkqKQoJ CWRpZSAiVW5zdXBwb3J0ZWQgRUFQST0ke0VBUEl9ICh1bmtub3duKSBmb3IgcHl0aG9uLWRp c3R1dGlscy1uZy5lY2xhc3MiIDs7CmVzYWMKCiMgQEZVTkNUSU9OOiBfcHl0aG9uLWRpc3R1 dGlscy1uZ19nZW5lcmF0ZV9kZXBlbmQKIyBAVVNBR0U6IGltcGxlbWVudGF0aW9uCiMgQFJF VFVSTjogUGFja2FnZSBhdG9tIG9mIGEgUHl0aG9uIGltcGxlbWVudGF0aW9uIGZvciAqREVQ RU5ELgojIEBERVNDUklQVElPTjoKIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZ1bGwg cGFja2FnZSBhdG9tIG9mIGEgUHl0aG9uIGltcGxlbWVudGF0aW9uLgojCiMgYGltcGxlbWVu dGF0aW9uJyBoYXMgdG8gYmUgb25lIG9mIHRoZSB2YWxpZCB2YWx1ZXMgZm9yIFBZVEhPTl9D T01QQVQuCl9weXRob24tZGlzdHV0aWxzLW5nX2dlbmVyYXRlX2RlcGVuZCgpIHsKCWxvY2Fs IGltcGw9IiR7MS9fLy59IgoJY2FzZSAiJHtpbXBsfSIgaW4KCQlweXRob24/Lj8pCgkJCWVj aG8gImRldi1sYW5nLyR7aW1wbDo6LTN9OiR7aW1wbDogLTN9IiA7OwoJCWp5dGhvbj8uPykK CQkJZWNobyAiZGV2LWphdmEvJHtpbXBsOjotM306JHtpbXBsOiAtM30iIDs7CgkJcHlweT8u PykKCQkJZWNobyAiZGV2LXB5dGhvbi8ke2ltcGw6Oi0zfToke2ltcGw6IC0zfSIgOzsKCQkq KQoJCQlkaWUgIlVuc3VwcG9ydGVkIGltcGxlbWVudGF0aW9uOiAkezF9IiA7OwoJZXNhYwp9 CgojIEBGVU5DVElPTjogX3B5dGhvbi1kaXN0dXRpbHMtbmdfZ2V0X2JpbmFyeV9mb3JfaW1w bGVtZW50YXRpb24KIyBAVVNBR0U6IGltcGxlbWVudGF0aW9uCiMgQFJFVFVSTjogRnVsbCBw YXRoIHRvIFB5dGhvbiBiaW5hcnkgZm9yIGdpdmVuIGltcGxlbWVudGF0aW9uLgojIEBERVND UklQVElPTjoKIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgZnVsbCBwYXRoIGZvciBQeXRob24g YmluYXJ5IGZvciBnaXZlbiBpbXBsZW1lbnRhdGlvbi4KIwojIEJpbmFyeSByZXR1cm5lZCBi eSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc2ltcGx5IGNhbGxp bmcKIyBgcHl0aG9uJy4KX3B5dGhvbi1kaXN0dXRpbHMtbmdfZ2V0X2JpbmFyeV9mb3JfaW1w bGVtZW50YXRpb24oKSB7Cglsb2NhbCBpbXBsPSIkezEvXy8ufSIKCWNhc2UgIiR7aW1wbH0i IGluCgkJcHl0aG9uPy4/fGp5dGhvbj8uPykKCQkJZWNobyAiL3Vzci9iaW4vJHtpbXBsfSIg OzsKCQlweXB5Py4/KQoJCQllY2hvICJUT0RPIiA7OwoJCSopCgkJCWRpZSAiVW5zdXBwb3J0 ZWQgaW1wbGVtZW50YXRpb246ICR7MX0iIDs7Cgllc2FjCn0KCnJlcXVpcmVkX3VzZV9zdHI9 IiB8fCAoCglweXRob25fdGFyZ2V0c19weXRob24yXzUgcHl0aG9uX3RhcmdldHNfcHl0aG9u Ml82IHB5dGhvbl90YXJnZXRzX3B5dGhvbjJfNwoJcHl0aG9uX3RhcmdldHNfcHl0aG9uM18x IHB5dGhvbl90YXJnZXRzX3B5dGhvbjNfMgoJcHl0aG9uX3RhcmdldHNfanl0aG9uMl81Cglw eXRob25fdGFyZ2V0c19weXB5MV83IHB5dGhvbl90YXJnZXRzX3B5cHkxXzggKSIKaWYgW1sg IiR7UFlUSE9OX09QVElPTkFMfSIgPSAieWVzIiBdXTsgdGhlbgoJSVVTRSs9InB5dGhvbiIK CVJFUVVJUkVEX1VTRSs9IiBweXRob24/ICggJHtyZXF1aXJlZF91c2Vfc3RyfSApIgplbHNl CglSRVFVSVJFRF9VU0UrPSIke3JlcXVpcmVkX3VzZV9zdHJ9IgpmaQoKZm9yIGltcGwgaW4g JHtQWVRIT05fQ09NUEFUfTsgZG8KCUlVU0UrPSIgcHl0aG9uX3RhcmdldHNfJHtpbXBsfSAi Cglsb2NhbCBkZXBfc3RyPSJweXRob25fdGFyZ2V0c18ke2ltcGx9PyAoICQoX3B5dGhvbi1k aXN0dXRpbHMtbmdfZ2VuZXJhdGVfZGVwZW5kICIke2ltcGx9IikgKSIKCglpZiBbWyAiJHtQ WVRIT05fT1BUSU9OQUx9IiA9ICJ5ZXMiIF1dOyB0aGVuCgkJUkRFUEVORD0iJHtSREVQRU5E fSBweXRob24/ICggJHtkZXBfc3RyfSApIgoJCURFUEVORD0iJHtERVBFTkR9IHB5dGhvbj8g KCAke2RlcF9zdHJ9ICkiCgllbHNlCgkJUkRFUEVORD0iJHtSREVQRU5EfSAke2RlcF9zdHJ9 IgoJCURFUEVORD0iJHtERVBFTkR9ICR7ZGVwX3N0cn0iCglmaQpkb25lCgpQQUNLQUdFX1NQ RUNJRklDX1M9IiR7UyMke1dPUktESVJ9L30iCgojIEBGVU5DVElPTjogX3B5dGhvbi1kaXN0 dXRpbHMtbmdfcnVuX2Zvcl9pbXBsCiMgQFVTQUdFOiBpbXBsZW1lbnRhdGlvbiBjb21tYW5k X3RvX3J1bgojIEBERVNDUklQVElPTjoKIyBSdW4gY29tbWFuZF90b19ydW4gdXNpbmcgc3Bl Y2lmaWVkIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KIwojIFRoaXMgd2lsbCBydW4gdGhlIGNv bW1hbmRfdG9fcnVuIGluIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHdvcmtpbmcgZGlyZWN0 b3J5LgpfcHl0aG9uLWRpc3R1dGlscy1uZ19ydW5fZm9yX2ltcGwoKSB7Cglsb2NhbCBpbXBs PSIkezF9IgoJbG9jYWwgY29tbWFuZD0iJHsyfSIKCglTPSIke1dPUktESVJ9L2ltcGxfJHtp bXBsfS8ke1BBQ0tBR0VfU1BFQ0lGSUNfU30iCglQWVRIT049IiQoX3B5dGhvbi1kaXN0dXRp bHMtbmdfZ2V0X2JpbmFyeV9mb3JfaW1wbGVtZW50YXRpb24gIiR7aW1wbH0iKSIKCgllaW5m byAiUnVubmluZyAke2NvbW1hbmR9IGluICR7U30gZm9yICR7aW1wbH0iCgoJcHVzaGQgIiR7 U30iICY+IC9kZXYvbnVsbAoJIiR7Y29tbWFuZH0iICIke2ltcGx9IiAiJHtQWVRIT059IgoJ cG9wZCAmPiAvZGV2L251bGwKfQoKIyBARlVOQ1RJT046IF9weXRob24tZGlzdHV0aWxzLW5n X3J1bl9mb3JfYWxsX2ltcGxzCiMgQFVTQUdFOiBjb21tYW5kX3RvX3J1bgojIEBERVNDUklQ VElPTjoKIyBSdW4gY29tbWFuZF90b19ydW4gZm9yIGFsbCBlbmFibGVkIFB5dGhvbiBpbXBs ZW1lbnRhdGlvbnMuCiMKIyBTZWUgYWxzbyBfcHl0aG9uLWRpc3R1dGlscy1uZ19ydW5fZm9y X2ltcGwKX3B5dGhvbi1kaXN0dXRpbHMtbmdfcnVuX2Zvcl9hbGxfaW1wbHMoKSB7Cglsb2Nh bCBjb21tYW5kPSIkezF9IgoKCWZvciBpbXBsIGluICR7UFlUSE9OX0NPTVBBVH07IGRvCgkJ dXNlICJweXRob25fdGFyZ2V0c18ke2ltcGx9IiAke1BZVEhPTl9DT01QQVR9IHx8IGNvbnRp bnVlCgkJX3B5dGhvbi1kaXN0dXRpbHMtbmdfcnVuX2Zvcl9pbXBsICIke2ltcGx9IiAiJHtj b21tYW5kfSIKCWRvbmUKfQoKIyBARlVOQ1RJT046IF9weXRob24tZGlzdHV0aWxzLW5nX2Rl ZmF1bHRfZGlzdHV0aWxzX2NvbXBpbGUKIyBAREVTQ1JJUFRJT046CiMgRGVmYXVsdCBzcmNf Y29tcGlsZSBmb3IgZGlzdHV0aWxzLWJhc2VkIHBhY2thZ2VzLgpfcHl0aG9uLWRpc3R1dGls cy1uZ19kZWZhdWx0X2Rpc3R1dGlsc19jb21waWxlKCkgewoJIiR7UFlUSE9OfSIgc2V0dXAu cHkgYnVpbGQgfHwgZGllCn0KCiMgQEZVTkNUSU9OOiBfcHl0aG9uLWRpc3R1dGlscy1uZ19k ZWZhdWx0X2Rpc3R1dGlsc19pbnN0YWxsCiMgQERFU0NSSVBUSU9OOgojIERlZmF1bHQgc3Jj X2luc3RhbGwgZm9yIGRpc3R1dGlscy1iYXNlZCBwYWNrYWdlcy4KX3B5dGhvbi1kaXN0dXRp bHMtbmdfZGVmYXVsdF9kaXN0dXRpbHNfaW5zdGFsbCgpIHsKCSIke1BZVEhPTn0iIHNldHVw LnB5IGluc3RhbGwgLS1uby1jb21waWxlIC0tcm9vdD0iJHtEfS8iIHx8IGRpZQp9CgojIEBG VU5DVElPTjogX3B5dGhvbi1kaXN0dXRpbHMtbmdfaGFzX2NvbXBpbGVhbGwKIyBAVVNBR0U6 IGltcGxlbWVudGF0aW9uCiMgQFJFVFVSTjogMCBpZiBnaXZlbiBpbXBsZW1lbnRhdGlvbiBo YXMgY29tcGlsZWFsbCBtb2R1bGUKIyBAREVTQ1JJUFRJT046CiMgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGRlY2lkZSB3aGVuZXZlciB0byBjb21waWxlIFB5dGhvbiBtb2R1bGVzIGZv ciBnaXZlbgojIGltcGxlbWVudGF0aW9uLgpfcHl0aG9uLWRpc3R1dGlscy1uZ19oYXNfY29t cGlsZWFsbCgpIHsKCWNhc2UgIiR7MX0iIGluCgkJcHl0aG9uP18/fGp5dGhvbj9fPykKCQkJ cmV0dXJuIDAgOzsKCQkqKQoJCQlyZXR1cm4gMSA7OwoJZXNhYwp9CgojIEBGVU5DVElPTjog X3B5dGhvbi1kaXN0dXRpbHMtbmdfaGFzX2NvbXBpbGVhbGxfb3B0CiMgQFVTQUdFOiBpbXBs ZW1lbnRhdGlvbgojIEBSRVRVUk46IDAgaWYgZ2l2ZW4gaW1wbGVtZW50YXRpb24gaGFzIGNv bXBpbGVhbGwgbW9kdWxlIGFuZCBzdXBwb3J0cyAjIG9wdGltaXphdGlvbnMKIyBAREVTQ1JJ UFRJT046CiMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRlY2lkZSB3aGVuZXZlciB0byBj b21waWxlIGFuZCBvcHRpbWl6ZSBQeXRob24KIyBtb2R1bGVzIGZvciBnaXZlbiBpbXBsZW1l bnRhdGlvbi4KX3B5dGhvbi1kaXN0dXRpbHMtbmdfaGFzX2NvbXBpbGVhbGxfb3B0KCkgewoJ Y2FzZSAiJHsxfSIgaW4KCQlweXRob24/Xz8pCgkJCXJldHVybiAwIDs7CgkJKikKCQkJcmV0 dXJuIDEgOzsKCWVzYWMKfQoKIyBARlVOQ1RJT046IHB5dGhvbi1kaXN0dXRpbHMtbmdfZG9z Y3JpcHQKIyBAVVNBR0U6IHNjcmlwdF9maWxlX25hbWUKIyBAREVTQ1JJUFRJT046CiMgSW5z dGFsbCBnaXZlbiBzY3JpcHQgZmlsZSBpbiAvdXNyL2Jpbi8gZm9yIGFsbCBlbmFibGVkIGlt cGxlbWVudGF0aW9ucyB1c2luZwojIG9yaWdpbmFsIHNjcmlwdCBuYW1lIGFzIGEgYmFzZSBu YW1lLgojCiMgU2VlIGFsc28gcHl0aG9uLWRpc3R1dGlscy1uZ19uZXdzY3JpcHQKcHl0aG9u LWRpc3R1dGlscy1uZ19kb3NjcmlwdCgpIHsKCXB5dGhvbi1kaXN0dXRpbHMtbmdfbmV3c2Ny aXB0ICIkezF9IiAiJChiYXNlbmFtZSAiJHsxfSIpIgp9CgojIEBGVU5DVElPTjogcHl0aG9u LWRpc3R1dGlscy1uZ19uZXdzY3JpcHQKIyBAVVNBR0U6IHNjcmlwdF9maWxlX25hbWUgbmV3 X2ZpbGVfbmFtZQojIEBERVNDUklQVElPTjoKIyBJbnN0YWxsIGdpdmVuIHNjcmlwdCBmaWxl IGluIC91c3IvYmluLyBmb3IgYWxsIGVuYWJsZWQgaW1wbGVtZW50YXRpb25zIHVzaW5nCiMg bmV3X2ZpbGVfbmFtZSBhcyBhIGJhc2UgbmFtZS4KIwojIEVhY2ggc2NyaXB0IGNvcHkgd2ls bCBoYXZlIHRoZSBuYW1lIG1hbmdsZWQgdG8gIm5ld19maWxlX25hbWUtSU1QTEVNRU5UQVRJ T04iCiMgYW5kIG5ldyBoYXNoLWJhbmcgbGluZSB3aWxsIGJlIGluc2VydGVkIHRvIHJlZmVy ZW5jZSBzcGVjaWZpYyBQeXRob24KIyBpbnRlcnByZXRlci4KIwojIFRoZXJlIHdpbGwgYmUg YWxzbyBhIHN5bWxpbmsgd2l0aCBuYW1lIGVxdWFsIHRvIG5ld19maWxlX25hbWUgdGhhdCB3 aWxsIGJlIGEKIyBzeW1saW5rIHRvIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGRl ZmF1bHRzIHRvIHZhbHVlIG9mCiMgUFlUSE9OX0RFRkFVTFRfSU1QTEVNRU5UQVRJT04sIGlm IG5vdCBzcGVjaWZpZWQgdGhlIGZ1bmN0aW9uIHdpbGwgcGljayBkZWZhdWx0CiMgaW1wbGVt ZW50YXRpb246IGl0IHdpbGwgdGhlIGJlIGZpcnN0IGVuYWJsZWQgZnJvbSB0aGUgZm9sbG93 aW5nIGxpc3Q6CiMgICBweXRob24yXzcsIHB5dGhvbjJfNiwgcHl0aG9uMl81LCBweXRob24z XzIsIHB5dGhvbjNfMSwgcHlweTFfOCwgcHlweTFfNywganl0aG9uMl81CnB5dGhvbi1kaXN0 dXRpbHMtbmdfbmV3c2NyaXB0KCkgewoJW1sgLW4gIiR7MX0iIF1dIHx8IGRpZSAiTWlzc2lu ZyBzb3VyY2UgZmlsZSBuYW1lIgoJW1sgLW4gIiR7Mn0iIF1dIHx8IGRpZSAiTWlzc2luZyBk ZXN0aW5hdGlvbiBmaWxlIG5hbWUiCglsb2NhbCBzb3VyY2VfZmlsZT0iJHsxfSIKCWxvY2Fs IGRlc3RpbmF0aW9uX2ZpbGU9IiR7Mn0iCglsb2NhbCBkZWZhdWx0X2ltcGw9IiR7UFlUSE9O X0RFRkFVTFRfSU1QTEVNRU5UQVRJT059IgoKCWlmIFtbIC16ICIke2RlZmF1bHRfaW1wbH0i IF1dOyB0aGVuCgkJIyBUT0RPOiBQaWNrIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KCQlmb3Ig aW1wbCBpbiBweXRob257Ml83LDJfNiwyXzUsM18yLDJfMX0gcHlweXsxXzgsMV83fSBqeXRo b24yXzU7IGRvCgkJCXVzZSAicHl0aG9uX3RhcmdldHNfJHtpbXBsfSIgfHwgY29udGludWUK CQkJZGVmYXVsdF9pbXBsPSIke2ltcGx9IgoJCQlicmVhazsKCQlkb25lCgllbHNlCgkJdXNl ICJweXRob25fdGFyZ2V0c18ke2ltcGx9IiB8fCBcCgkJCWRpZSAiZGVmYXVsdCBpbXBsZW1l bnRhdGlvbiAke2RlZmF1bHRfaW1wbH0gbm90IGVuYWJsZWQiCglmaQoKCVtbIC1uICIke2Rl ZmF1bHRfaW1wbH0iIF1dIHx8IGRpZSAiQ291bGQgbm90IHNlbGVjdCBkZWZhdWx0IGltcGxl bWVudGF0aW9uIgoKCWVpbmZvICJJbnN0YWxsaW5nICR7c291cmNlX2ZpbGV9IGZvciBtdWx0 aXBsZSBpbXBsZW1lbnRhdGlvbnMgKGRlZmF1bHQ6ICR7ZGVmYXVsdF9pbXBsfSkiCglpbnNp bnRvIC91c3IvYmluCglmb3IgaW1wbCBpbiAke1BZVEhPTl9DT01QQVR9OyBkbwoJCXVzZSAi cHl0aG9uX3RhcmdldHNfJHtpbXBsfSIgJHtQWVRIT05fQ09NUEFUfSB8fCBjb250aW51ZQoK CQluZXdpbnMgIiR7c291cmNlX2ZpbGV9IiAiJHtkZXN0aW5hdGlvbl9maWxlfS0ke2ltcGx9 IgoJCWZwZXJtcyA3NTUgIi91c3IvYmluLyR7ZGVzdGluYXRpb25fZmlsZX0tJHtpbXBsfSIK CQlzZWQgLWkgXAoJCQktZSAiMWkjISQoX3B5dGhvbi1kaXN0dXRpbHMtbmdfZ2V0X2JpbmFy eV9mb3JfaW1wbGVtZW50YXRpb24gIiR7aW1wbH0iKSIgXAoJCQkiJHtEfS91c3IvYmluLyR7 ZGVzdGluYXRpb25fZmlsZX0tJHtpbXBsfSIgfHwgZGllCglkb25lCgoJZG9zeW0gIiR7ZGVz dGluYXRpb25fZmlsZX0tJHtkZWZhdWx0X2ltcGx9IiAiL3Vzci9iaW4vJHtkZXN0aW5hdGlv bl9maWxlfSIKfQoKIyBQaGFzZSBmdW5jdGlvbjogc3JjX3VucGFjawpweXRob24tZGlzdHV0 aWxzLW5nX3NyY191bnBhY2soKSB7CglbWyAiJHtQWVRIT05fT1BUSU9OQUx9IiA9ICJ5ZXMi IF1dICYmIHsgdXNlIHB5dGhvbiB8fCByZXR1cm47IH0KCglpZiB0eXBlIHB5dGhvbl91bnBh Y2sgJj4gL2Rldi9udWxsOyB0aGVuCgkJIyBUaGlzIHNob3VsZCBub3QgcnVuIGFueXRoaW5n IHNwZWNpZmljIHRvIGFueSBzaW5nbGUgUHl0aG9uCgkJIyBpbXBsZW1lbnRhdGlvbiwga2Vl cCBpdCBnZW5lcmljOgoJCXB5dGhvbl91bnBhY2tfYWxsCgllbHNlCgkJW1sgLW4gJHtBfSBd XSAmJiB1bnBhY2sgJHtBfQoJZmkKfQoKIyBQaGFzZSBmdW5jdGlvbjogc3JjX3ByZXBhcmUK cHl0aG9uLWRpc3R1dGlscy1uZ19zcmNfcHJlcGFyZSgpIHsKCVtbICIke1BZVEhPTl9PUFRJ T05BTH0iID0gInllcyIgXV0gJiYgeyB1c2UgcHl0aG9uIHx8IHJldHVybjsgfQoKCSMgVHJ5 IHRvIHJ1biBiaW5hcnkgZm9yIGVhY2ggaW1wbGVtZW50YXRpb246Cglmb3IgaW1wbCBpbiAk e1BZVEhPTl9DT01QQVR9OyBkbwoJCXVzZSAicHl0aG9uX3RhcmdldHNfJHtpbXBsfSIgJHtQ WVRIT05fQ09NUEFUfSB8fCBjb250aW51ZQoJCSQoX3B5dGhvbi1kaXN0dXRpbHMtbmdfZ2V0 X2JpbmFyeV9mb3JfaW1wbGVtZW50YXRpb24gIiR7aW1wbH0iKSBcCgkJCS1jICJpbXBvcnQg c3lzIiB8fCBkaWUKCWRvbmUKCgkjIFJ1biBwcmVwYXJlIHNoYXJlZCBieSBhbGwgaW1wbGVt ZW50YXRpb25zOgoJaWYgdHlwZSBweXRob25fcHJlcGFyZV9hbGwgJj4gL2Rldi9udWxsOyB0 aGVuCgkJZWluZm8gIlJ1bm5pbmcgcHl0aG9uX3ByZXBhcmVfYWxsIGluICR7U30gZm9yIGFs bCIKCQlweXRob25fcHJlcGFyZV9hbGwKCWZpCgoJIyBDcmVhdGUgYSBjb3B5IG9mIFMgZm9y IGVhY2ggaW1wbGVtZW50YXRpb246Cglmb3IgaW1wbCBpbiAke1BZVEhPTl9DT01QQVR9OyBk bwoJCXVzZSAicHl0aG9uX3RhcmdldHNfJHtpbXBsfSIgJHtQWVRIT05fQ09NUEFUfSB8fCBj b250aW51ZQoKCQllaW5mbyAiQ3JlYXRpbmcgY29weSBmb3IgJHtpbXBsfSBpbiAke1dPUktE SVJ9L2ltcGxfJHtpbXBsfSIKCQlta2RpciAtcCAiJHtXT1JLRElSfS9pbXBsXyR7aW1wbH0i IHx8IGRpZQoJCWNwIC1wciAiJHtTfSIgIiR7V09SS0RJUn0vaW1wbF8ke2ltcGx9LyR7UEFD S0FHRV9TUEVDSUZJQ19TfSIgfHwgZGllCglkb25lCgoJIyBSdW4gcHl0aG9uX3ByZXBhcmUg Zm9yIGVhY2ggaW1wbGVtZW50YXRpb246CglpZiB0eXBlIHB5dGhvbl9wcmVwYXJlICY+IC9k ZXYvbnVsbDsgdGhlbgoJCV9weXRob24tZGlzdHV0aWxzLW5nX3J1bl9mb3JfYWxsX2ltcGxz IHB5dGhvbl9wcmVwYXJlCglmaQp9CgojIFBoYXNlIGZ1bmN0aW9uOiBzcmNfY29uZmlndXJl CnB5dGhvbi1kaXN0dXRpbHMtbmdfc3JjX2NvbmZpZ3VyZSgpIHsKCVtbICIke1BZVEhPTl9P UFRJT05BTH0iID0gInllcyIgXV0gJiYgeyB1c2UgcHl0aG9uIHx8IHJldHVybjsgfQoKCWlm IHR5cGUgcHl0aG9uX2NvbmZpZ3VyZSAmPiAvZGV2L251bGw7IHRoZW4KCQlfcHl0aG9uLWRp c3R1dGlscy1uZ19ydW5fZm9yX2FsbF9pbXBscyBweXRob25fY29uZmlndXJlCglmaQp9Cgoj IFBoYXNlIGZ1bmN0aW9uOiBzcmNfY29tcGlsZQpweXRob24tZGlzdHV0aWxzLW5nX3NyY19j b21waWxlKCkgewoJW1sgIiR7UFlUSE9OX09QVElPTkFMfSIgPSAieWVzIiBdXSAmJiB7IHVz ZSBweXRob24gfHwgcmV0dXJuOyB9CgoJaWYgdHlwZSBweXRob25fY29tcGlsZSAmPiAvZGV2 L251bGw7IHRoZW4KCQlfcHl0aG9uLWRpc3R1dGlscy1uZ19ydW5fZm9yX2FsbF9pbXBscyBw eXRob25fY29tcGlsZQoJZWxzZQoJCV9weXRob24tZGlzdHV0aWxzLW5nX3J1bl9mb3JfYWxs X2ltcGxzIFwKCQkJX3B5dGhvbi1kaXN0dXRpbHMtbmdfZGVmYXVsdF9kaXN0dXRpbHNfY29t cGlsZQoJZmkKfQoKIyBQaGFzZSBmdW5jdGlvbjogc3JjX3Rlc3QKcHl0aG9uLWRpc3R1dGls cy1uZ19zcmNfdGVzdCgpIHsKCVtbICIke1BZVEhPTl9PUFRJT05BTH0iID0gInllcyIgXV0g JiYgeyB1c2UgcHl0aG9uIHx8IHJldHVybjsgfQoKCWlmIHR5cGUgcHl0aG9uX3Rlc3QgJj4g L2Rldi9udWxsOyB0aGVuCgkJX3B5dGhvbi1kaXN0dXRpbHMtbmdfcnVuX2Zvcl9hbGxfaW1w bHMgcHl0aG9uX3Rlc3QKCWZpCn0KCiMgUGhhc2UgZnVuY3Rpb246IHNyY19pbnN0YWxsCnB5 dGhvbi1kaXN0dXRpbHMtbmdfc3JjX2luc3RhbGwoKSB7CglbWyAiJHtQWVRIT05fT1BUSU9O QUx9IiA9ICJ5ZXMiIF1dICYmIHsgdXNlIHB5dGhvbiB8fCByZXR1cm47IH0KCglpZiB0eXBl IHB5dGhvbl9pbnN0YWxsICY+IC9kZXYvbnVsbDsgdGhlbgoJCV9weXRob24tZGlzdHV0aWxz LW5nX3J1bl9mb3JfYWxsX2ltcGxzIHB5dGhvbl9pbnN0YWxsCgllbHNlCgkJX3B5dGhvbi1k aXN0dXRpbHMtbmdfcnVuX2Zvcl9hbGxfaW1wbHMgXAoJCQlfcHl0aG9uLWRpc3R1dGlscy1u Z19kZWZhdWx0X2Rpc3R1dGlsc19pbnN0YWxsCglmaQoKCVM9IiR7V09SS0RJUn0vJHtQQUNL QUdFX1NQRUNJRklDX1N9IgoJaWYgdHlwZSBweXRob25faW5zdGFsbF9hbGwgJj4gL2Rldi9u dWxsOyB0aGVuCgkJZWluZm8gIlJ1bm5pbmcgcHl0aG9uX2luc3RhbGxfYWxsIGluICR7U30g Zm9yIGFsbCIKCQlweXRob25faW5zdGFsbF9hbGwKCWZpCgoJZm9yIGltcGwgaW4gJHtQWVRI T05fQ09NUEFUfTsgZG8KCQlbWyAiJHtQWVRIT05fRElTQUJMRV9DT01QSUxBVElPTn0iID0g InllcyIgXV0gJiYgY29udGludWUKCQl1c2UgInB5dGhvbl90YXJnZXRzXyR7aW1wbH0iICR7 UFlUSE9OX0NPTVBBVH0gfHwgY29udGludWUKCgkJUFlUSE9OPSIkKF9weXRob24tZGlzdHV0 aWxzLW5nX2dldF9iaW5hcnlfZm9yX2ltcGxlbWVudGF0aW9uICIke2ltcGx9IikiCgkJZm9y IGFjY2Vzc2libGVfcGF0aCBpbiAkKCR7UFlUSE9OfSAtYyAnaW1wb3J0IHN5czsgcHJpbnQg IiAiLmpvaW4oc3lzLnBhdGgpJyk7IGRvCgkJCVtbIC1kICIke0R9LyR7YWNjZXNzaWJsZV9w YXRofSIgXV0gfHwgY29udGludWUKCgkJCV9weXRob24tZGlzdHV0aWxzLW5nX2hhc19jb21w aWxlYWxsICIke2ltcGx9IiB8fCBjb250aW51ZQoJCQllYmVnaW4gIkNvbXBpbGluZyAke2Fj Y2Vzc2libGVfcGF0aH0gZm9yICR7aW1wbH0iCgkJCSR7UFlUSE9OfSBcCgkJCQktbSBjb21w aWxlYWxsIC1xIC1mICIke0R9LyR7YWNjZXNzaWJsZV9wYXRofSIgfHwgZGllCgkJCWVlbmQg JD8KCgkJCV9weXRob24tZGlzdHV0aWxzLW5nX2hhc19jb21waWxlYWxsX29wdCAiJHtpbXBs fSIgfHwgY29udGludWUKCQkJZWJlZ2luICJPcHRpbWl6aW5nICR7YWNjZXNzaWJsZV9wYXRo fSBmb3IgJHtpbXBsfSIKCQkJUFlUSE9OT1BUSU1JWkU9MSAke1BZVEhPTn0gXAoJCQkJLW0g Y29tcGlsZWFsbCAtcSAtZiAiJHtEfS8ke2FjY2Vzc2libGVfcGF0aH0iIHx8IGRpZQoJCQll ZW5kICQ/CgkJZG9uZTsKCWRvbmUKfQo= --------------060706040902050309090700-- --------------enig53FBEA2CB445BAB9780984F2 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBCgAGBQJPTUOFAAoJEBZyv1r2qA5GDqcH/RV8kZwBQTJvQ99PGYqlBOKB GXOk6tSAjoCOraRqOFx2KrNv2cglPfiLG+eepwAp5WXcBX0szI0ZG54wENM9caKm IbjE+CdcDZDPpUTRPBXsF6M0pOtzaq9wt3tgeYmfWkFkbfkDi2knsx6czSUXKPuP mM5KkFlokUEtEyWP5vfgyrscOhO8KBRioZXwkvkLrngtj6MPgvXwm2d6g6qOMsJq Jd0QfgeXb6AlZJ7DZegekHWQlLnSNOXrwcqmA1nDYDMuaKtYD1DQGHTkHXYlBKk1 pG87taAJfGU3XnXbOR40GDLGkpjXHXo2n6LjU2N8sZwlM+F6jF9UFFsOUyjl3rc= =C6j2 -----END PGP SIGNATURE----- --------------enig53FBEA2CB445BAB9780984F2--