From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de 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) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1680685312; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=3YkUjsqkIRI5uZiINvjRmwE8ImGAd16+iqij4NSaGp0=; b=VHJIXDwxGiH8BDZgiu/InZwHOjK2xtkN5hYVuSOXGb4gGLd224Uabz1WSkaw5uNfjlaFdn medSbJvntZgX0hpnvkyicXfgJ+HAkqDj28bTo3KG+zdKJgP9xJwec++YYGZDrVc1WLn50P 8FYew1UROM8oBbGEM7sY50gDtG49QJo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1680685312; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=3YkUjsqkIRI5uZiINvjRmwE8ImGAd16+iqij4NSaGp0=; b=wi1/ETaWEgT/4Zb6yUMmeKBSvPItPfqWvM3FiqwZXFhxp/hRPUZaFrddGKTy1qwvCx7T2P FFhSAhqXciXcVcBA== 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> From: Tom de Vries In-Reply-To: <87wn2rc22u.fsf@redhat.com> X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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--