From mboxrd@z Thu Jan 1 00:00:00 1970 From: Federico Beffa Subject: [PATCH 1/2] build: Generalize 'package-with-explicit-python'. Date: Wed, 8 Feb 2017 19:17:37 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c1920702ef475054808e1ab Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56093) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cbWoJ-000866-S1 for guix-devel@gnu.org; Wed, 08 Feb 2017 13:17:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cbWoI-0000uP-3j for guix-devel@gnu.org; Wed, 08 Feb 2017 13:17:43 -0500 Received: from mail-ua0-x243.google.com ([2607:f8b0:400c:c08::243]:36228) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cbWoH-0000qh-Rf for guix-devel@gnu.org; Wed, 08 Feb 2017 13:17:42 -0500 Received: by mail-ua0-x243.google.com with SMTP id f2so13495451uaf.3 for ; Wed, 08 Feb 2017 10:17:39 -0800 (PST) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Guix-devel Cc: ericbavier@openmailbox.org, Myles English --94eb2c1920702ef475054808e1ab Content-Type: text/plain; charset=UTF-8 Generalize the Python procedure to recursively replace compiler/interpreter. --94eb2c1920702ef475054808e1ab Content-Type: text/x-patch; charset=UTF-8; name="0001-build-Generalize-package-with-explicit-python.patch" Content-Disposition: attachment; filename="0001-build-Generalize-package-with-explicit-python.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyx9ptyd0 RnJvbSBhODIyMGI0MzBkMTk2ZTViYjA3OWUyM2FjNjNiMWFjZDE2ZmRhYWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWRlcmljbyBCZWZmYSA8YmVmZmFAZmJlbmdpbmVlcmluZy5j aD4KRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE4OjU1OjMyICswMTAwClN1YmplY3Q6IFtQQVRDSCAx LzJdIGJ1aWxkOiBHZW5lcmFsaXplICdwYWNrYWdlLXdpdGgtZXhwbGljaXQtcHl0aG9uJy4KCiog Z3VpeC9idWlsZC1zeXN0ZW0vcHl0aG9uLnNjbSAocGFja2FnZS13aXRoLWV4cGxpY2l0LXB5dGhv bik6IFJlbW92ZSBpdCBhbmQKICByZXBsYWNlIGl0IHdpdGggdGhlIGdlbmVyYWxpemVkIHByb2Nl ZHVyZSAncGFja2FnZS13aXRoLWV4cGxpY2l0LWNvbXBpbGVyJwogIGluIHRoZSBuZXcgZmlsZS4g KHBhY2thZ2Utd2l0aC1weXRob24yKTogQWRhcHQgaXQuCiogZ3VpeC9idWlsZC1zeXN0ZW0vdXRp bHMuc2NtOiBOZXcgZmlsZSB3aXRoIHRoZSBnZW5lcmFsaXplZCBwcm9jZWR1cmUuCiogTWFrZWZp bGUuYW0gKE1PRFVMRVMpOiBBZGQgbmV3IGZpbGUuCi0tLQogTWFrZWZpbGUuYW0gICAgICAgICAg ICAgICAgICB8ICAgMSArCiBndWl4L2J1aWxkLXN5c3RlbS9weXRob24uc2NtIHwgIDcxICsrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBndWl4L2J1aWxkLXN5c3RlbS91dGlscy5zY20gIHwg MTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMg Y2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGd1aXgvYnVpbGQtc3lzdGVtL3V0aWxzLnNjbQoKZGlmZiAtLWdpdCBhL01ha2VmaWxl LmFtIGIvTWFrZWZpbGUuYW0KaW5kZXggMzYwYzM1NmYxLi4yZDI1NDRhN2IgMTAwNjQ0Ci0tLSBh L01ha2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC03Niw2ICs3Niw3IEBAIE1PRFVMRVMg PQkJCQkJXAogICBndWl4L2J1aWxkLXN5c3RlbS9yLnNjbQkJCVwKICAgZ3VpeC9idWlsZC1zeXN0 ZW0vcnVieS5zY20JCQlcCiAgIGd1aXgvYnVpbGQtc3lzdGVtL3RyaXZpYWwuc2NtCQkJXAorICBn dWl4L2J1aWxkLXN5c3RlbS91dGlscy5zY20JCQlcCiAgIGd1aXgvZnRwLWNsaWVudC5zY20JCQkJ XAogICBndWl4L2h0dHAtY2xpZW50LnNjbQkJCQlcCiAgIGd1aXgvZ251cGcuc2NtCQkJCVwKZGlm ZiAtLWdpdCBhL2d1aXgvYnVpbGQtc3lzdGVtL3B5dGhvbi5zY20gYi9ndWl4L2J1aWxkLXN5c3Rl bS9weXRob24uc2NtCmluZGV4IDE3MTczZjEyMS4uOGIzZWI0MDA4IDEwMDY0NAotLS0gYS9ndWl4 L2J1aWxkLXN5c3RlbS9weXRob24uc2NtCisrKyBiL2d1aXgvYnVpbGQtc3lzdGVtL3B5dGhvbi5z Y20KQEAgLTIsNiArMiw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMTMsIDIwMTQsIDIwMTUsIDIw MTYsIDIwMTcgTHVkb3ZpYyBDb3VydMOocyA8bHVkb0BnbnUub3JnPgogOzs7IENvcHlyaWdodCDC qSAyMDEzIEFuZHJlYXMgRW5nZSA8YW5kcmVhc0BlbmdlLmZyPgogOzs7IENvcHlyaWdodCDCqSAy MDEzIE5pa2l0YSBLYXJldG5pa292IDxuaWtpdGFAa2FyZXRuaWtvdi5vcmc+Cis7OzsgQ29weXJp Z2h0IMKpIDIwMTcgRmVkZXJpY28gQmVmZmEgPGJlZmZhQGZiZW5naW5lZXJpbmcuY2g+CiA7OzsK IDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjcsNiArMjgsNyBA QAogICAjOnVzZS1tb2R1bGUgKGd1aXggc2VhcmNoLXBhdGhzKQogICAjOnVzZS1tb2R1bGUgKGd1 aXggYnVpbGQtc3lzdGVtKQogICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkK KyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSB1dGlscykKICAgIzp1c2UtbW9kdWxl IChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMjYpCkBAIC03MCw3NSArNzIsMTQgQEAgZXh0ZW5zaW9uLCBzdWNoIGFz ICcudGFyLmd6Jy4iCiAgIChsZXQgKChweXRob24gKHJlc29sdmUtaW50ZXJmYWNlICcoZ251IHBh Y2thZ2VzIHB5dGhvbikpKSkKICAgICAobW9kdWxlLXJlZiBweXRob24gJ3B5dGhvbi0yKSkpCiAK LShkZWZpbmUqIChwYWNrYWdlLXdpdGgtZXhwbGljaXQtcHl0aG9uIHB5dGhvbiBvbGQtcHJlZml4 IG5ldy1wcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5 IHZhcmlhbnQtcHJvcGVydHkpCi0gICJSZXR1cm4gYSBwcm9jZWR1cmUgb2Ygb25lIGFyZ3VtZW50 LCBQLiAgVGhlIHByb2NlZHVyZSBjcmVhdGVzIGEgcGFja2FnZSB3aXRoCi10aGUgc2FtZSBmaWVs ZHMgYXMgUCwgd2hpY2ggaXMgYXNzdW1lZCB0byB1c2UgUFlUSE9OLUJVSUxELVNZU1RFTSwgc3Vj aCB0aGF0Ci1pdCBpcyBjb21waWxlZCB3aXRoIFBZVEhPTiBpbnN0ZWFkLiAgVGhlIGlucHV0cyBh cmUgY2hhbmdlZCByZWN1cnNpdmVseQotYWNjb3JkaW5nbHkuICBJZiB0aGUgbmFtZSBvZiBQIHN0 YXJ0cyB3aXRoIE9MRC1QUkVGSVgsIHRoaXMgaXMgcmVwbGFjZWQgYnkKLU5FVy1QUkVGSVg7IG90 aGVyd2lzZSwgTkVXLVBSRUZJWCBpcyBwcmVwZW5kZWQgdG8gdGhlIG5hbWUuCi0KLVdoZW4gVkFS SUFOVC1QUk9QRVJUWSBpcyBwcmVzZW50LCBpdCBpcyB1c2VkIGFzIGEga2V5IHRvIHNlYXJjaCBm b3IKLXByZS1kZWZpbmVkIHZhcmlhbnRzIG9mIHRoaXMgdHJhbnNmb3JtYXRpb24gcmVjb3JkZWQg aW4gdGhlICdwcm9wZXJ0aWVzJyBmaWVsZAotb2YgcGFja2FnZXMuICBUaGUgcHJvcGVydHkgdmFs dWUgbXVzdCBiZSB0aGUgcHJvbWlzZSBvZiBhIHBhY2thZ2UuICBUaGlzIGlzIGEKLWNvbnZlbmll bnQgd2F5IGZvciBwYWNrYWdlIHdyaXRlcnMgdG8gZm9yY2UgdGhlIHRyYW5zZm9ybWF0aW9uIHRv IHVzZQotcHJlLWRlZmluZWQgdmFyaWFudHMuIgotICAoZGVmaW5lIHRyYW5zZm9ybQotICAgIDs7 IE1lbW9pemUgdGhlIHRyYW5zZm9ybWF0aW9ucy4gIEZhaWxpbmcgdG8gZG8gdGhhdCwgd2Ugd291 bGQgYnVpbGQgYSBodWdlCi0gICAgOzsgb2JqZWN0IGdyYXBoIHdpdGggbG90cyBvZiBkdXBsaWNh dGVzLCB3aGljaCBpbiB0dXJucyBwcmV2ZW50cyB1cyBmcm9tCi0gICAgOzsgYmVuZWZpdGluZyBm cm9tIG1lbW9pemF0aW9uIGluICdwYWNrYWdlLWRlcml2YXRpb24nLgotICAgIChtbGFtYmRhcSAo cCkKLSAgICAgIChsZXQqICgocmV3cml0ZS1pZi1wYWNrYWdlCi0gICAgICAgICAgICAgIChsYW1i ZGEgKGNvbnRlbnQpCi0gICAgICAgICAgICAgICAgOzsgQ09OVEVOVCBtYXkgYmUgYSBmaWxlIG5h bWUsIGluIHdoaWNoIGNhc2UgaXQgaXMgcmV0dXJuZWQsCi0gICAgICAgICAgICAgICAgOzsgb3Ig YSBwYWNrYWdlLCB3aGljaCBpcyByZXdyaXR0ZW4gd2l0aCB0aGUgbmV3IFBZVEhPTiBhbmQKLSAg ICAgICAgICAgICAgICA7OyBORVctUFJFRklYLgotICAgICAgICAgICAgICAgIChpZiAocGFja2Fn ZT8gY29udGVudCkKLSAgICAgICAgICAgICAgICAgICAgKHRyYW5zZm9ybSBjb250ZW50KQotICAg ICAgICAgICAgICAgICAgICBjb250ZW50KSkpCi0gICAgICAgICAgICAgKHJld3JpdGUKLSAgICAg ICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICgobmFtZSBjb250ZW50IC4g cmVzdCkKLSAgICAgICAgICAgICAgICAgKGFwcGVuZCAobGlzdCBuYW1lIChyZXdyaXRlLWlmLXBh Y2thZ2UgY29udGVudCkpIHJlc3QpKSkpKQotCi0gICAgICAgIChjb25kCi0gICAgICAgICA7OyBJ ZiBWQVJJQU5ULVBST1BFUlRZIGlzIHByZXNlbnQsIHVzZSB0aGF0LgotICAgICAgICAgKChhbmQg dmFyaWFudC1wcm9wZXJ0eQotICAgICAgICAgICAgICAgKGFzc29jLXJlZiAocGFja2FnZS1wcm9w ZXJ0aWVzIHApIHZhcmlhbnQtcHJvcGVydHkpKQotICAgICAgICAgID0+IGZvcmNlKQotCi0gICAg ICAgICA7OyBPdGhlcndpc2UgYnVpbGQgdGhlIG5ldyBwYWNrYWdlIG9iamVjdCBncmFwaC4KLSAg ICAgICAgICgoZXE/IChwYWNrYWdlLWJ1aWxkLXN5c3RlbSBwKSBweXRob24tYnVpbGQtc3lzdGVt KQotICAgICAgICAgIChwYWNrYWdlCi0gICAgICAgICAgICAoaW5oZXJpdCBwKQotICAgICAgICAg ICAgKGxvY2F0aW9uIChwYWNrYWdlLWxvY2F0aW9uIHApKQotICAgICAgICAgICAgKG5hbWUgKGxl dCAoKG5hbWUgKHBhY2thZ2UtbmFtZSBwKSkpCi0gICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIG5ldy1wcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IChzdHJpbmctcHJlZml4PyBvbGQtcHJlZml4IG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1sZW5ndGggb2xkLXByZWZpeCkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKSkpKQotICAgICAgICAg ICAgKGFyZ3VtZW50cwotICAgICAgICAgICAgIChsZXQgKChweXRob24gKGlmIChwcm9taXNlPyBw eXRob24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNlIHB5dGhvbikKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24pKSkKLSAgICAgICAgICAgICAgIChl bnN1cmUta2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2UtYXJndW1lbnRzIHApCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoIzpweXRob24gLHB5dGhvbikpKSkKLSAg ICAgICAgICAgIChpbnB1dHMgKG1hcCByZXdyaXRlIChwYWNrYWdlLWlucHV0cyBwKSkpCi0gICAg ICAgICAgICAocHJvcGFnYXRlZC1pbnB1dHMgKG1hcCByZXdyaXRlIChwYWNrYWdlLXByb3BhZ2F0 ZWQtaW5wdXRzIHApKSkKLSAgICAgICAgICAgIChuYXRpdmUtaW5wdXRzIChtYXAgcmV3cml0ZSAo cGFja2FnZS1uYXRpdmUtaW5wdXRzIHApKSkpKQotICAgICAgICAgKGVsc2UKLSAgICAgICAgICBw KSkpKSkKLQotICB0cmFuc2Zvcm0pCi0KIChkZWZpbmUgcGFja2FnZS13aXRoLXB5dGhvbjIKICAg OzsgTm90ZTogZGVsYXkgY2FsbCB0byAnZGVmYXVsdC1weXRob24yJyB1bnRpbCBhZnRlciB0aGUg J2FyZ3VtZW50cycgZmllbGQKICAgOzsgb2YgcGFja2FnZXMgaXMgYWNjZXNzZWQgdG8gYXZvaWQg YSBjaXJjdWxhciBkZXBlbmRlbmN5IHdoZW4gZXZhbHVhdGluZwogICA7OyB0aGUgdG9wLWxldmVs IG9mIChnbnUgcGFja2FnZXMgcHl0aG9uKS4KLSAgKHBhY2thZ2Utd2l0aC1leHBsaWNpdC1weXRo b24gKGRlbGF5IChkZWZhdWx0LXB5dGhvbjIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAicHl0aG9uLSIgInB5dGhvbjItIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOnZhcmlhbnQtcHJvcGVydHkgJ3B5dGhvbjItdmFyaWFudCkpCisgIChwYWNrYWdlLXdpdGgt ZXhwbGljaXQtY29tcGlsZXIgKGRlbGF5IChkZWZhdWx0LXB5dGhvbjIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdweXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicHl0aG9uLSIgInB5dGhvbjItIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICM6dmFyaWFudC1wcm9wZXJ0eSAncHl0aG9uMi12YXJpYW50KSkKIAogKGRlZmluZSAo c3RyaXAtcHl0aG9uMi12YXJpYW50IHApCiAgICJSZW1vdmUgdGhlICdweXRob24yLXZhcmlhbnQn IHByb3BlcnR5IGZyb20gUC4iCmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkLXN5c3RlbS91dGlscy5z Y20gYi9ndWl4L2J1aWxkLXN5c3RlbS91dGlscy5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi40MDA2OTYwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2J1aWxkLXN5 c3RlbS91dGlscy5zY20KQEAgLTAsMCArMSwxMDUgQEAKKzs7OyBHTlUgR3VpeCAtLS0gRnVuY3Rp b25hbCBwYWNrYWdlIG1hbmFnZW1lbnQgZm9yIEdOVQorOzs7IENvcHlyaWdodCDCqSAyMDEzLCAy MDE0LCAyMDE1LCAyMDE2LCAyMDE3IEx1ZG92aWMgQ291cnTDqHMgPGx1ZG9AZ251Lm9yZz4KKzs7 OyBDb3B5cmlnaHQgwqkgMjAxMyBBbmRyZWFzIEVuZ2UgPGFuZHJlYXNAZW5nZS5mcj4KKzs7OyBD b3B5cmlnaHQgwqkgMjAxMyBOaWtpdGEgS2FyZXRuaWtvdiA8bmlraXRhQGthcmV0bmlrb3Yub3Jn PgorOzs7IENvcHlyaWdodCDCqSAyMDE3IEZlZGVyaWNvIEJlZmZhIDxiZWZmYUBmYmVuZ2luZWVy aW5nLmNoPgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsKKzs7 OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKzs7OyB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OzsgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OzsK Kzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxk LXN5c3RlbSB1dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSkKKyAgIzp1 c2UtbW9kdWxlIChndWl4IG1lbW9pemF0aW9uKQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2Fn ZXMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCB1aSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxz KQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOmV4cG9ydCAocGFja2FnZS13aXRo LWV4cGxpY2l0LWNvbXBpbGVyKSkKKworOzsgTm90ZTogZGVsYXkgY2FsbCB0byAnY29tcGlsZXIn IHVudGlsIGFmdGVyIHRoZSAnYXJndW1lbnRzJyBmaWVsZCBvZgorOzsgcGFja2FnZXMgaXMgYWNj ZXNzZWQgdG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdoZW4gZXZhbHVhdGluZyB0aGUK Kzs7IHRvcC1sZXZlbCBvZiAoZ251IHBhY2thZ2VzIHB5dGhvbikuICBGb3IgYSBzaW1pbGFyIHJl YXNvbiB3ZSBwYXNzIHRoZSBuYW1lCis7OyBvZiB0aGUgYnVpbGQtc3lzdGVtIGFuZCBub3QgdGhl IGJ1aWxkLXN5c3RlbSBpdHNlbGYuCisoZGVmaW5lKiAocGFja2FnZS13aXRoLWV4cGxpY2l0LWNv bXBpbGVyIGNvbXBpbGVyIGJzLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2xkLXByZWZpeCBuZXctcHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICM6a2V5IHZhcmlhbnQtcHJvcGVydHkpCisgICJSZXR1cm4gYSBwcm9j ZWR1cmUgb2Ygb25lIGFyZ3VtZW50LCBQLiAgVGhlIHByb2NlZHVyZSBjcmVhdGVzIGEgcGFja2Fn ZQord2l0aCB0aGUgc2FtZSBmaWVsZHMgYXMgUCwgd2hpY2ggaXMgYXNzdW1lZCBhIGJ1aWxkLXN5 c3RlbSBuYW1lZCBCUy1OQU1FLCBzdWNoCit0aGF0IGl0IGlzIGNvbXBpbGVkIHdpdGggQ09NUElM RVIgaW5zdGVhZC4gIFRoZSBpbnB1dHMgYXJlIGNoYW5nZWQgcmVjdXJzaXZlbHkKK2FjY29yZGlu Z2x5LiAgSWYgdGhlIG5hbWUgb2YgUCBzdGFydHMgd2l0aCBPTEQtUFJFRklYLCB0aGlzIGlzIHJl cGxhY2VkIGJ5CitORVctUFJFRklYOyBvdGhlcndpc2UsIE5FVy1QUkVGSVggaXMgcHJlcGVuZGVk IHRvIHRoZSBuYW1lLgorCitXaGVuIFZBUklBTlQtUFJPUEVSVFkgaXMgcHJlc2VudCwgaXQgaXMg dXNlZCBhcyBhIGtleSB0byBzZWFyY2ggZm9yCitwcmUtZGVmaW5lZCB2YXJpYW50cyBvZiB0aGlz IHRyYW5zZm9ybWF0aW9uIHJlY29yZGVkIGluIHRoZSAncHJvcGVydGllcycgZmllbGQKK29mIHBh Y2thZ2VzLiAgVGhlIHByb3BlcnR5IHZhbHVlIG11c3QgYmUgdGhlIHByb21pc2Ugb2YgYSBwYWNr YWdlLiAgVGhpcyBpcyBhCitjb252ZW5pZW50IHdheSBmb3IgcGFja2FnZSB3cml0ZXJzIHRvIGZv cmNlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byB1c2UKK3ByZS1kZWZpbmVkIHZhcmlhbnRzLiIKKyAg KGRlZmluZSAobWF5YmUtZm9yY2UgbWF5YmUtcHJvbWlzZSkKKyAgICAoaWYgKHByb21pc2U/IG1h eWJlLXByb21pc2UpCisgICAgICAgIChmb3JjZSBtYXliZS1wcm9taXNlKQorICAgICAgICBtYXli ZS1wcm9taXNlKSkKKworICAoZGVmaW5lIGNvbXBpbGVyLWtleXdvcmQKKyAgICAoY2FzZSBicy1u YW1lCisgICAgICAoKGhhc2tlbGwgcHl0aG9uIGVtYWNzIHBlcmwgciBydWJ5KSAoc3ltYm9sLT5r ZXl3b3JkIGJzLW5hbWUpKQorICAgICAgKGVsc2UKKyAgICAgICAobGVhdmUgKF8gIk9wZXJhdGlv biBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBidWlsZCBzeXN0ZW06IH5BfiUiKSBicy1uYW1lKSkpKQor CisgIChkZWZpbmUgdHJhbnNmb3JtCisgICAgOzsgTWVtb2l6ZSB0aGUgdHJhbnNmb3JtYXRpb25z LiAgRmFpbGluZyB0byBkbyB0aGF0LCB3ZSB3b3VsZCBidWlsZCBhIGh1Z2UKKyAgICA7OyBvYmpl Y3QgZ3JhcGggd2l0aCBsb3RzIG9mIGR1cGxpY2F0ZXMsIHdoaWNoIGluIHR1cm5zIHByZXZlbnRz IHVzIGZyb20KKyAgICA7OyBiZW5lZml0aW5nIGZyb20gbWVtb2l6YXRpb24gaW4gJ3BhY2thZ2Ut ZGVyaXZhdGlvbicuCisgICAgKG1sYW1iZGFxIChwKQorICAgICAgKGxldCogKChyZXdyaXRlLWlm LXBhY2thZ2UKKyAgICAgICAgICAgICAgKGxhbWJkYSAoY29udGVudCkKKyAgICAgICAgICAgICAg ICA7OyBDT05URU5UIG1heSBiZSBhIGZpbGUgbmFtZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyByZXR1 cm5lZCwKKyAgICAgICAgICAgICAgICA7OyBvciBhIHBhY2thZ2UsIHdoaWNoIGlzIHJld3JpdHRl biB3aXRoIHRoZSBuZXcgQ09NUElMRVIgYW5kCisgICAgICAgICAgICAgICAgOzsgTkVXLVBSRUZJ WC4KKyAgICAgICAgICAgICAgICAoaWYgKHBhY2thZ2U/IGNvbnRlbnQpCisgICAgICAgICAgICAg ICAgICAgICh0cmFuc2Zvcm0gY29udGVudCkKKyAgICAgICAgICAgICAgICAgICAgY29udGVudCkp KQorICAgICAgICAgICAgIChyZXdyaXRlCisgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAg ICAgICAgICAgICAgICAoKG5hbWUgY29udGVudCAuIHJlc3QpCisgICAgICAgICAgICAgICAgIChh cHBlbmQgKGxpc3QgbmFtZSAocmV3cml0ZS1pZi1wYWNrYWdlIGNvbnRlbnQpKSByZXN0KSkpKSkK KworICAgICAgICAoY29uZAorICAgICAgICAgOzsgSWYgVkFSSUFOVC1QUk9QRVJUWSBpcyBwcmVz ZW50LCB1c2UgdGhhdC4KKyAgICAgICAgICgoYW5kIHZhcmlhbnQtcHJvcGVydHkKKyAgICAgICAg ICAgICAgIChhc3NvYy1yZWYgKHBhY2thZ2UtcHJvcGVydGllcyBwKSB2YXJpYW50LXByb3BlcnR5 KSkKKyAgICAgICAgICA9PiBmb3JjZSkKKworICAgICAgICAgOzsgT3RoZXJ3aXNlIGJ1aWxkIHRo ZSBuZXcgcGFja2FnZSBvYmplY3QgZ3JhcGguCisgICAgICAgICAoKGVxPyAoYnVpbGQtc3lzdGVt LW5hbWUgKHBhY2thZ2UtYnVpbGQtc3lzdGVtIHApKSBicy1uYW1lKQorICAgICAgICAgIChwYWNr YWdlCisgICAgICAgICAgICAoaW5oZXJpdCBwKQorICAgICAgICAgICAgKGxvY2F0aW9uIChwYWNr YWdlLWxvY2F0aW9uIHApKQorICAgICAgICAgICAgKG5hbWUgKGxldCAoKG5hbWUgKHBhY2thZ2Ut bmFtZSBwKSkpCisgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIG5ldy1wcmVmaXgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4PyBv bGQtcHJlZml4IG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3Vic3RyaW5nIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1sZW5ndGggb2xkLXByZWZpeCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lKSkpKQorICAgICAgICAgICAgKGFyZ3VtZW50cworICAg ICAgICAgICAgIChsZXQgKChjb21waWxlciAobWF5YmUtZm9yY2UgY29tcGlsZXIpKSkKKyAgICAg ICAgICAgICAgIChlbnN1cmUta2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2UtYXJndW1lbnRzIHAp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoLGNvbXBpbGVyLWtl eXdvcmQgLGNvbXBpbGVyKSkpKQorICAgICAgICAgICAgKGlucHV0cyAobWFwIHJld3JpdGUgKHBh Y2thZ2UtaW5wdXRzIHApKSkKKyAgICAgICAgICAgIChwcm9wYWdhdGVkLWlucHV0cyAobWFwIHJl d3JpdGUgKHBhY2thZ2UtcHJvcGFnYXRlZC1pbnB1dHMgcCkpKQorICAgICAgICAgICAgKG5hdGl2 ZS1pbnB1dHMgKG1hcCByZXdyaXRlIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgcCkpKSkpCisgICAg ICAgICAoZWxzZQorICAgICAgICAgIHApKSkpKQorCisgIHRyYW5zZm9ybSkKLS0gCjIuMTEuMAoK --94eb2c1920702ef475054808e1ab--