From mboxrd@z Thu Jan 1 00:00:00 1970 From: Federico Beffa Subject: [PATCH] build-system: Add haskell-build-system. Date: Fri, 27 Mar 2015 09:59:35 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a1134c25cffa29a0512415987 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43089) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YbQ7A-00065l-KK for guix-devel@gnu.org; Fri, 27 Mar 2015 04:59:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YbQ78-0006Es-6d for guix-devel@gnu.org; Fri, 27 Mar 2015 04:59:40 -0400 Received: from mail-lb0-x234.google.com ([2a00:1450:4010:c04::234]:34404) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YbQ77-0006EI-OQ for guix-devel@gnu.org; Fri, 27 Mar 2015 04:59:38 -0400 Received: by lboc7 with SMTP id c7so2028740lbo.1 for ; Fri, 27 Mar 2015 01:59:35 -0700 (PDT) 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-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Guix-devel --001a1134c25cffa29a0512415987 Content-Type: text/plain; charset=UTF-8 Please find attached a build-system for Haskell. Currently focusing on GHC, but trying to be flexible for addition of support for other compilers. Please note that installed libraries need to be registered in a compiler specific database. The database consists of a directory with a configuration file for each library and *a single binary cache* file. To avoid clashes in profiles, the build system does not create the cache. To overcome clash problems: at build time the build system creates a temporary library database to make GHC find input libraries. However, when a user installs a library in his profile we need to create a database cache. I would like to propose to use the same mechanism as used for the "dir" file of texinfo. WDYT? Binary files seems to include absolute path to libraries and do not require any special handling. This impression comes from inspecting haddock's derivation created with this build system. Regards, Fede --001a1134c25cffa29a0512415987 Content-Type: text/x-diff; charset=UTF-8; name="0001-build-system-Add-haskell-build-system.patch" Content-Disposition: attachment; filename="0001-build-system-Add-haskell-build-system.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7rc82u60 RnJvbSBiOGM2YjIxZTAxYzZlYjdkOWM1YzdlOWVjMjhhNGFjN2QxMmIwNjI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWRlcmljbyBCZWZmYSA8YmVmZmFAZmJlbmdpbmVlcmluZy5j aD4KRGF0ZTogRnJpLCAyNyBNYXIgMjAxNSAwOTozNjo1NiArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IGJ1aWxkLXN5c3RlbTogQWRkIGhhc2tlbGwtYnVpbGQtc3lzdGVtLgoKKiBndWl4L2J1aWxkLXN5 c3RlbS9oYXNrZWxsLnNjbTogTmV3IGZpbGUuCiogZ3VpeC9idWlsZC9oYXNrZWxsLWJ1aWxkLXN5 c3RlbS5zY206IE5ldyBmaWxlLgotLS0KIGd1aXgvYnVpbGQtc3lzdGVtL2hhc2tlbGwuc2NtICAg ICAgIHwgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysKIGd1aXgvYnVpbGQvaGFza2VsbC1i dWlsZC1zeXN0ZW0uc2NtIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCAzMjEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGd1aXgvYnVpbGQtc3lzdGVtL2hhc2tlbGwuc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3VpeC9i dWlsZC9oYXNrZWxsLWJ1aWxkLXN5c3RlbS5zY20KCmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkLXN5 c3RlbS9oYXNrZWxsLnNjbSBiL2d1aXgvYnVpbGQtc3lzdGVtL2hhc2tlbGwuc2NtCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNDE5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9n dWl4L2J1aWxkLXN5c3RlbS9oYXNrZWxsLnNjbQpAQCAtMCwwICsxLDEzMSBAQAorOzs7IEdOVSBH dWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJp Z2h0IMKpIDIwMTUgRmVkZXJpY28gQmVmZmEgPGJlZmZhQGZiZW5naW5lZXJpbmcuY2g+Cis7OzsK Kzs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK Kzs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OzsgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Cis7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGhhc2tl bGwpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBzdG9yZSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0 aWxzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpCisgICM6dXNlLW1vZHVsZSAoZ3Vp eCBkZXJpdmF0aW9ucykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSkKKyAgIzp1 c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkg bWF0Y2gpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI2KQorICAjOmV4cG9ydCAoaGFza2Vs bC1idWlsZAorICAgICAgICAgICAgaGFza2VsbC1idWlsZC1zeXN0ZW0pKQorCis7OyBDb21tZW50 YXJ5OgorOzsKKzs7IFN0YW5kYXJkIGJ1aWxkIHByb2NlZHVyZSBmb3IgSGFza2VsbCBwYWNrYWdl cyB1c2luZyAnU2V0dXAuaHMnLiAgVGhpcyBpcworOzsgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5z aW9uIG9mICdnbnUtYnVpbGQtc3lzdGVtJy4KKzs7Cis7OyBDb2RlOgorCisoZGVmaW5lIChkZWZh dWx0LWhhc2tlbGwpCisgICJSZXR1cm4gdGhlIGRlZmF1bHQgSGFza2VsbCBwYWNrYWdlLiIKKyAg OzsgTGF6aWx5IHJlc29sdmUgdGhlIGJpbmRpbmcgdG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRl bmN5LgorICAobGV0ICgoaGFza2VsbCAocmVzb2x2ZS1pbnRlcmZhY2UgJyhnbnUgcGFja2FnZXMg aGFza2VsbCkpKSkKKyAgICAobW9kdWxlLXJlZiBoYXNrZWxsICdnaGMpKSkKKworKGRlZmluZSog KGxvd2VyIG5hbWUKKyAgICAgICAgICAgICAgICAjOmtleSBzb3VyY2UgaW5wdXRzIG5hdGl2ZS1p bnB1dHMgb3V0cHV0cyBzeXN0ZW0gdGFyZ2V0CisgICAgICAgICAgICAgICAgKGhhc2tlbGwgKGRl ZmF1bHQtaGFza2VsbCkpCisgICAgICAgICAgICAgICAgIzphbGxvdy1vdGhlci1rZXlzCisgICAg ICAgICAgICAgICAgIzpyZXN0IGFyZ3VtZW50cykKKyAgIlJldHVybiBhIGJhZyBmb3IgTkFNRS4i CisgIChkZWZpbmUgcHJpdmF0ZS1rZXl3b3JkcworICAgICcoIzpzb3VyY2UgIzp0YXJnZXQgIzpw eXRob24gIzppbnB1dHMgIzpuYXRpdmUtaW5wdXRzKSkKKworICAoYW5kIChub3QgdGFyZ2V0KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7WFhYOiBubyBjcm9zcy1jb21waWxhdGlvbgor ICAgICAgIChiYWcKKyAgICAgICAgIChuYW1lIG5hbWUpCisgICAgICAgICAoc3lzdGVtIHN5c3Rl bSkKKyAgICAgICAgIChob3N0LWlucHV0cyBgKCxAKGlmIHNvdXJjZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYCgoInNvdXJjZSIgLHNvdXJjZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAsQGlucHV0cworCisgICAg ICAgICAgICAgICAgICAgICAgICA7OyBLZWVwIHRoZSBzdGFuZGFyZCBpbnB1dHMgb2YgJ2dudS1i dWlsZC1zeXN0ZW0nLgorICAgICAgICAgICAgICAgICAgICAgICAgLEAoc3RhbmRhcmQtcGFja2Fn ZXMpKSkKKyAgICAgICAgIChidWlsZC1pbnB1dHMgYCgoImhhc2tlbGwiICxoYXNrZWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICxAbmF0aXZlLWlucHV0cykpCisgICAgICAgICAob3V0cHV0 cyBvdXRwdXRzKQorICAgICAgICAgKGJ1aWxkIGhhc2tlbGwtYnVpbGQpCisgICAgICAgICAoYXJn dW1lbnRzIChzdHJpcC1rZXl3b3JkLWFyZ3VtZW50cyBwcml2YXRlLWtleXdvcmRzIGFyZ3VtZW50 cykpKSkpCisKKyhkZWZpbmUqIChoYXNrZWxsLWJ1aWxkIHN0b3JlIG5hbWUgaW5wdXRzCisgICAg ICAgICAgICAgICAgICAgICAgICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3Rz PyAjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LXRhcmdldCAidGVzdCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJlLWZsYWdzICcnKCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAocGhhc2VzICcoQCAoZ3VpeCBidWlsZCBoYXNrZWxsLWJ1aWxkLXN5c3RlbSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzdGFuZGFyZC1waGFzZXMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKG91dHB1dHMgJygib3V0IikpCisgICAgICAgICAgICAg ICAgICAgICAgICAoc2VhcmNoLXBhdGhzICcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChz eXN0ZW0gKCVjdXJyZW50LXN5c3RlbSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ3VpbGUg I2YpCisgICAgICAgICAgICAgICAgICAgICAgICAoaW1wb3J0ZWQtbW9kdWxlcyAnKChndWl4IGJ1 aWxkIGhhc2tlbGwtYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBnbnUtYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3VpeCBidWlsZCB1dGlscykpKQorICAg ICAgICAgICAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCBoYXNrZWxsLWJ1aWxk LXN5c3RlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aXggYnVpbGQg dXRpbHMpKSkpCisgICJCdWlsZCBTT1VSQ0UgdXNpbmcgSEFTS0VMTCwgYW5kIHdpdGggSU5QVVRT LiAgVGhpcyBhc3N1bWVzIHRoYXQgU09VUkNFCitwcm92aWRlcyBhICdTZXR1cC5ocycgZmlsZSBh cyBpdHMgYnVpbGQgc3lzdGVtLiIKKyAgKGRlZmluZSBidWlsZGVyCisgICAgYChiZWdpbgorICAg ICAgICh1c2UtbW9kdWxlcyAsQG1vZHVsZXMpCisgICAgICAgKGhhc2tlbGwtYnVpbGQgIzpuYW1l ICxuYW1lCisgICAgICAgICAgICAgICAgICAgICAgIzpzb3VyY2UgLChtYXRjaCAoYXNzb2MtcmVm IGlucHV0cyAic291cmNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCg/ IGRlcml2YXRpb24/IHNvdXJjZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBzb3VyY2UpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoc291cmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UpKQorICAgICAgICAgICAgICAg ICAgICAgICM6Y29uZmlndXJlLWZsYWdzICxjb25maWd1cmUtZmxhZ3MKKyAgICAgICAgICAgICAg ICAgICAgICAjOnN5c3RlbSAsc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgIzp0ZXN0LXRh cmdldCAsdGVzdC10YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAjOnRlc3RzPyAsdGVzdHM/ CisgICAgICAgICAgICAgICAgICAgICAgIzpwaGFzZXMgLHBoYXNlcworICAgICAgICAgICAgICAg ICAgICAgICM6b3V0cHV0cyAlb3V0cHV0cworICAgICAgICAgICAgICAgICAgICAgICM6c2VhcmNo LXBhdGhzICcsKG1hcCBzZWFyY2gtcGF0aC1zcGVjaWZpY2F0aW9uLT5zZXhwCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaC1wYXRocykKKyAgICAgICAg ICAgICAgICAgICAgICAjOmlucHV0cyAlYnVpbGQtaW5wdXRzKSkpCisKKyAgKGRlZmluZSBndWls ZS1mb3ItYnVpbGQKKyAgICAobWF0Y2ggZ3VpbGUKKyAgICAgICgoPyBwYWNrYWdlPykKKyAgICAg ICAocGFja2FnZS1kZXJpdmF0aW9uIHN0b3JlIGd1aWxlIHN5c3RlbSAjOmdyYWZ0PyAjZikpCisg ICAgICAoI2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgdGhlIGRl ZmF1bHQKKyAgICAgICAobGV0KiAoKGRpc3RybyAocmVzb2x2ZS1pbnRlcmZhY2UgJyhnbnUgcGFj a2FnZXMgY29tbWVuY2VtZW50KSkpCisgICAgICAgICAgICAgIChndWlsZSAgKG1vZHVsZS1yZWYg ZGlzdHJvICdndWlsZS1maW5hbCkpKQorICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiBzdG9y ZSBndWlsZSBzeXN0ZW0gIzpncmFmdD8gI2YpKSkpKQorCisgIChidWlsZC1leHByZXNzaW9uLT5k ZXJpdmF0aW9uIHN0b3JlIG5hbWUgYnVpbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOmlucHV0cyBpbnB1dHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpz eXN0ZW0gc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6bW9kdWxlcyBp bXBvcnRlZC1tb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6b3V0cHV0 cyBvdXRwdXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6Z3VpbGUtZm9yLWJ1 aWxkIGd1aWxlLWZvci1idWlsZCkpCisKKyhkZWZpbmUgaGFza2VsbC1idWlsZC1zeXN0ZW0KKyAg KGJ1aWxkLXN5c3RlbQorICAgIChuYW1lICdoYXNrZWxsKQorICAgIChkZXNjcmlwdGlvbiAiVGhl IHN0YW5kYXJkIEhhc2tlbGwgYnVpbGQgc3lzdGVtIikKKyAgICAobG93ZXIgbG93ZXIpKSkKKwor Ozs7IGhhc2tlbGwuc2NtIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9oYXNrZWxs LWJ1aWxkLXN5c3RlbS5zY20gYi9ndWl4L2J1aWxkL2hhc2tlbGwtYnVpbGQtc3lzdGVtLnNjbQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE5NWVlCi0tLSAvZGV2L251bGwK KysrIGIvZ3VpeC9idWlsZC9oYXNrZWxsLWJ1aWxkLXN5c3RlbS5zY20KQEAgLTAsMCArMSwxOTAg QEAKKzs7OyBHTlUgR3VpeCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFnZW1lbnQgZm9yIEdO VQorOzs7IENvcHlyaWdodCDCqSAyMDE1IEZlZGVyaWNvIEJlZmZhIDxiZWZmYUBmYmVuZ2luZWVy aW5nLmNoPgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsKKzs7 OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKzs7OyB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OzsgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OzsK Kzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxk IGhhc2tlbGwtYnVpbGQtc3lzdGVtKQorICAjOnVzZS1tb2R1bGUgKChndWl4IGJ1aWxkIGdudS1i dWlsZC1zeXN0ZW0pICM6cHJlZml4IGdudTopCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1 dGlscykKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChzcmZp IHNyZmktMjYpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmRlbGltKQorICAjOnVzZS1tb2R1bGUg KGljZS05IHJlZ2V4KQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOmV4cG9ydCAo JXN0YW5kYXJkLXBoYXNlcworICAgICAgICAgICAgaGFza2VsbC1idWlsZCkpCisKKzs7IENvbW1l bnRhcnk6Cis7OworOzsgQnVpbGRlci1zaWRlIGNvZGUgb2YgdGhlIHN0YW5kYXJkIEhhc2tlbGwg cGFja2FnZSBidWlsZCBwcm9jZWR1cmUuCis7OworOzsgQ29kZToKKworOzsgRGlyZWN0b3J5IHdo ZXJlIHdlIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGxpYnJhcmllcyBkYXRhYmFzZSB3aXRoIGl0cyBj YWNoZQorOzsgYXMgcmVxdWlyZWQgYnkgdGhlIGNvbXBpbGVyLgorKGRlZmluZSAldG1wLWRiLWRp cgorICAoc3RyaW5nLWFwcGVuZCAob3IgKGdldGVudiAiVE1QIikgIi90bXAiKQorICAgICAgICAg ICAgICAgICAiL3BhY2thZ2UuY29uZi5kIikpCisKKyhkZWZpbmUgKGNhbGwtc2V0dXBocyBjb21t YW5kIHBhcmFtcykKKyAgKGxldCAoKHNldHVwLWZpbGUgKGNvbmQKKyAgICAgICAgICAgICAgICAg ICAgICgoZmlsZS1leGlzdHM/ICJTZXR1cC5ocyIpCisgICAgICAgICAgICAgICAgICAgICAgIlNl dHVwLmhzIikKKyAgICAgICAgICAgICAgICAgICAgICgoZmlsZS1leGlzdHM/ICJTZXR1cC5saHMi KQorICAgICAgICAgICAgICAgICAgICAgICJTZXR1cC5saHMiKQorICAgICAgICAgICAgICAgICAg ICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAjZikpKSkKKyAgICAoaWYgc2V0dXAtZmls ZQorICAgICAgICAoYmVnaW4KKyAgICAgICAgICAoZm9ybWF0CisgICAgICAgICAgICN0CisgICAg ICAgICAgICJydW5uaW5nIFwicnVuaGFza2VsbCBTZXR1cC5oc1wiIHdpdGggY29tbWFuZCB+cyBh bmQgcGFyYW1ldGVycyB+c34lIgorICAgICAgICAgICBjb21tYW5kIHBhcmFtcykKKyAgICAgICAg ICAoemVybz8gKGFwcGx5IHN5c3RlbSogInJ1bmhhc2tlbGwiIHNldHVwLWZpbGUgY29tbWFuZCBw YXJhbXMpKSkKKyAgICAgICAgKGVycm9yICJubyBTZXR1cC5ocyBub3IgU2V0dXAubGhzIGZvdW5k IikpKSkKKworKGRlZmluZSogKGNvbmZpZ3VyZSAjOmtleSBvdXRwdXRzIGlucHV0cyB0ZXN0cz8g KGNvbmZpZ3VyZS1mbGFncyAnKCkpCisgICAgICAgICAgICAgICAgICAgICM6YWxsb3ctb3RoZXIt a2V5cykKKyAgIkluc3RhbGwgYSBnaXZlbiBIYXNrZWxsIHBhY2thZ2UuIgorICAobGV0KiAoKG91 dCAoYXNzb2MtcmVmIG91dHB1dHMgIm91dCIpKQorICAgICAgICAgKGlucHV0LWRpcnMgKG1hdGNo IGlucHV0cworICAgICAgICAgICAgICAgICAgICAgICAoKChfIC4gZGlyKSAuLi4pCisgICAgICAg ICAgICAgICAgICAgICAgICBkaXIpCisgICAgICAgICAgICAgICAgICAgICAgIChfICcoKSkpKQor ICAgICAgICAgKHBhcmFtcyAoYXBwZW5kIGAoLChzdHJpbmctYXBwZW5kICItLXByZWZpeD0iIG91 dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgYCgsKHN0cmluZy1hcHBlbmQgIi0tcGFja2Fn ZS1kYj0iICV0bXAtZGItZGlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKCItLWdsb2Jh bCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgYCgsKHN0cmluZy1hcHBlbmQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIi0tZXh0cmEtaW5jbHVkZS1kaXJzPSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpc3QtPnNlYXJjaC1wYXRoLWFzLXN0cmluZworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRoLWFzLWxpc3QgJygiaW5jbHVkZSIpIGlu cHV0LWRpcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICBgKCwoc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiLS1leHRyYS1saWItZGlycz0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsaXN0LT5zZWFyY2gtcGF0aC1hcy1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZWFyY2gtcGF0aC1hcy1saXN0ICcoImxpYiIpIGlucHV0LWRpcnMpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiOiIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg dGVzdHM/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoIi0tZW5hYmxlLXRlc3RzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbmZpZ3VyZS1mbGFncykpKQorICAgIChjYWxsLXNldHVwaHMgImNvbmZpZ3VyZSIgcGFy YW1zKSkpCisKKyhkZWZpbmUqIChidWlsZCAjOnJlc3QgZW1wdHkpCisgICJCdWlsZCBhIGdpdmVu IEhhc2tlbGwgcGFja2FnZS4iCisgIChjYWxsLXNldHVwaHMgImJ1aWxkIiAnKCkpKQorCisoZGVm aW5lKiAoaW5zdGFsbCAjOnJlc3QgZW1wdHkpCisgICJJbnN0YWxsIGEgZ2l2ZW4gSGFza2VsbCBw YWNrYWdlLiIKKyAgKGNhbGwtc2V0dXBocyAiY29weSIgJygpKSkKKworKGRlZmluZSAoY29tcGls ZXItbmFtZS12ZXJzaW9uIGhhc2tlbGwtaW5wdXQpCisgIChsZXQqICgoYmFzZSAoYmFzZW5hbWUg aGFza2VsbC1pbnB1dCkpKQorICAgIChzdHJpbmctZHJvcCBiYXNlCisgICAgICAgICAgICAgICAg ICgrIDEgKHN0cmluZy1pbmRleCBiYXNlICNcLSkpKSkpCisKKyhkZWZpbmUgKGdyZXAgcnggcG9y dCkKKyAgKGxldCAoKGxpbmUgKHJlYWQtbGluZSBwb3J0KSkpCisgICAgKGlmIChlb2Ytb2JqZWN0 PyBsaW5lKQorICAgICAgICAjZgorICAgICAgICAobGV0ICgocngtcmVzdWx0IChyZWdleHAtZXhl YyByeCBsaW5lKSkpCisgICAgICAgICAgKGlmIHJ4LXJlc3VsdAorICAgICAgICAgICAgICAobWF0 Y2g6c3Vic3RyaW5nIHJ4LXJlc3VsdCAxKQorICAgICAgICAgICAgICAoZ3JlcCByeCBwb3J0KSkp KSkpCisKKyhkZWZpbmUqIChzZXR1cC1jb21waWxlciAjOmtleSBzeXN0ZW0gaW5wdXRzIG91dHB1 dHMgIzphbGxvdy1vdGhlci1rZXlzKQorICAobGV0KiAoKGhhc2tlbGwgKGFzc29jLXJlZiBpbnB1 dHMgImhhc2tlbGwiKSkKKyAgICAgICAgIChuYW1lLXZlcnNpb24gKGNvbXBpbGVyLW5hbWUtdmVy c2lvbiBoYXNrZWxsKSkpCisgICAgKGNvbmQKKyAgICAgKChzdHJpbmctbWF0Y2ggImdoYyIgbmFt ZS12ZXJzaW9uKQorICAgICAgKHNldHVwLWdoYyBzeXN0ZW0gaW5wdXRzIG91dHB1dHMpKQorICAg ICAoZWxzZQorICAgICAgKGZvcm1hdCAjdAorICAgICAgICAgICAgICAiQ29tcGlsZXIgfmEgbm90 IHN1cHBvcnRlZH4lIiBuYW1lLXZlcnNpb24pKSkpKQorCisoZGVmaW5lIChzZXR1cC1naGMgc3lz dGVtIGlucHV0cyBvdXRwdXRzKQorICAobGV0KiAoKGhhc2tlbGwgIChhc3NvYy1yZWYgaW5wdXRz ICJoYXNrZWxsIikpCisgICAgICAgICAoaW5wdXQtZGlycyAobWF0Y2ggaW5wdXRzCisgICAgICAg ICAgICAgICAgICAgICAgICgoKF8gLiBkaXIpIC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAg IGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgKF8gJygpKSkpCisgICAgICAgICAoY29uZi1k aXJzIChzZWFyY2gtcGF0aC1hcy1saXN0CisgICAgICAgICAgICAgICAgICAgICBgKCwoc3RyaW5n LWFwcGVuZCAibGliLyIgc3lzdGVtICItIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbXBpbGVyLW5hbWUtdmVyc2lvbiBoYXNrZWxsKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIi9wYWNrYWdlLmNvbmYuZCIpKQorICAgICAgICAgICAg ICAgICAgICAgaW5wdXQtZGlycykpKQorICAgIChta2Rpci1wICV0bXAtZGItZGlyKQorICAgIChm b3ItZWFjaAorICAgICAobGFtYmRhIChkaXIpCisgICAgICAgKGxldCAoKGNvbmYtZmlsZXMKKyAg ICAgICAgICAgICAgKGZpbmQtZmlsZXMgZGlyICIuKlxcLmNvbmYiKSkpCisgICAgICAgICAodW5s ZXNzIChudWxsPyBjb25mLWZpbGVzKQorICAgICAgICAgICAoZm9yLWVhY2gKKyAgICAgICAgICAg IChsYW1iZGEgKGZpbGUpCisgICAgICAgICAgICAgIChjb3B5LWZpbGUgZmlsZSAoc3RyaW5nLWFw cGVuZCAldG1wLWRiLWRpciAiLyIgKGJhc2VuYW1lIGZpbGUpKSkpCisgICAgICAgICAgICBjb25m LWZpbGVzKSkpKQorICAgICBjb25mLWRpcnMpCisgICAgKHplcm8/IChzeXN0ZW0qICJnaGMtcGtn IgorICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1wYWNrYWdlLWRiPSIgJXRt cC1kYi1kaXIpCisgICAgICAgICAgICAgICAgICAgICJyZWNhY2hlIikpKSkKKworKGRlZmluZSog KHJlZ2lzdGVyICM6a2V5IG5hbWUgc3lzdGVtIGlucHV0cyBvdXRwdXRzICM6YWxsb3ctb3RoZXIt a2V5cykKKyAgIkdlbmVyYXRlIHRoZSBjb21waWxlciByZWdpc3RyYXRpb24gZmlsZSBmb3IgYSBn aXZlbiBIYXNrZWxsIHBhY2thZ2UuICBEb24ndAorZ2VuZXJhdGUgdGhlIGNhY2hlIGFzIGl0IHdv dWxkIGNsYXNoIGluIHVzZXIgcHJvZmlsZXMuIgorICAobGV0KiAoKG91dCAoYXNzb2MtcmVmIG91 dHB1dHMgIm91dCIpKQorICAgICAgICAgKGhhc2tlbGwgIChhc3NvYy1yZWYgaW5wdXRzICJoYXNr ZWxsIikpCisgICAgICAgICAobGliIChzdHJpbmctYXBwZW5kIG91dCAiL2xpYiIpKQorICAgICAg ICAgKGNvbmZpZy1kaXIgKHN0cmluZy1hcHBlbmQgbGliICIvIiBzeXN0ZW0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICItIiAoY29tcGlsZXItbmFtZS12ZXJzaW9uIGhhc2tl bGwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3BhY2thZ2UuY29uZi5k IikpCisgICAgICAgICAoaWQtcnggKG1ha2UtcmVnZXhwICJeaWQ6ICooLiopJCIpKQorICAgICAg ICAgKGxpYi1yeCAobWFrZS1yZWdleHAgImxpYi4qXFwuKGF8c28pIikpCisgICAgICAgICAoY29u ZmlnLWZpbGUgKHN0cmluZy1hcHBlbmQgY29uZmlnLWRpciAiLyIgbmFtZSAiLmNvbmYiKSkKKyAg ICAgICAgIChwYXJhbXMKKyAgICAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAiLS1nZW4tcGtn LWNvbmZpZz0iIGNvbmZpZy1maWxlKSkpKQorICAgICh1bmxlc3MgKG51bGw/IChmaW5kLWZpbGVz IGxpYiBsaWItcngpKQorICAgICAgKG1rZGlyLXAgY29uZmlnLWRpcikKKyAgICAgIChjYWxsLXNl dHVwaHMgInJlZ2lzdGVyIiBwYXJhbXMpCisgICAgICAobGV0ICgoY29uZmlnLWZpbGUtbmFtZStp ZAorICAgICAgICAgICAgIChjYWxsLXdpdGgtYXNjaWktaW5wdXQtZmlsZSBjb25maWctZmlsZSAo Y3V0IGdyZXAgaWQtcnggPD4pKSkpCisgICAgICAgIChyZW5hbWUtZmlsZSBjb25maWctZmlsZQor ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgY29uZmlnLWRpciAiLyIgY29uZmln LWZpbGUtbmFtZStpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5jb25m IikpKSkKKyAgICAjdCkpCisKKyhkZWZpbmUqIChjaGVjayAjOmtleSB0ZXN0cz8gdGVzdC10YXJn ZXQgIzphbGxvdy1vdGhlci1rZXlzKQorICAiUnVuIHRoZSB0ZXN0IHN1aXRlIG9mIGEgZ2l2ZW4g SGFza2VsbCBwYWNrYWdlLiIKKyAgKGlmIHRlc3RzPworICAgICAgKGNhbGwtc2V0dXBocyB0ZXN0 LXRhcmdldCAnKCkpCisgICAgICAjdCkpCisKKyhkZWZpbmUgJXN0YW5kYXJkLXBoYXNlcworICAo bW9kaWZ5LXBoYXNlcyBnbnU6JXN0YW5kYXJkLXBoYXNlcworICAgIChhZGQtYmVmb3JlIGNvbmZp Z3VyZSBzZXR1cC1jb21waWxlciBzZXR1cC1jb21waWxlcikKKyAgICAoYWRkLWFmdGVyIGluc3Rh bGwgcmVnaXN0ZXIgcmVnaXN0ZXIpCisgICAgKHJlcGxhY2UgaW5zdGFsbCBpbnN0YWxsKQorICAg IChyZXBsYWNlIGNoZWNrIGNoZWNrKQorICAgIChyZXBsYWNlIGJ1aWxkIGJ1aWxkKQorICAgIChy ZXBsYWNlIGNvbmZpZ3VyZSBjb25maWd1cmUpKSkKKworKGRlZmluZSogKGhhc2tlbGwtYnVpbGQg IzprZXkgaW5wdXRzIChwaGFzZXMgJXN0YW5kYXJkLXBoYXNlcykKKyAgICAgICAgICAgICAgICAg ICAgICAgICM6YWxsb3ctb3RoZXIta2V5cyAjOnJlc3QgYXJncykKKyAgIkJ1aWxkIHRoZSBnaXZl biBIYXNrZWxsIHBhY2thZ2UsIGFwcGx5aW5nIGFsbCBvZiBQSEFTRVMgaW4gb3JkZXIuIgorICAo YXBwbHkgZ251OmdudS1idWlsZAorICAgICAgICAgIzppbnB1dHMgaW5wdXRzICM6cGhhc2VzIHBo YXNlcworICAgICAgICAgYXJncykpCisKKzs7OyBoYXNrZWxsLWJ1aWxkLXN5c3RlbS5zY20gZW5k cyBoZXJlCi0tIAoyLjIuMQoK --001a1134c25cffa29a0512415987--