From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 8PQYAq6sqV/9bwAA0tVLHw (envelope-from ) for ; Mon, 09 Nov 2020 20:55:10 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id YNtiOa2sqV8TVwAAbx9fmQ (envelope-from ) for ; Mon, 09 Nov 2020 20:55:09 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 49C59940237 for ; Mon, 9 Nov 2020 20:55:09 +0000 (UTC) Received: from localhost ([::1]:59716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kcEBv-0002RF-Uy for larch@yhetil.org; Mon, 09 Nov 2020 15:55:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kcEBe-0002Qr-Jk for guix-devel@gnu.org; Mon, 09 Nov 2020 15:54:50 -0500 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:39314) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kcEBb-0001iq-Cu for guix-devel@gnu.org; Mon, 09 Nov 2020 15:54:50 -0500 Received: by mail-ej1-x62e.google.com with SMTP id s25so14307992ejy.6 for ; Mon, 09 Nov 2020 12:54:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=PWCo0E7wx5hmY2x54XVqIPKvjuAn+hqlxnlGp7CZ1cM=; b=XtLqToW7Vmy+KHcNiG37ayRvNp1s/MEIIxG2YlCIi1VJuniqkHoGZOPN/D7Twqr2Yr BKJ0GJIfnkvYg1muvUcEtGVoyB4prbzT9ph0ZImhYS3jhDhTXD8In5w55CHgBiBebw0l nJKDV2SMGqGwo/UMEo53eGBSeYH0xu6Wm1o86GJc+7r3lQ2QnAZya1tVjclGMtkCQopa ovbxmSvR++/9n/jnYvEijcl9EjthH/u29TFqERwD7GmgJqIuYIW6MTMrKW5+wpDTEEel i+sDK5HFLpsn78vMzd5CHRuTbD/mpWUA9T25z352akPEPhYlOFoIrFtfG8s2qzM1LYZb lu2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=PWCo0E7wx5hmY2x54XVqIPKvjuAn+hqlxnlGp7CZ1cM=; b=XUh0iLSt2lDrLuq/9+nsgAB/MfQjKDjUVrFaESQYtmeUlnjNIqDyfoUj7p4IEeqObZ cRcLyOGdfPT5rsFBugI9CJIr/l0ciDaAPIt4aigmuRm31Mj7CMbcemzGZJFhdwmEWxEo y4TCAR1m+8qzFXFkVlnuR4V0u4PjW8dk6TW4qz7E6cHK7sn/2vFpTOsYQ1W7cgytfor9 TUxRDFyKvbg9kMh9rImdJNKuUN/0FDXdpAbJ3vF95lg0iVsnuwqGigGxbbb8VmFyS0gU EOSxoamoDFq0fv+Td+gxALfjZvi0yW6D1WbPpkMZdKxC/xISoKvHlh/SzXM7AIxKH77P /10g== X-Gm-Message-State: AOAM530jGJVVb9mhFVTN2Fw2Va+JBDFKtywcytVwMZxWhzWXKJDefmRv 5h5PEHWpMTIt5V+QnGaojE1LEiUwnaw= X-Google-Smtp-Source: ABdhPJzOQw9BD4ZMq4M3IgIQL40zuSV03akzbERhZRprY95MpISyqmhAFywQ/pt3OahjUaNvOrt5Hw== X-Received: by 2002:a17:906:4a98:: with SMTP id x24mr16507768eju.304.1604955285489; Mon, 09 Nov 2020 12:54:45 -0800 (PST) Received: from susa ([41.80.198.250]) by smtp.gmail.com with ESMTPSA id g25sm9221473ejh.61.2020.11.09.12.54.41 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Nov 2020 12:54:44 -0800 (PST) From: "Bonface M. K." To: Christopher Lemmer Webber Subject: Re: Racket packages / build system References: <87ft6c1ypz.fsf@dustycloud.org> <865z77smyg.fsf@gmail.com> <87a6wizuic.fsf@dustycloud.org> Date: Mon, 09 Nov 2020 23:54:29 +0300 In-Reply-To: <87a6wizuic.fsf@dustycloud.org> (Christopher Lemmer Webber's message of "Mon, 19 Oct 2020 00:53:31 -0400") Message-ID: <86blg6xncq.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Received-SPF: pass client-ip=2a00:1450:4864:20::62e; envelope-from=bonfacemunyoki@gmail.com; helo=mail-ej1-x62e.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: guix-devel@gnu.org, Dimos Dimakakos , Pjotr Prins Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Scanner: ns3122888.ip-94-23-21.eu Authentication-Results: aspmx1.migadu.com; dkim=fail (headers rsa verify failed) header.d=gmail.com header.s=20161025 header.b=XtLqToW7; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Spam-Score: -1.91 X-TUID: Rl2si6lqWBlq --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Christopher Lemmer Webber writes: > Bonface M. K. writes: > [...] > I have the notes that Dimos wrote up not long ago in case anyone is > interested. Dimos, do you mind if I post them to the list? > > - Chris Hi! I've been trying to hack around the racket build system(see attached) for some time now; mostly using raco... The biggest problem I've faced so far is that AFAICT, when you use raco to install packages, racket updates some files from where it's called(in guix's case store this is the store where racket is in)--- and I don't think you are allowed to do this. I've tried doing "raco install ", and also just doing "raco install" from inside the directory. The command for building: --8<---------------cut here---------------start------------->8--- env GUIX_PACKAGE_PATH="/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules" ./pre-inst-env guix build racket-hello-racket -K --8<---------------cut here---------------end--------------->8--- with the error: --8<---------------cut here---------------start------------->8--- starting phase `install' make-directory: cannot make directory path: /homeless-shelter/ system error: Permission denied; errno=13 context...: /gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/racket/file.rkt:114:0: make-directory* [repeats 1 more time] /gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/pkg/private/lock.rkt:26:0: with-pkg-lock* /gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/pkg/main.rkt:216:16 (submod "/gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/pkg/main.rkt" main): [running body] temp35_0 for-loop run-module-instance! for-loop [repeats 1 more time] run-module-instance! "/gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/raco/raco.rkt": [running body] temp35_0 for-loop run-module-instance! "/gnu/store/4f148vh30qmrdl6apq1ff6yqb7kl8xlm-racket-minimal-7.8/share/racket/collects/raco/main.rkt": [running body] ... Inferred package name from given `--clone' path package: source given path: /tmp/guix-build-racket-hello-racket-0.0.1.drv-0/source command "raco" "pkg" "install" "--no-cache" "--no-setup" "--ignore-checksums" "--clone" "/tmp/guix-build-racket-hello-racket-0.0.1.drv-0/source" failed with status 1 builder for `/gnu/store/filph2d8m7k1rq6rpglwx1y082ris6g0-racket-hello-racket-0.0.1.drv' failed with exit code 1 build of /gnu/store/filph2d8m7k1rq6rpglwx1y082ris6g0-racket-hello-racket-0.0.1.drv failed View build log at '/var/log/guix/drvs/fi/lph2d8m7k1rq6rpglwx1y082ris6g0-racket-hello-racket-0.0.1.drv.bz2'. guix build: error: build of `/gnu/store/filph2d8m7k1rq6rpglwx1y082ris6g0-racket-hello-racket-0.0.1.drv' failed --8<---------------cut here---------------end--------------->8--- And when troubleshooting: --8<---------------cut here---------------start------------->8--- cd /tmp/guix-build-racket-hello-racket-0.0.1.drv-0 /home/bonface/guix/pre-inst-env guix environment \ --no-grafts -C racket-hello-racket --ad-hoc strace gdb source ./environment-variables $GUIX_ENVIRONMENT/bin/raco pkg install --no-cache \ --no-setup --ignore-checksums --8<---------------cut here---------------end--------------->8--- Which works just fine since I'm updating files inside $GUIX_ENVIRONMENT. Right now I'm looking for ideas to experiment with to try to overcome this, and the low hanging fruit is to successfully build a hello-racket package with zero deps and no tests. To simply put it, AFAIU updating a package would require racket to update it's references(either links, and other references that I won't go into), hence creating some form of "global state"; thereby if you use raco, every package updated would lead to some update with racket's search paths or dirs somewhere. Any ideas to overcome this wall? (or anything I've got wrong somewhere?) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=racket-build-system.scm Content-Transfer-Encoding: base64 Content-Description: /build/racket-build-system Ozs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VDQo7 OzsgQ29weXJpZ2h0IMKpIDIwMjAgQm9uZmFjZSBNdW55b2tpIEtpbHl1bmdpIDxib25mYWNlbXVu eW9raUBnbWFpbC5jb20+DQo7OzsNCjs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4N Cjs7Ow0KOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQNCjs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KOzs7IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdA0KOzs7 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCjs7Ow0KOzs7IEdOVSBHdWl4IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KOzs7IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN Cjs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQo7OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCjs7Ow0KOzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCg0KKGRlZmluZS1tb2R1bGUgKGd1 aXggYnVpbGQgcmFja2V0LWJ1aWxkLXN5c3RlbSkNCiAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWls ZCBnbnUtYnVpbGQtc3lzdGVtKSAjOnByZWZpeCBnbnU6KQ0KICAjOnVzZS1tb2R1bGUgKGd1aXgg YnVpbGQgdW5pb24pDQogICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykNCiAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkNCiAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMjYpDQogICM6 ZXhwb3J0ICglc3RhbmRhcmQtcGhhc2VzDQogICAgICAgICAgICByYWNrZXQtYnVpbGQpKQ0KDQo7 OyBDb21tZW50YXJ5Og0KOzsNCjs7IEJ1aWxkZXItc2lkZSBjb2RlIG9mIHRoZSByYWNrZXQgcGFj a2FnZSBidWlsZCBwcm9jZWR1cmUuDQo7Ow0KOzsgQ29kZToNCg0KKGRlZmluZSAocmFja2V0LXBh Y2thZ2U/IG5hbWUpDQogIChzdHJpbmctcHJlZml4PyAicmFja2V0LSIgbmFtZSkpDQoNCg0KOzsg Q3VycmVudGx5IG5vdCB3b3JraW5nDQooZGVmaW5lKiAoY2hlY2sgIzprZXkgdGVzdHM/ICM6YWxs b3ctb3RoZXIta2V5cykNCiAgIlJ1biB0ZXN0cyBmb3IgdGhlIHJhY2tldCBwYWNrYWdlIg0KICAo aWYgdGVzdHM/DQogICAgICAoaW52b2tlICJyYWNvIiAidGVzdCIpDQogICAgICAoZm9ybWF0ICN0 ICJ0ZXN0IHN1aXRlIG5vdCBydW5+JSIpKQ0KICAjdCkNCg0KKGRlZmluZSAoY2FsbC1yYWNvLXBr ZyBjb21tYW5kIHBhcmFtcykNCiAgKGFwcGx5IGludm9rZSAicmFjbyIgInBrZyIgY29tbWFuZCBw YXJhbXMpKQ0KDQo7OyBUT0RPOiBGaW5kIGEgd29yayBhcm91bmQgdG8gbWFrZSB0aGlzIHdvcmsg d2l0aG91dCBtb2RpZnlpbmcgd2hlcmUgcmFja2V0DQo7OyBzdG9yZQ0KKGRlZmluZSogKGluc3Rh bGwgIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpDQogICJJbnN0YWxsIHRoZSByYWNr ZXQgcGtnIg0KICAobGV0ICgob3V0IChhc3NvYy1yZWYgb3V0cHV0cyAib3V0IikpKQ0KICAgIChj YWxsLXJhY28tcGtnICJpbnN0YWxsIg0KICAgICAgICAgICAgICAgICAgIGAoIi0tbm8tY2FjaGUi ICItLW5vLXNldHVwIg0KICAgICAgICAgICAgICAgICAgICAgIi0taWdub3JlLWNoZWNrc3VtcyIg Ii0tY2xvbmUiICwoZ2V0Y3dkKSkpKSkNCg0KKGRlZmluZSAlc3RhbmRhcmQtcGhhc2VzDQogICht b2RpZnktcGhhc2VzIGdudTolc3RhbmRhcmQtcGhhc2VzDQogICAgKGRlbGV0ZSAnYm9vdHN0cmFw KQ0KICAgIChkZWxldGUgJ2NvbmZpZ3VyZSkNCiAgICAoZGVsZXRlICdwYXRjaC1nZW5lcmF0ZWQt ZmlsZS1zaGViYW5ncykNCiAgICAoZGVsZXRlICdidWlsZCkNCiAgICAocmVwbGFjZSAnaW5zdGFs bCBpbnN0YWxsKSkpDQoNCg0KKGRlZmluZSogKHJhY2tldC1idWlsZCAjOmtleSBpbnB1dHMgKHBo YXNlcyAlc3RhbmRhcmQtcGhhc2VzKQ0KICAgICAgICAgICAgICAgICAgICAgICAjOmFsbG93LW90 aGVyLWtleXMgIzpyZXN0IGFyZ3MpDQogICJCdWlsZCB0aGUgZ2l2ZW4gcmFja2V0IHBhY2thZ2Us IGFwcGx5aW5nIGFsbCBvZiBQSEFTRVMgaW4gb3JkZXIuIg0KICAoYXBwbHkgZ251OmdudS1idWls ZCAjOmlucHV0cyBpbnB1dHMgIzpwaGFzZXMgcGhhc2VzIGFyZ3MpKQ0KDQo= --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=racket.scm Content-Transfer-Encoding: base64 Content-Description: build-system/racket.scm Ozs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VDQo7 OzsgQ29weXJpZ2h0IMKpIDIwMjAgQm9uZmFjZSBNdW55b2tpIEtpbHl1bmdpIDxib25mYWNlbXVu eW9raUBnbWFpbC5jb20+DQo7OzsNCjs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4N Cjs7Ow0KOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQNCjs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KOzs7IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdA0KOzs7 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCjs7Ow0KOzs7IEdOVSBHdWl4IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KOzs7IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN Cjs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQo7OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCjs7Ow0KOzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCg0KKGRlZmluZS1tb2R1bGUgKGd1 aXggYnVpbGQtc3lzdGVtIHJhY2tldCkNCiAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxzKQ0KICAj OnVzZS1tb2R1bGUgKGd1aXggZGVyaXZhdGlvbnMpDQogICM6dXNlLW1vZHVsZSAoZ3VpeCBzZWFy Y2gtcGF0aHMpDQogICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0pDQogICM6dXNlLW1v ZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0gZ251KQ0KICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2Fn ZXMpDQogICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpDQogICM6ZXhwb3J0ICglcmFja2V0LWJ1 aWxkLXN5c3RlbS1tb2R1bGVzDQogICAgICAgICAgICByYWNrZXQtYnVpbGQNCiAgICAgICAgICAg IHJhY2tldC1idWlsZC1zeXN0ZW0pKQ0KDQo7OyBDb21tZW50YXJ5Og0KDQo7OyBCdWlsZGVyLXNp ZGUgY29kZSBvZiB0aGUgc3RhbmRhcmQgUmFja2V0IHBhY2thZ2UgYnVpbGQgcHJvY2VkdXJlDQo7 Ow0KOzsNCjs7IEJhY2tncm91bmQgYWJvdXQgdGhlIFJhY2tldCBJbnN0YWxsYXRpb24gbWV0aG9k cw0KDQooZGVmaW5lICVyYWNrZXQtYnVpbGQtc3lzdGVtLW1vZHVsZXMNCiAgOzsgQnVpbGQtc2lk ZSBtb2R1bGVzIGltcG9ydGVkIGFuZCB1c2VkIGJ5IGRlZmF1bHQuDQogIGAoKGd1aXggYnVpbGQg cmFja2V0LWJ1aWxkLXN5c3RlbSkNCiAgICAoZ3VpeCBidWlsZCB1bmlvbikNCiAgICAsQCVnbnUt YnVpbGQtc3lzdGVtLW1vZHVsZXMpKQ0KDQooZGVmaW5lIChkZWZhdWx0LXJhY2tldCkNCiAgKGxl dCAoKHNjaGVtZSAocmVzb2x2ZS1pbnRlcmZhY2UgJyhnbnUgcGFja2FnZXMgc2NoZW1lKSkpKQ0K ICAgIChtb2R1bGUtcmVmIHNjaGVtZSAncmFja2V0LW1pbmltYWwpKSkNCg0KKGRlZmluZSogKGxv d2VyIG5hbWUNCiAgICAgICAgICAgICAgICAjOmtleSBzb3VyY2UgaW5wdXRzIG5hdGl2ZS1pbnB1 dHMgb3V0cHV0cyBzeXN0ZW0gdGFyZ2V0DQogICAgICAgICAgICAgICAgKHJhY2tldCAoZGVmYXVs dC1yYWNrZXQpKQ0KICAgICAgICAgICAgICAgICM6YWxsb3ctb3RoZXIta2V5cw0KICAgICAgICAg ICAgICAgICM6cmVzdCBhcmd1bWVudHMpDQogICJSZXR1cm4gYSBiYWcgZm9yIE5BTUUuIg0KICAo ZGVmaW5lIHByaXZhdGUta2V5d29yZHMNCiAgICAnKCM6c291cmNlICM6dGFyZ2V0ICM6cmFja2V0 ICM6aW5wdXRzICM6bmF0aXZlLWlucHV0cykpDQoNCiAgKGFuZCAobm90IHRhcmdldCkNCiAgICAg ICAoYmFnDQogICAgICAgICAobmFtZSBuYW1lKQ0KICAgICAgICAgKHN5c3RlbSBzeXN0ZW0pDQog ICAgICAgICAoaG9zdC1pbnB1dHMgYCgsQChpZiBzb3VyY2UNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGAoKCJzb3VyY2UiICxzb3VyY2UpKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgLEBpbnB1dHMNCiAgICAgICAgICAg ICAgICAgICAgICAgIDs7IEtlZXAgdGhlIHN0YW5kYXJkIGlucHV0cyBvZiAnZ251LWJ1aWxkLXN5 c3RlbScuDQogICAgICAgICAgICAgICAgICAgICAgICAsQChzdGFuZGFyZC1wYWNrYWdlcykpKQ0K ICAgICAgICAgKGJ1aWxkLWlucHV0cyBgKCgicmFja2V0IiAscmFja2V0KQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICxAbmF0aXZlLWlucHV0cykpDQogICAgICAgICAob3V0cHV0cyBvdXRwdXRz KQ0KICAgICAgICAgKGJ1aWxkIHJhY2tldC1idWlsZCkNCiAgICAgICAgIChhcmd1bWVudHMgKHN0 cmlwLWtleXdvcmQtYXJndW1lbnRzIHByaXZhdGUta2V5d29yZHMgYXJndW1lbnRzKSkpKSkNCg0K KGRlZmluZSogKHJhY2tldC1idWlsZCBzdG9yZSBuYW1lIGlucHV0cw0KICAgICAgICAgICAgICAg ICAgICM6a2V5DQogICAgICAgICAgICAgICAgICAgKHBoYXNlcyAnKEAgKGd1aXggYnVpbGQgcmFj a2V0LWJ1aWxkLXN5c3RlbSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlc3RhbmRh cmQtcGhhc2VzKSkNCiAgICAgICAgICAgICAgICAgICAob3V0cHV0cyAnKCJvdXQiKSkNCiAgICAg ICAgICAgICAgICAgICAoc2VhcmNoLXBhdGhzICcoKSkNCiAgICAgICAgICAgICAgICAgICAodW5w YWNrLXBhdGggIiIpDQogICAgICAgICAgICAgICAgICAgKGJ1aWxkLWZsYWdzICcnKCkpDQogICAg ICAgICAgICAgICAgICAgKHRlc3RzPyAjdCkNCiAgICAgICAgICAgICAgICAgICAoc3lzdGVtICgl Y3VycmVudC1zeXN0ZW0pKQ0KICAgICAgICAgICAgICAgICAgIChndWlsZSAjZikNCiAgICAgICAg ICAgICAgICAgICAoaW1wb3J0ZWQtbW9kdWxlcyAlcmFja2V0LWJ1aWxkLXN5c3RlbS1tb2R1bGVz KQ0KICAgICAgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgcmFja2V0LWJ1aWxk LXN5c3RlbSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWl4IGJ1aWxkIHVuaW9u KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRpbHMpKSkpDQog IChkZWZpbmUgYnVpbGRlcg0KICAgIGAoYmVnaW4NCiAgICAgICAodXNlLW1vZHVsZXMgLEBtb2R1 bGVzKQ0KICAgICAgIChyYWNrZXQtYnVpbGQgIzpuYW1lICxuYW1lDQogICAgICAgICAgICAgICAg ICM6c291cmNlICwobWF0Y2ggKGFzc29jLXJlZiBpbnB1dHMgInNvdXJjZSIpDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoKD8gZGVyaXZhdGlvbj8gc291cmNlKSkNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBzb3VyY2UpKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNvdXJjZSkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNvdXJjZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKSkNCiAgICAgICAgICAgICAgICAg IzpzeXN0ZW0gLHN5c3RlbQ0KICAgICAgICAgICAgICAgICAjOnBoYXNlcyAscGhhc2VzDQogICAg ICAgICAgICAgICAgICM6b3V0cHV0cyAlb3V0cHV0cw0KICAgICAgICAgICAgICAgICAjOnNlYXJj aC1wYXRocyAnLChtYXAgc2VhcmNoLXBhdGgtc3BlY2lmaWNhdGlvbi0+c2V4cA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoLXBhdGhzKQ0KICAgICAgICAgICAg ICAgICAjOnVucGFjay1wYXRoICx1bnBhY2stcGF0aA0KICAgICAgICAgICAgICAgICAjOmJ1aWxk LWZsYWdzICxidWlsZC1mbGFncw0KICAgICAgICAgICAgICAgICAjOnRlc3RzPyAsdGVzdHM/DQog ICAgICAgICAgICAgICAgICM6aW5wdXRzICVidWlsZC1pbnB1dHMpKSkNCg0KICAoZGVmaW5lIGd1 aWxlLWZvci1idWlsZA0KICAgIChtYXRjaCBndWlsZQ0KICAgICAgKCg/IHBhY2thZ2U/KQ0KICAg ICAgIChwYWNrYWdlLWRlcml2YXRpb24gc3RvcmUgZ3VpbGUgc3lzdGVtICM6Z3JhZnQ/ICNmKSkN CiAgICAgICgjZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB0aGUg ZGVmYXVsdA0KICAgICAgIChsZXQqICgoZGlzdHJvIChyZXNvbHZlLWludGVyZmFjZSAnKGdudSBw YWNrYWdlcyBjb21tZW5jZW1lbnQpKSkNCiAgICAgICAgICAgICAgKGd1aWxlICAobW9kdWxlLXJl ZiBkaXN0cm8gJ2d1aWxlLWZpbmFsKSkpDQogICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9uIHN0 b3JlIGd1aWxlIHN5c3RlbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmdyYWZ0PyAj ZikpKSkpDQoNCiAgKGJ1aWxkLWV4cHJlc3Npb24tPmRlcml2YXRpb24gc3RvcmUgbmFtZSBidWls ZGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6aW5wdXRzIGlucHV0cw0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOnN5c3RlbSBzeXN0ZW0NCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIzptb2R1bGVzIGltcG9ydGVkLW1vZHVsZXMNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIzpvdXRwdXRzIG91dHB1dHMNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIzpndWlsZS1mb3ItYnVpbGQgZ3VpbGUtZm9yLWJ1aWxkKSkNCihk ZWZpbmUgcmFja2V0LWJ1aWxkLXN5c3RlbQ0KICAoYnVpbGQtc3lzdGVtDQogICAgKG5hbWUgJ3Jh Y2tldCkNCiAgICAoZGVzY3JpcHRpb24NCiAgICAgIkJ1aWxkIHN5c3RlbSBmb3IgUmFja2V0IHBy b2dyYW1zIikNCiAgICAobG93ZXIgbG93ZXIpKSkNCg== --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =2D-=20 Bonface M. K. Chief Emacs Bazu / Rieng ya software sare Mchochezi of: / Twitter: @BonfaceKilz GPG Key: D4F09EB110177E03C28E2FE1F5BBAE1E0392253F --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJNBAEBCAA3FiEE1PCesRAXfgPCji/h9buuHgOSJT8FAl+prIcZHGJvbmZhY2Vt dW55b2tpQGdtYWlsLmNvbQAKCRD1u64eA5IlP9deD/9bDxCjBciDXNVCtPMzr6Rl fd+QRyE5xihbZpDxnf3Fv9NhInxCvdu8/NyqwC1cb+bN9eLPRGv7gei5M/lHUu8j m2of4LSgL5vLQnRAct08vPlHTlLNrF1HjdWKpEtqO0bsvyCoWdVbwseUgXJkJwXF n4FbLVvqqNNnp2yjfv2MLXOpofKf5Onj/c1ZsftqpVw5/fEmz/y//iPZKXccRi1o u8bAhhyh8vEZhkdE1eQmYRgeUMbp7/uVLsb9abDLmkOxVyC2Ugy43IxcDF2oSkDp /Cgc2JwgX7uzLq4ieKCW5X+FGOgQr/7b2sWXCFnzncymxyC8Jnd1UaqpaTOBHWrK aFF/D7zw4fGyjzQ3MdvPqw2jCW23aoKP2IRTBjXccd0cOtV3qmAksKKNerWgTjJE 6DdWnhB2oVInss8pumehaC4NZY5pHC6/WHE6XGAo1q21U3NNRgbZYwx9Aq411SV1 iYqtcdSfrO1+urG0ppsyUJegXQCWS7/5ffHCe+Eh507Az7O6HYHgKSNnA8KQxTqe Tw+4ezMFwAabmTWlpCt5queFricP+crDYSkJgHLKEUVe4+ReM7cBRiz4dTvV682j CPfRTk4M1YCqBMvCL5IoCKiX9RAnzfMKtKIvwGvLgONJTo7Qn9BKlY3Yao/okQgW +UfAZ19qPYGSLVXq4zhl3Q== =p1oy -----END PGP SIGNATURE----- --==-=-=--