From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id uQvINxk5LWQpviMAWB0awg (envelope-from ) for ; Wed, 05 Apr 2023 05:02:17 -0400 Received: by simark.ca (Postfix, from userid 112) id D85501E15D; Wed, 5 Apr 2023 05:02:17 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=Aa1BFeQx; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_HI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 1FD5A1E0D2 for ; Wed, 5 Apr 2023 05:02:17 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6F7E4385842C for ; Wed, 5 Apr 2023 09:02:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6F7E4385842C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680685335; bh=3YkUjsqkIRI5uZiINvjRmwE8ImGAd16+iqij4NSaGp0=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Aa1BFeQxbMqw46bw5L+9nD6zHk5Ntgb8iRR2sJL7l4GqZ7mjyXIwPpL5MuZXDawjd k2t5kbkjwmaPD8omi32mhFX1avip/Pm1awb4rklZNHerzlI9EBSAQBuh+9wbfMnwBb v6bo3M8Wu6wgvZHd+3+ILbwdiE8wge35JfS7qgI0= Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 204523858CDA for ; Wed, 5 Apr 2023 09:01:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 204523858CDA Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 2A89822A17; Wed, 5 Apr 2023 09:01:52 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 1203213A10; Wed, 5 Apr 2023 09:01:52 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id zVYnAwA5LWSNVAAAMHmgww (envelope-from ); Wed, 05 Apr 2023 09:01:52 +0000 Content-Type: multipart/mixed; boundary="------------EbFZmLd7fJFA0vIRGgSMznqz" Message-ID: Date: Wed, 5 Apr 2023 11:01:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 1/1] [gdb/contrib] Add make-check-all.sh Content-Language: en-US To: Andrew Burgess , gdb-patches@sourceware.org References: <20230403150957.28921-1-tdevries@suse.de> <20230403150957.28921-2-tdevries@suse.de> <87wn2rc22u.fsf@redhat.com> In-Reply-To: <87wn2rc22u.fsf@redhat.com> X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" This is a multi-part message in MIME format. --------------EbFZmLd7fJFA0vIRGgSMznqz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 4/4/23 13:35, Andrew Burgess wrote: > Tom de Vries via Gdb-patches writes: > >> Add script gdb/contrib/make-check-all.sh, that's intended to function as a >> drop-in replacement of make check, but excercising all host/target boards in >> gdb/testsuite/boards. >> >> Shell-checked and tested on x86_64-linux. > > Hi Tom, > > Thanks for putting this together, I think this could be really useful. > That's great to hear :) > I'm not a fan of the way you've split the patch description into email > 0/1 and not included it with this commit. I think there's lots of > useful information in there, and I'd much rather have the whole > description included in the commit message -- it's much easier to find > then rather than having to hunt on the mailing list in the future. > Ack, I've reworked this into a patch rather than patch series. >> --- >> gdb/contrib/make-check-all.sh | 255 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 255 insertions(+) >> create mode 100755 gdb/contrib/make-check-all.sh >> >> diff --git a/gdb/contrib/make-check-all.sh b/gdb/contrib/make-check-all.sh >> new file mode 100755 >> index 00000000000..1befe418b81 >> --- /dev/null >> +++ b/gdb/contrib/make-check-all.sh >> @@ -0,0 +1,255 @@ >> +#!/bin/bash >> + >> +# Copyright (C) 2023 Free Software Foundation, Inc. >> +# This program is free software; you can redistribute it and/or modify >> +# it under the terms of the GNU General Public License as published by >> +# the Free Software Foundation; either version 3 of the License, or >> +# (at your option) any later version. >> +# >> +# This program is distributed in the hope that it will be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program. If not, see . >> + >> +# Run make check with all boards from gdb/testsuite/boards. > > I think you need some kind of usage test here too. Imagine a new > developer finds this file and looks inside. Ideally, I think they > should know how to use it, and what it will do for them without having > to read any of the actual script content. > Added. > On implementation, I wonder if it would be useful to provide a mechanism > by which the gdb.sum and gdb.log files for each test run could be > preserved? > Done, I've renamed --keep to --keep-tmp, and added this new functionality under --keep. I've also added "set -e" to make sure ^C aborts the script rather than just one make check invocation, and moved the tmpdir removal to a cleanup function that's executed on exit, to make sure ^C doesn't leave tmpdirs behind. Thanks, - Tom --------------EbFZmLd7fJFA0vIRGgSMznqz Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-contrib-Add-make-check-all.sh.patch" Content-Disposition: attachment; filename="0001-gdb-contrib-Add-make-check-all.sh.patch" Content-Transfer-Encoding: base64 RnJvbSA4NjQ3ZWYwYzNkZDA3NmVlMThkMTA2MDg4MjU1MmEyMGEwMTZiMmQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAwMzo0Nzo0NiArMDIwMApTdWJqZWN0OiBbUEFUQ0hd IFtnZGIvY29udHJpYl0gQWRkIG1ha2UtY2hlY2stYWxsLnNoCgpEaXJlY3RvcnkgZ2RiL3Rl c3RzdWl0ZS9ib2FyZHMgY29udGFpbnMgYSBudW1iZXIgb2YgaG9zdC90YXJnZXQgYm9hcmRz LCB3aGljaApydW4gYSB0ZXN0LWNhc2UgKG9yIHRlc3QtY2FzZXMpIGluIGEgZGlmZmVyZW50 IHdheS4KClRoZSBiZW5lZml0cyBvZiB1c2luZyB0aGVzZSBib2FyZHMgYXJlOgotIGltcHJv dmluZyB0ZXN0IGNvdmVyYWdlIG9mIGdkYiwKLSBtYWtpbmcgdGhlIHRlc3RzdWl0ZSBtb3Jl IHJvYnVzdCwgYW5kCi0gbWFraW5nIHN1cmUgdGhlIHRlc3QtY2FzZXMgd29yayBmb3Igbm9u LW5hdGl2ZSBhbmQgcmVtb3RlIHNldHVwcywgaWYKICBwb3NzaWJsZS4KCkVhY2ggYm9hcmQg aXMgc2xpZ2h0bHkgZGlmZmVyZW50LCBhbmQgZGV2ZWxvcGVycyBuZWVkIHRvIGxlYXJuIGhv dyB0byB1c2UgZWFjaApvbmUsIHdoYXQgcGFyYW1ldGVycyB0byBwYXNzIGFuZCBob3csIGFu ZCB3aGljaCBvbmVzIGNhbiBiZSB1c2luZyBpbgpjb21iaW5hdGlvbiB3aXRoIGVhY2ggb3Ro ZXIuICBUaGlzIGlzIGEgdGhyZXNob2xkIHRvIHN0YXJ0IHVzaW5nIHRoZW0uCgpBbmQgdGhl biB0aGVyZSBxdWl0ZSBhIGZldywgc28gSSBzdXBwb3NlIHR5cGljYWxseSBvbmx5IGEgZmV3 IHdpbGwgYmUgdXNlZCBieQplYWNoIGRldmVsb3Blci4KCkFkZCBzY3JpcHQgZ2RiL2NvbnRy aWIvbWFrZS1jaGVjay1hbGwuc2gsIHRoYXQncyBpbnRlbmRlZCB0byBmdW5jdGlvbiBhcyBh CmRyb3AtaW4gcmVwbGFjZW1lbnQgb2YgbWFrZSBjaGVjaywgd2hpbGUgZXhjZXJjaXNpbmcg YWxsIGhvc3QvdGFyZ2V0IGJvYXJkcyBpbgpnZGIvdGVzdHN1aXRlL2JvYXJkcy4KCkFuIGFu IGV4YW1wbGUgb2YgbWFrZS1jaGVjay1hbGwuc2ggZm9yIG9uZSB0ZXN0LWNhc2UgaXM6Ci4u LgogJCAgfi9nZGIvc3JjL2dkYi9jb250cmliL21ha2UtY2hlY2stYWxsLnNoIGdkYi5iYXNl L2FkdmFuY2UuZXhwCiBMT0NBTDoKICMgb2YgZXhwZWN0ZWQgcGFzc2VzICAgICAgICAgICAg OAogVEFSR0VUIEJPQVJEOiBjYy13aXRoLWdkYi1pbmRleAogIyBvZiBleHBlY3RlZCBwYXNz ZXMgICAgICAgICAgICA4CiAgIC4uLgogSE9TVCBCT0FSRDogbG9jYWwtcmVtb3RlLWhvc3Qt bm90dHksIFRBUkdFVCBCT0FSRDogcmVtb3RlLXN0ZGlvLWdkYnNlcnZlcgogIyBvZiBleHBl Y3RlZCBwYXNzZXMgICAgICAgICAgICA4CiBIT1NUL1RBUkdFVCBCT0FSRDogbG9jYWwtcmVt b3RlLWhvc3QtbmF0aXZlCiAjIG9mIGV4cGVjdGVkIHBhc3NlcyAgICAgICAgICAgIDgKLi4u CgpTaGVsbC1jaGVja2VkIGFuZCB0ZXN0ZWQgb24geDg2XzY0LWxpbnV4LgotLS0KIGdkYi9j b250cmliL21ha2UtY2hlY2stYWxsLnNoIHwgMjk5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyOTkgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNzU1IGdkYi9jb250cmliL21ha2UtY2hlY2stYWxsLnNoCgpkaWZmIC0tZ2l0 IGEvZ2RiL2NvbnRyaWIvbWFrZS1jaGVjay1hbGwuc2ggYi9nZGIvY29udHJpYi9tYWtlLWNo ZWNrLWFsbC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uMGQ5 Zjk4MzMwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvY29udHJpYi9tYWtlLWNoZWNrLWFs bC5zaApAQCAtMCwwICsxLDI5OSBAQAorIyEvYmluL2Jhc2gKKworIyBDb3B5cmlnaHQgKEMp IDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFJ1biBtYWtlIGNoZWNr IHdpdGggYWxsIGJvYXJkcyBmcm9tIGdkYi90ZXN0c3VpdGUvYm9hcmRzLgorCisjIE5vdGUg dGhhdCBydW5uaW5nIHdpdGggdGhlIC0taG9zdC11c2VyIGFuZCAtLXRhcmdldC11c2VyIG9w dGlvbnMgaXMKKyMgcmVjb21tZW5kZWQsIGJlY2F1c2U6CisjIC0gcmVtb3RlIGhvc3QvdGFy Z2V0IGJvYXJkcyB3aWxsIHVzZSAkSE9NRSBhbmQgbGVhdmUgKHBvdGVudGlhbGx5IGxvdHMg b2YpCisjICAgZmlsZXMgYmVoaW5kLCBhbmQKKyMgLSBpdCBlbmFibGVkIG1vcmUgc3RyaWN0 IGNoZWNraW5nIG9mIGJ1aWxkL2hvc3QvdGFyZ2V0IGZpbGUgbWFuaXB1bGF0aW9ucy4KKyMK KyMgUmVjb21tZW5kZWQgdXNhZ2UgZXhhbXBsZToKKyMKKyMgYmFzaCQgY2QgJG9iamRpci9n ZGIvdGVzdHN1aXRlCisjIGJhc2gkICRzcmNkaXIvY29udHJpYi9nZGIvbWFrZS1jaGVjay1h bGwuc2ggLS1ob3N0LXVzZXIgcmVtb3RlLWhvc3QgXAorIyAgICAgICAgICAgLS10YXJnZXQt dXNlciByZW1vdGUtdGFyZ2V0IGdkYi5iYXNlL2FkdmFuY2UuZXhwCisKK3NldCAtZQorCito b3N0X2JvYXJkcz0oCisgICAgbG9jYWwtcmVtb3RlLWhvc3QKKyAgICBsb2NhbC1yZW1vdGUt aG9zdC1ub3R0eQorKQorCitnZGJzZXJ2ZXJfYm9hcmRzPSgKKyAgICBuYXRpdmUtZXh0ZW5k ZWQtZ2Ric2VydmVyCisgICAgbmF0aXZlLWdkYnNlcnZlcgorICAgIG5hdGl2ZS1zdGRpby1n ZGJzZXJ2ZXIKKykKKworcmVtb3RlX2dkYnNlcnZlcl9ib2FyZHM9KAorICAgIHJlbW90ZS1n ZGJzZXJ2ZXItb24tbG9jYWxob3N0CisgICAgcmVtb3RlLXN0ZGlvLWdkYnNlcnZlcgorKQor Citob3N0X3RhcmdldF9ib2FyZHM9KAorICAgIGxvY2FsLXJlbW90ZS1ob3N0LW5hdGl2ZQor KQorCit0YXJnZXRfYm9hcmRzPSgKKyAgICBjYy13aXRoLWdkYi1pbmRleAorICAgIGNjLXdp dGgtZGVidWctbmFtZXMKKyAgICBjYy13aXRoLWR3egorICAgIGNjLXdpdGgtZHd6LW0KKyAg ICBjYy13aXRoLWdudS1kZWJ1Z2xpbmsKKyAgICBkZWJ1Zy10eXBlcworICAgIGR3YXJmNC1n ZGItaW5kZXgKKyAgICBkd2FyZjY0CisgICAgZmlzc2lvbgorICAgIGZpc3Npb24tZHdwCisg ICAgZ29sZAorICAgIGdvbGQtZ2RiLWluZGV4CisgICAgcmVhZG5vdworICAgIHN0YWJzCisp CisKK3J0Zl9mb3JfYm9hcmQgKCkKK3sKKyAgICBsb2NhbCBiCisgICAgYj0iJDEiCisKKyAg ICBjYXNlICRiIGluCisJbG9jYWwtcmVtb3RlLWhvc3QtbmF0aXZlKQorCSAgICBta2RpciAt cCAiJHRtcGRpci8kYiIKKwkgICAgcnRmPSgKKwkJIiR7cnRmW0BdfSIKKwkJIkhPU1RfRElS PSR0bXBkaXIvJGIiCisJICAgICkKKwkgICAgOzsKKwlyZW1vdGUtc3RkaW8tZ2Ric2VydmVy KQorCSAgICBydGY9KAorCQkiJHtydGZbQF19IgorCQkiUkVNT1RFX0hPU1ROQU1FPWxvY2Fs aG9zdCIKKwkgICAgKQorCSAgICBpZiBbICIkdGFyZ2V0X3VzZXIiICE9ICIiIF07IHRoZW4K KwkJcnRmPSgKKwkJICAgICIke3J0ZltAXX0iCisJCSAgICAiUkVNT1RFX1VTRVJOQU1FPSR0 YXJnZXRfdXNlciIKKwkJKQorCSAgICBlbHNlCisJCXJ0Zj0oCisJCSAgICAiJHtydGZbQF19 IgorCQkgICAgIlJFTU9URV9VU0VSTkFNRT0kVVNFUiIKKwkJKQorCSAgICBmaQorCSAgICA7 OworCXJlbW90ZS1nZGJzZXJ2ZXItb24tbG9jYWxob3N0KQorCSAgICBpZiBbICIkdGFyZ2V0 X3VzZXIiICE9ICIiIF07IHRoZW4KKwkJcnRmPSgKKwkJICAgICIke3J0ZltAXX0iCisJCSAg ICAiUkVNT1RFX1RBUkdFVF9VU0VSTkFNRT0kdGFyZ2V0X3VzZXIiCisJCSkKKwkgICAgZmkK KwkgICAgOzsKKwlsb2NhbC1yZW1vdGUtaG9zdHxsb2NhbC1yZW1vdGUtaG9zdC1ub3R0eSkK KwkgICAgaWYgWyAiJGhvc3RfdXNlciIgIT0gIiIgXTsgdGhlbgorCQlydGY9KAorCQkgICAg IiR7cnRmW0BdfSIKKwkJICAgICJSRU1PVEVfSE9TVF9VU0VSTkFNRT0kaG9zdF91c2VyIgor CQkpCisJICAgIGVsc2UKKwkJcnRmPSgKKwkJICAgICIke3J0ZltAXX0iCisJCSAgICAiUkVN T1RFX0hPU1RfVVNFUk5BTUU9JFVTRVIiCisJCSkKKwkgICAgZmkKKwkgICAgOzsKKwkqKQor CSAgICA7OworICAgIGVzYWMKK30KKworc3VtbWFyeSAoKQoreworICAgIGlmICR2ZXJib3Nl OyB0aGVuCisJY2F0CisgICAgZWxzZQorCWdyZXAgLUUgIl4oI3xGQUlMOnxFUlJPUjp8V0FS TklORzopIiBcCisJICAgIHwgc29ydCAtdQorICAgIGZpCit9CisKK2RvX3Rlc3RzICgpCit7 CisgICAgaWYgJGRlYnVnOyB0aGVuCisJZWNobyAiUlRGOiAke3J0ZlsqXX0iCisgICAgZmkK KworICAgIGlmICRkcnlfcnVuOyB0aGVuCisJcmV0dXJuCisgICAgZmkKKworICAgIG1ha2Ug Y2hlY2sgXAorCSBSVU5URVNURkxBR1M9IiR7cnRmWypdfSAke3Rlc3RzWypdfSIgXAorCSAy PiYxIFwKKwl8IHN1bW1hcnkKKworICAgIGlmIFsgIiRoIiA9ICIiIF07IHRoZW4KKwlpZiBb ICIkYiIgPSAiIiBdOyB0aGVuCisJICAgIGNmZz1sb2NhbAorCWVsc2UKKwkgICAgY2ZnPSRi CisJZmkKKyAgICBlbHNlCisJY2ZnPSRoLSRiCisgICAgZmkKKworICAgIGxvY2FsIGRpcgor ICAgIGRpcj0iY2hlY2stYWxsLyRjZmciCisKKyAgICBpZiAka2VlcDsgdGhlbgorCW1rZGly IC1wICIkZGlyIgorCWNwIGdkYi5zdW0gZ2RiLmxvZyAiJGRpciIKKyAgICBmaQorfQorCitw YXJzZV9hcmdzICgpCit7CisgICAgZGVidWc9ZmFsc2UKKyAgICBrZWVwPWZhbHNlCisgICAg a2VlcF90bXA9ZmFsc2UKKyAgICB2ZXJib3NlPWZhbHNlCisgICAgZHJ5X3J1bj1mYWxzZQor CisgICAgaG9zdF91c2VyPSIiCisgICAgdGFyZ2V0X3VzZXI9IiIKKworICAgIHdoaWxlIFsg JCMgLWd0IDAgXTsgZG8KKwljYXNlICIkMSIgaW4KKwkgICAgLS1kZWJ1ZykKKwkJZGVidWc9 dHJ1ZQorCQk7OworCSAgICAtLWtlZXApCisJCWtlZXA9dHJ1ZQorCQk7OworCSAgICAtLWtl ZXAtdG1wKQorCQlrZWVwX3RtcD10cnVlCisJCTs7CisJICAgIC0tdmVyYm9zZSkKKwkJdmVy Ym9zZT10cnVlCisJCTs7CisJICAgIC0tZHJ5LXJ1bikKKwkJZHJ5X3J1bj10cnVlCisJCTs7 CisJICAgIC0taG9zdC11c2VyKQorCQlzaGlmdAorCQlob3N0X3VzZXI9IiQxIgorCQk7Owor CSAgICAtLXRhcmdldC11c2VyKQorCQlzaGlmdAorCQl0YXJnZXRfdXNlcj0iJDEiCisJCTs7 CisJICAgICopCisJCWJyZWFrCisJCTs7CisJZXNhYworCXNoaWZ0CisgICAgZG9uZQorCisg ICAgdGVzdHM9KCIkQCIpCit9CisKK2NsZWFudXAgKCkKK3sKKyAgICBpZiBbICIkdG1wZGly IiAhPSAiIiBdOyB0aGVuCisgICAgICAgIGlmICRrZWVwX3RtcDsgdGhlbgorCSAgICBlY2hv ICJrZWVwaW5nIHRtcCBkaXIgJHRtcGRpciIKKwllbHNlCQorCSAgICBybSAtUmYgIiR0bXBk aXIiCisJZmkKKyAgICBmaQorfQorCittYWluICgpCit7CisgICAgcGFyc2VfYXJncyAiJEAi CisKKyAgICB0bXBkaXI9IiIKKyAgICB0cmFwIGNsZWFudXAgRVhJVAorICAgIHRtcGRpcj0k KG1rdGVtcCAtZCkKKworICAgIGlmICRkZWJ1ZzsgdGhlbgorCWVjaG8gIlRFU1RTOiAke3Rl c3RzWypdfSIKKyAgICBmaQorCisgICAgaD0iIgorICAgIGI9IiIKKworICAgIGlmIHRydWU7 IHRoZW4KKwllY2hvICJMT0NBTDoiCisJcnRmPSgpCisJZG9fdGVzdHMKKyAgICBmaQorCisg ICAgaWYgdHJ1ZTsgdGhlbgorCWZvciBiIGluICIke3RhcmdldF9ib2FyZHNbQF19IjsgZG8K KwkgICAgZWNobyAiVEFSR0VUIEJPQVJEOiAkYiIKKwkgICAgcnRmPSgKKwkJLS10YXJnZXRf Ym9hcmQ9IiRiIgorCSAgICApCisJICAgIHJ0Zl9mb3JfYm9hcmQgIiRiIgorCSAgICBkb190 ZXN0cworCWRvbmUKKyAgICBmaQorCisgICAgaWYgdHJ1ZTsgdGhlbgorCWZvciBiIGluICIk e2dkYnNlcnZlcl9ib2FyZHNbQF19IiAiJHtyZW1vdGVfZ2Ric2VydmVyX2JvYXJkc1tAXX0i OyBkbworCSAgICBlY2hvICJUQVJHRVQgQk9BUkQ6ICRiIgorCSAgICBydGY9KAorCQktLXRh cmdldF9ib2FyZD0iJGIiCisJICAgICkKKwkgICAgcnRmX2Zvcl9ib2FyZCAiJGIiCisJICAg IGRvX3Rlc3RzCisJZG9uZQorICAgIGZpCisKKyAgICBpZiB0cnVlOyB0aGVuCisJZm9yIGgg aW4gIiR7aG9zdF9ib2FyZHNbQF19IjsgZG8KKwkgICAgZm9yIGIgaW4gIiR7cmVtb3RlX2dk YnNlcnZlcl9ib2FyZHNbQF19IjsgZG8KKwkJZWNobyAiSE9TVCBCT0FSRDogJGgsIFRBUkdF VCBCT0FSRDogJGIiCisJCXJ0Zj0oCisJCSAgICAtLWhvc3RfYm9hcmQ9IiRoIgorCQkgICAg LS10YXJnZXRfYm9hcmQ9IiRiIgorCQkpCisJCXJ0Zl9mb3JfYm9hcmQgIiRoIgorCQlydGZf Zm9yX2JvYXJkICIkYiIKKwkJZG9fdGVzdHMKKwkgICAgZG9uZQorCWRvbmUKKwloPSIiCisg ICAgZmkKKworICAgIGlmIHRydWU7IHRoZW4KKwlmb3IgYiBpbiAiJHtob3N0X3RhcmdldF9i b2FyZHNbQF19IjsgZG8KKwkgICAgZWNobyAiSE9TVC9UQVJHRVQgQk9BUkQ6ICRiIgorCSAg ICBydGY9KAorCQktLWhvc3RfYm9hcmQ9IiRiIgorCQktLXRhcmdldF9ib2FyZD0iJGIiCisJ ICAgICkKKwkgICAgcnRmX2Zvcl9ib2FyZCAiJGIiCisJICAgIGRvX3Rlc3RzCisJZG9uZQor ICAgIGZpCit9CisKK21haW4gIiRAIgoKYmFzZS1jb21taXQ6IDkyNzhhYTYxNzFlZGQ0Nzcz MjZmMWE3M2ExMTJkOThiOGI3ODU5NTQKLS0gCjIuMzUuMwoK --------------EbFZmLd7fJFA0vIRGgSMznqz--