Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jtsTz-0004xJ-CC for pgsql-www@arkaria.postgresql.org; Fri, 10 Jul 2020 12:50:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jtsTy-0003HW-6X for pgsql-www@arkaria.postgresql.org; Fri, 10 Jul 2020 12:50:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jtsTx-0003HP-Eo for pgsql-www@lists.postgresql.org; Fri, 10 Jul 2020 12:50:26 +0000 Received: from mail-ed1-x542.google.com ([2a00:1450:4864:20::542]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jtsTt-0007W1-4E for pgsql-www@postgresql.org; Fri, 10 Jul 2020 12:50:24 +0000 Received: by mail-ed1-x542.google.com with SMTP id bm28so2585273edb.2 for ; Fri, 10 Jul 2020 05:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgadmin.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=0fPsq5VzqUrZ/9q95eklIyeT4JDVOm0us79OR7NWH9s=; b=RLWXhIl+oYsZEG93cRERv0VwcDlYOY36C2qLiIdifhzePOs1GaH2BJuLdHrs7AEyeV 0VLpel+F5AE3UbEjaLru273Dw6C/T4D2HyTVt8sFeA4VEiw3rRnZVHE/T/J5Cr5B5aHd fYJNB2dCS7iL5kj3Ngt0PQ9ky0ewXSJs3b3mf8tv8MkwzJ9+qy0UdhD6Rl26EVPcz+55 Et2GXg7u3XCfP5OspwnMcuhWO30Ho5t0msZ4SCuxZpm//WZ8LnW3VD4ERhTXjxKljCwn h0iOXlJW9zaIYQkwFMIQ8nehhZoBTC8NTIsFztfYZEEko8Al4emJf2qnI7+W7/VldSdC +3AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=0fPsq5VzqUrZ/9q95eklIyeT4JDVOm0us79OR7NWH9s=; b=dgcEOfFIqsnwOIff7qQHTO/uIyPzSxOrCmck8mAnzABnkQbyelIgFNJ6LYzWYnPi5y RVuOh5rCKfapqQ85eodA6NPMPJNbtSD5n/jgoDZVYf0pELAYZ0zHx8pkJdtg0uFIZ1pO KYmjXipikNvIikklMBw9kTXEuz1KRqpv18Vg2XGWVMTbAD2gkw1ZPU83O5QwL7Umdc1f e5NUgh7e2clNKI2D74Xa8RGpP6VcxPl8LQ6MgkaqQClq5w0AZs6QjbNXJYLmwpQfQSES 7jCb5+VCq7CJP9LQAxPu7jqrKL9FUOP+jEWD62CwHdIgJ1vqSzdTVTrVgwHr+DK+hZRR M42w== X-Gm-Message-State: AOAM530EUmEQZYQ4gMpcRvJW0VKmIdWo5UpUfSZKlFiNrJRdaFf3vvp3 05zAgrLR4Qdip9BXJezL4XkW9tM7RU6VUIvvbD+Pwg== X-Google-Smtp-Source: ABdhPJy4GpHAGXPev8inK5H+6HinxHJSSYyP/1pPJlrxnBS9gjlTKbMzsOfsHS0iA8M3xaGxInFIZMjvnNwP56zkLLY= X-Received: by 2002:a50:f418:: with SMTP id r24mr71002731edm.382.1594385419520; Fri, 10 Jul 2020 05:50:19 -0700 (PDT) MIME-Version: 1.0 References: <20200709093136.GA71301@msg.df7cb.de> In-Reply-To: <20200709093136.GA71301@msg.df7cb.de> From: Dave Page Date: Fri, 10 Jul 2020 13:50:08 +0100 Message-ID: Subject: Re: apt.postgresql.org django app for www.postgresql.org To: Christoph Berg , Dave Page , PostgreSQL WWW , Adrian Vondendriesch Content-Type: multipart/mixed; boundary="000000000000914d0505aa15c883" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000914d0505aa15c883 Content-Type: multipart/alternative; boundary="000000000000914d0205aa15c881" --000000000000914d0205aa15c881 Content-Type: text/plain; charset="UTF-8" On Thu, Jul 9, 2020 at 10:31 AM Christoph Berg wrote: > Re: Dave Page > > I spent a bunch of time playing with this, as I intend to get repo > > browsing for both Yum and Apt onto the website. > > > > There was quite a bit of work to do to get it working with modern > versions > > of Django and Python 3. Once I got through enough of that to start > looking > > at the actual functionality what I found was *really* comprehensive. > > Unfortunately I think there's actually far more there than we should put > on > > the main website. > > Hi Dave, > > thanks for picking this up. > > It's well possible that I overshot the goal when I picked this up from > Adrian and put more and more info into it. > :-) > > > - I think the QA section is clearly something that's aimed at you as > > maintainers of the apt repos. This definitely doesn't belong on the main > > website in my opinion. > > Yeah that could go. > > > - The madison interface is also interesting (academically), but I think > is > > of little use to the vast majority of our users; I'm not even sure that > the > > majority of Debian/Ubuntu users would know about rmadison. > > I'm using that daily on the Debian archive, and it would help me a lot > if it were there. But we don't have to link it from every page, it's > just some API endpoint, we don't have to confuse users by linking to > it. > > > - Similarly, I think the binary and source package pages are far more > > comprehensive than most of our users need or would care about. > > > > One of the biggest barriers of adoption to PostgreSQL is the perceived > > complexity, including that of getting it up and running. That's why I'm > > spending a lot of time at the moment trying to simplify and clarify the > > download and installation processes. I think what we have in this patch > > will simply be information overload for most of our users. > > Ack. We can probably merge the source and binary views into a single > (bigger) page with less clutter that users would reach by default. We > can still have the detailed pages linked from that for users that need > to know the details. I'm sure we can find a way to do that that > doesn't spoil the complexity reduction idea. > Yeah. As a side note, the other thing I'm trying to do is be fairly consistent design-wise between apt, yum and zypp. > > > My suggestion is that we incorporate a relatively simple browser into the > > main website, which allows users to easily browse the available packages > > and see the details of them. > > That'd be about what I said above, I think. > > > I already have the repo scanning part of that > > done for both apt and yum, generating JSON output in a way that can be > > integrated with our download server sync process, which can load that > into > > the website database. > > Is that online somewhere? > No, but I've attached the WIP scripts. Comments welcome. Note that I've studiously avoided using any modules or external utilities that are only available on Debian/Ubuntu. Sample output for Apt looks like: [ { "Architecture": "arm64", "Build": "3.pgdg+1", "Description": "debug symbols for pg-rage-terminator-9.6", "Distribution": "sid", "Filename": "pool/main/p/pg-rage-terminator/pg-rage-terminator-9.6-dbgsym_0.1.7-3.pgdg+1_arm64.deb", "Licence": "", "Maintainer": "Adrian Vondendriesch ", "Package": "pg-rage-terminator-9.6-dbgsym", "Repo": "sid-pgdg-testing", "Version": "0.1.7" }, { "Architecture": "arm64", "Build": "1.pgdg+1", "Description": "PostgreSQL management tool - GUI application\npgAdmin is an open source administration and management tool for the\nPostgreSQL database. It includes a graphical administration interface, an SQL\nquery tool, a procedural code debugger and much more. The tool is designed to\nanswer the needs of developers, DBAs and system administrators alike.\n\nThis package installs the GUI application.", "Distribution": "sid", "Filename": "pool/main/p/pgadmin4/pgadmin4_4.21-1.pgdg+1_arm64.deb", "Licence": "", "Maintainer": "Debian PostgreSQL Maintainers < team+postgresql@tracker.debian.org>", "Package": "pgadmin4", "Repo": "sid-pgdg-testing", "Url": "https://www.pgadmin.org/", "Version": "4.21" } ] And for Yum: [ { "Architecture": "ppc64le", "Build": "9.rhel7", "Description": "pgAgent is a job scheduler for PostgreSQL which may be managed\nusing pgAdmin.", "Distribution": "rhel-7", "Filename": "9.5/redhat/rhel-7-ppc64le/pgagent_95-3.4.0-9.rhel7.ppc64le.rpm", "Licence": "PostgreSQL", "Maintainer": "", "Package": "pgagent_95", "Repo": "9.5", "Url": "http://www.pgadmin.org/", "Version": "3.4.0" }, { "Architecture": "ppc64le", "Build": "1.f25", "Description": "The PostgreSQL Audit extension (pgaudit) provides detailed session\nand/or object audit logging via the standard PostgreSQL logging\nfacility.\n\nThe goal of the PostgreSQL Audit extension (pgaudit) is to provide\nPostgreSQL users with capability to produce audit logs often required to\ncomply with government, financial, or ISO certifications.\n\nAn audit is an official inspection of an individual's or organization's\naccounts, typically by an independent body. The information gathered by\nthe PostgreSQL Audit extension (pgaudit) is properly called an audit\ntrail or audit log. The term audit log is used in this documentation.", "Distribution": "rhel-7", "Filename": "9.5/redhat/rhel-7-ppc64le/pgaudit10_95-1.0.5-1.f25.ppc64le.rpm", "Licence": "BSD", "Maintainer": "", "Package": "pgaudit10_95", "Repo": "9.5", "Url": "https://www.pgaudit.org", "Version": "1.0.5" } ] > > > I would support a separate site (probably under apt.enterprisedb.com) > that > > supports the level of functionality you have in your patch; and I think > > much, if not all of the code you currently have could be used for that. > > This could of course be linked from the main website. > > Maintaining two sets of interfaces is probably too much. I think we > can get the "main" one to work, we just need to remove lots of > clutter. > I have a suspicion that what I think would be appropriate for most of our users wouldn't be enough for you. Definitely open to discussion though! > > > Obviously that should be apt.postgresql.org :-) > > That got me for a second. ;) Yeah, muscle memory :-p -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EDB: http://www.enterprisedb.com --000000000000914d0205aa15c881 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=
On Thu, Jul 9, 2020 at 10:31 AM Chris= toph Berg <myon@deb= ian.org> wrote:
Re: Dave Page
>=C2=A0 I spent a bunch of time playing with this, as I intend to get re= po
> browsing for both Yum and Apt onto the website.
>
> There was quite a bit of work to do to get it working with modern vers= ions
> of Django and Python 3. Once I got through enough of that to start loo= king
> at the actual functionality what I found was *really* comprehensive. > Unfortunately I think there's actually far more there than we shou= ld put on
> the main website.

Hi Dave,

thanks for picking this up.

It's well possible that I overshot the goal when I picked this up from<= br> Adrian and put more and more info into it.

<= div>:-)
=C2=A0

> - I think the QA section is clearly something that's aimed at you = as
> maintainers of the apt repos. This definitely doesn't belong on th= e main
> website in my opinion.

Yeah that could go.

> - The madison interface is also interesting (academically), but I thin= k is
> of little use to the vast majority of our users; I'm not even sure= that the
> majority of Debian/Ubuntu users would know about rmadison.

I'm using that daily on the Debian archive, and it would help me a lot<= br> if it were there. But we don't have to link it from every page, it'= s
just some API endpoint, we don't have to confuse users by linking to it.

> - Similarly, I think the binary and source package pages are far more<= br> > comprehensive than most of our users need or would care about.
>
> One of the biggest barriers of adoption to PostgreSQL is the perceived=
> complexity, including that of getting it up and running. That's wh= y I'm
> spending a lot of time at the moment trying to simplify and clarify th= e
> download and installation processes. I think what we have in this patc= h
> will simply be information overload for most of our users.

Ack. We can probably merge the source and binary views into a single
(bigger) page with less clutter that users would reach by default. We
can still have the detailed pages linked from that for users that need
to know the details. I'm sure we can find a way to do that that
doesn't spoil the complexity reduction idea.

<= /div>
Yeah. As a side note, the other thing I'm trying to do is be = fairly consistent design-wise between apt, yum and zypp.
=C2=A0

> My suggestion is that we incorporate a relatively simple browser into = the
> main website, which allows users to easily browse the available packag= es
> and see the details of them.

That'd be about what I said above, I think.

> I already have the repo scanning part of that
> done for both apt and yum, generating JSON output in a way that can be=
> integrated with our download server sync process, which can load that = into
> the website database.

Is that online somewhere?

No, but I'= ;ve attached the WIP scripts. Comments welcome. Note that I've studious= ly avoided using any modules or external utilities that are only available = on Debian/Ubuntu. Sample output for Apt looks like:

[
=C2=A0 {
=C2=A0 =C2=A0 "Architecture": "arm= 64",
=C2=A0 =C2=A0 "Build": "3.pgdg+1",
=C2= =A0 =C2=A0 "Description": "debug symbols for pg-rage-termina= tor-9.6",
=C2=A0 =C2=A0 "Distribution": "sid",<= br>=C2=A0 =C2=A0 "Filename": "pool/main/p/pg-rage-terminator= /pg-rage-terminator-9.6-dbgsym_0.1.7-3.pgdg+1_arm64.deb",
=C2=A0 = =C2=A0 "Licence": "",
=C2=A0 =C2=A0 "Maintainer= ": "Adrian Vondendriesch <adrian.vondendriesch@credativ.de>",
=C2=A0 = =C2=A0 "Package": "pg-rage-terminator-9.6-dbgsym",
= =C2=A0 =C2=A0 "Repo": "sid-pgdg-testing",
=C2=A0 =C2= =A0 "Version": "0.1.7"
=C2=A0 },
=C2=A0 {
=C2= =A0 =C2=A0 "Architecture": "arm64",
=C2=A0 =C2=A0 &q= uot;Build": "1.pgdg+1",
=C2=A0 =C2=A0 "Description&q= uot;: "PostgreSQL management tool - GUI application\npgAdmin is an ope= n source administration and management tool for the\nPostgreSQL database. I= t includes a graphical administration interface, an SQL\nquery tool, a proc= edural code debugger and much more. The tool is designed to\nanswer the nee= ds of developers, DBAs and system administrators alike.\n\nThis package ins= talls the GUI application.",
=C2=A0 =C2=A0 "Distribution"= : "sid",
=C2=A0 =C2=A0 "Filename": "pool/main/p= /pgadmin4/pgadmin4_4.21-1.pgdg+1_arm64.deb",
=C2=A0 =C2=A0 "Li= cence": "",
=C2=A0 =C2=A0 "Maintainer": "D= ebian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>",
=C2=A0 = =C2=A0 "Package": "pgadmin4",
=C2=A0 =C2=A0 "Re= po": "sid-pgdg-testing",
=C2=A0 =C2=A0 "Url": &= quot;https://www.pgadmin.org/"= ;,
=C2=A0 =C2=A0 "Version": "4.21"
=C2=A0 }
]

And for Yum:

[=
=C2=A0 {
=C2=A0 =C2=A0 "Architecture": "ppc64l= e",
=C2=A0 =C2=A0 "Build": "9.rhel7",
=C2=A0= =C2=A0 "Description": "pgAgent is a job scheduler for Postg= reSQL which may be managed\nusing pgAdmin.",
=C2=A0 =C2=A0 "Di= stribution": "rhel-7",
=C2=A0 =C2=A0 "Filename"= : "9.5/redhat/rhel-7-ppc64le/pgagent_95-3.4.0-9.rhel7.ppc64le.rpm"= ;,
=C2=A0 =C2=A0 "Licence": "PostgreSQL",
=C2=A0 = =C2=A0 "Maintainer": "",
=C2=A0 =C2=A0 "Package= ": "pgagent_95",
=C2=A0 =C2=A0 "Repo": "9.= 5",
=C2=A0 =C2=A0 "Url": "http://www.pgadmin.org/",
=C2=A0 =C2=A0 "Version= ": "3.4.0"
=C2=A0 },
=C2=A0 {
=C2=A0 =C2=A0 "A= rchitecture": "ppc64le",
=C2=A0 =C2=A0 "Build":= "1.f25",
=C2=A0 =C2=A0 "Description": "The Pos= tgreSQL Audit extension (pgaudit) provides detailed session\nand/or object = audit logging via the standard PostgreSQL logging\nfacility.\n\nThe goal of= the PostgreSQL Audit extension (pgaudit) is to provide\nPostgreSQL users w= ith capability to produce audit logs often required to\ncomply with governm= ent, financial, or ISO certifications.\n\nAn audit is an official inspectio= n of an individual's or organization's\naccounts, typically by an i= ndependent body. The information gathered by\nthe PostgreSQL Audit extensio= n (pgaudit) is properly called an audit\ntrail or audit log. The term audit= log is used in this documentation.",
=C2=A0 =C2=A0 "Distribut= ion": "rhel-7",
=C2=A0 =C2=A0 "Filename": "= ;9.5/redhat/rhel-7-ppc64le/pgaudit10_95-1.0.5-1.f25.ppc64le.rpm",
= =C2=A0 =C2=A0 "Licence": "BSD",
=C2=A0 =C2=A0 "= Maintainer": "",
=C2=A0 =C2=A0 "Package": "= ;pgaudit10_95",
=C2=A0 =C2=A0 "Repo": "9.5",=C2=A0 =C2=A0 "Url": "h= ttps://www.pgaudit.org",
=C2=A0 =C2=A0 "Version": &qu= ot;1.0.5"
=C2=A0 }
]
=C2=A0

> I would support a separate site (probably under apt.enterprisedb.com= ) that
> supports the level of functionality you have in your patch; and I thin= k
> much, if not all of the code you currently have could be used for that= .
> This could of course be linked from the main website.

Maintaining two sets of interfaces is probably too much. I think we
can get the "main" one to work, we just need to remove lots of clutter.

I have a suspicion that what I= think would be appropriate for most of our users wouldn't be enough fo= r you. Definitely open to discussion though!
=C2=A0

> Obviously that should be apt.postgresql.org :-)

That got me for a second. ;)

Yeah, muscle m= emory :-p

--
--000000000000914d0205aa15c881-- --000000000000914d0505aa15c883 Content-Type: text/x-python-script; charset="US-ASCII"; name="scan-apt.py" Content-Disposition: attachment; filename="scan-apt.py" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kcg7r2xf0 aW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBqc29uCmltcG9ydCBvcwpmcm9tIHBhdGhsaWIgaW1wb3J0 IFBhdGgKCgpkZWYgZ2V0X3BhY2thZ2VfZmlsZXMocmVwb19kaXIpOgogICAgIyBHZXQgYSBsaXN0 IG9mIGFsbCB0aGUgUGFja2FnZXMgZmlsZXMKICAgIHBhY2thZ2VfZmlsZXMgPSBbXQoKICAgIGZv ciBwYXRoIGluIFBhdGgocmVwb19kaXIpLnJnbG9iKCdQYWNrYWdlcycpOgogICAgICAgIHBhY2th Z2VfZmlsZXMuYXBwZW5kKHBhdGguYWJzb2x1dGUoKSkKCiAgICByZXR1cm4gcGFja2FnZV9maWxl cwoKCmRlZiBnZXRfZGlzdHJpYnV0aW9uKHBhY2thZ2VfZmlsZSk6CiAgICAjIEZpbmQgdGhlIFJl bGVhc2UgZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQYWNrYWdlcyBmaWxlLCBhbmQgZ2V0IHRo ZQogICAgIyBkaXN0cmlidXRpb24gbmFtZSBmcm9tIGl0LgogICAgd2l0aCBvcGVuKG9zLnBhdGgu ZGlybmFtZShwYWNrYWdlX2ZpbGUpICsgJy9SZWxlYXNlJywgInIiKSBhcyByZWxlYXNlX2RhdGE6 CiAgICAgICAgZm9yIHJlbGVhc2VfbGluZSBpbiByZWxlYXNlX2RhdGE6CiAgICAgICAgICAgIGlm IHJlbGVhc2VfbGluZS5zdGFydHN3aXRoKCJBcmNoaXZlOiAiKToKICAgICAgICAgICAgICAgIHJl dHVybiByZWxlYXNlX2xpbmVbOTpdCgogICAgcmV0dXJuIE5vbmUKCgpkZWYgZ2V0X2xpY2VuY2Uo ZGViX2ZpbGUpOgogICAgIyBUT0RPOiBGaWd1cmUgb3V0IGEgc2FuZSB3YXkgdG8gZ2V0IHRoZSBs aWNlbnNlCiAgICBsaWNlbnNlID0gJycKCiAgICByZXR1cm4gbGljZW5zZQoKCmRlZiBnZXRfcGFj a2FnZXMocGFja2FnZV9maWxlKToKICAgICMgRXh0cmFjdCBhbGwgdGhlIHBhY2thZ2VzIGZyb20g YSBwYWNrYWdlIGZpbGUKICAgIHBhY2thZ2VzID0gW10KCiAgICB3aXRoIG9wZW4ocGFja2FnZV9m aWxlLCAiciIpIGFzIHBhY2thZ2VfZGF0YToKICAgICAgICBwYWNrYWdlID0gIiIKICAgICAgICBm aXJzdCA9IFRydWUKCiAgICAgICAgZm9yIGxpbmUgaW4gcGFja2FnZV9kYXRhOgogICAgICAgICAg ICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BhY2thZ2U6ICcpIGFuZCBub3QgZmlyc3Q6CiAgICAgICAg ICAgICAgICAjIEdldCB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICAgICAgICBkaXN0cmlidXRp b24gPSBnZXRfZGlzdHJpYnV0aW9uKHBhY2thZ2VfZmlsZSkKICAgICAgICAgICAgICAgIGlmIGRp c3RyaWJ1dGlvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBwYWNrYWdlID0gcGFj a2FnZSArICdcbkRpc3RyaWJ1dGlvbjogJyArIGRpc3RyaWJ1dGlvbgoKICAgICAgICAgICAgICAg IHBhY2thZ2VzLmFwcGVuZChwYWNrYWdlKQogICAgICAgICAgICAgICAgcGFja2FnZSA9ICIiCiAg ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCgogICAgICAgICAg ICBwYWNrYWdlID0gcGFja2FnZSArIGxpbmUKCiAgICByZXR1cm4gcGFja2FnZXMKCgpkZWYgZ2V0 X3BhY2thZ2UocGFja2FnZV9kYXRhKToKICAgICMgRGVjb2RlIGEgUGFja2FnZSBlbnRyeSBpbnRv IGEgZGljdGlvbmFyeQogICAgcGFja2FnZSA9IHt9CiAgICBpbl9kZXNjcmlwdGlvbiA9IEZhbHNl CgogICAgZm9yIGxpbmUgaW4gcGFja2FnZV9kYXRhLnNwbGl0bGluZXMoKToKICAgICAgICAjIFBh Y2thZ2UKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2U6ICIpOgogICAgICAgICAg ICBwYWNrYWdlWydQYWNrYWdlJ10gPSBsaW5lWzk6XQoKICAgICAgICAjIFZlcnNpb24KICAgICAg ICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlZlcnNpb246ICIpOgogICAgICAgICAgICAjIFRoZSBidWls ZCBpcyBub3JtYWxseSBwcmVmaXhlZCB3aXRoIGEgLSwgYnV0IHNvbWV0aW1lcwogICAgICAgICAg ICAjIGp1c3QgLnBnZGcKICAgICAgICAgICAgcGFja2FnZVsnVmVyc2lvbiddID0gbGluZVs5Ol0u c3BsaXQoJy0nKVswXQogICAgICAgICAgICBwYWNrYWdlWydCdWlsZCddID0gJycuam9pbihsaW5l Wzk6XS5zcGxpdCgnLScpWzE6XSkKCiAgICAgICAgICAgIGlmICcucGdkZycgaW4gcGFja2FnZVsn VmVyc2lvbiddOgogICAgICAgICAgICAgICAgdmVyc2lvbiA9IGxpbmVbOTpdLnNwbGl0KCcucGdk ZycpCiAgICAgICAgICAgICAgICBwYWNrYWdlWydWZXJzaW9uJ10gPSB2ZXJzaW9uWzBdCiAgICAg ICAgICAgICAgICBwYWNrYWdlWydCdWlsZCddID0gJ3BnZGcnICsgdmVyc2lvblsxXQoKICAgICAg ICAjIEFyY2hpdGVjdHVyZQogICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQXJjaGl0ZWN0dXJl OiAiKToKICAgICAgICAgICAgcGFja2FnZVsnQXJjaGl0ZWN0dXJlJ10gPSBsaW5lWzE0Ol0KCiAg ICAgICAgIyBGaWxlbmFtZQogICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiRmlsZW5hbWU6ICIp OgogICAgICAgICAgICBwYWNrYWdlWydGaWxlbmFtZSddID0gbGluZVsxMDpdCgogICAgICAgICAg ICAjIExpY2VuY2UKICAgICAgICAgICAgbGljZW5jZSA9IGdldF9saWNlbmNlKGxpbmVbMTA6XSkK ICAgICAgICAgICAgaWYgbGljZW5jZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHBhY2th Z2VbJ0xpY2VuY2UnXSA9IGxpY2VuY2UKCiAgICAgICAgIyBEZXNjcmlwdGlvbi4gVGhpcyBjYW4g YmUgbXVsdGktbGluZS4gVHJlYXQgdGhlIGZpcnN0IGxpbmUKICAgICAgICAjIGFzIG5vcm1hbCwg dGhlbiBzY2FuIHRoZSByZXN0IHVudGlsIHdlIGhpdCB0aGUgZW5kCiAgICAgICAgaWYgaW5fZGVz Y3JpcHRpb246CiAgICAgICAgICAgIGlmIGxpbmUuc3RyaXAoKSA9PSAiLiI6CiAgICAgICAgICAg ICAgICBwYWNrYWdlWydEZXNjcmlwdGlvbiddID0gcGFja2FnZVsnRGVzY3JpcHRpb24nXSArICJc biIKCiAgICAgICAgICAgICMgVGhlIGRlc2NyaXB0aW9uIGVuZHMgd2hlbiB3ZSBlbmNvdW50ZXIg YSBsaW5lIHRoYXQgZG9lc24ndCBzdGFydAogICAgICAgICAgICAjIHdpdGggYSBzcGFjZS4KICAg ICAgICAgICAgZWxpZiBub3QgbGluZS5zdGFydHN3aXRoKCIgIik6CiAgICAgICAgICAgICAgICBp bl9kZXNjcmlwdGlvbiA9IEZhbHNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBw YWNrYWdlWydEZXNjcmlwdGlvbiddID0gXAogICAgICAgICAgICAgICAgICAgIHBhY2thZ2VbJ0Rl c2NyaXB0aW9uJ10gKyAnXG4nICsgbGluZS5zdHJpcCgpCgogICAgICAgIGlmIGxpbmUuc3RhcnRz d2l0aCgiRGVzY3JpcHRpb246ICIpOgogICAgICAgICAgICBwYWNrYWdlWydEZXNjcmlwdGlvbidd ID0gbGluZVsxMzpdCiAgICAgICAgICAgIGluX2Rlc2NyaXB0aW9uID0gVHJ1ZQoKICAgICAgICAj IERpc3RyaWJ1dGlvbi9SZXBvCiAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJEaXN0cmlidXRp b246ICIpOgogICAgICAgICAgICBwYWNrYWdlWydEaXN0cmlidXRpb24nXSA9IGxpbmVbMTQ6XS5z cGxpdCgnLScpWzBdCiAgICAgICAgICAgIHBhY2thZ2VbJ1JlcG8nXSA9IGxpbmVbMTQ6XQoKICAg ICAgICAjIFVSTAogICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiSG9tZXBhZ2U6ICIpOgogICAg ICAgICAgICBwYWNrYWdlWydVcmwnXSA9IGxpbmVbMTA6XQoKICAgICAgICAjIFBhY2thZ2VyCiAg ICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJNYWludGFpbmVyOiAiKToKICAgICAgICAgICAgcGFj a2FnZVsnTWFpbnRhaW5lciddID0gbGluZVsxMjpdCgogICAgcmV0dXJuIHBhY2thZ2UKCgpkZWYg bWFpbigpOgogICAgIyBDb21tYW5kIGxpbmUgYXJndW1lbnRzCiAgICBwYXJzZXIgPSBhcmdwYXJz ZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nU2NhbiBhIHNldCBvZiBBUFQgcmVwb3MgYW5k ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZW5l cmF0ZSBhIEpTT04gY2F0YWxvZyBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAndGhlIGNvbnRlbnRzLicpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50 KCJyZXBvIiwgaGVscD0idGhlIHJlcG8gZGlyZWN0b3J5LCBvciBkaXJlY3RvcnkgIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5pbmcgbXVsdGlwbGUgcmVwb3Mi KQoKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCgogICAgcGFja2FnZV9pbmZvID0gW10K ICAgIHBhY2thZ2VfZmlsZXMgPSBnZXRfcGFja2FnZV9maWxlcyhhcmdzLnJlcG8pCgogICAgZm9y IHBhY2thZ2VfZmlsZSBpbiBwYWNrYWdlX2ZpbGVzOgogICAgICAgIHBhY2thZ2VzID0gZ2V0X3Bh Y2thZ2VzKHBhY2thZ2VfZmlsZSkKCiAgICAgICAgZm9yIHBhY2thZ2UgaW4gcGFja2FnZXM6CiAg ICAgICAgICAgIHBhY2thZ2VfaW5mby5hcHBlbmQoZ2V0X3BhY2thZ2UocGFja2FnZSkpCgogICAg d2l0aCBvcGVuKCdhcHQuanNvbicsICd3JykgYXMgb3V0cHV0X2ZpbGU6CiAgICAgICAganNvbi5k dW1wKHBhY2thZ2VfaW5mbywgb3V0cHV0X2ZpbGUsIGluZGVudD0yLCBzb3J0X2tleXM9VHJ1ZSkK CgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigpCg== --000000000000914d0505aa15c883 Content-Type: text/x-sh; charset="US-ASCII"; name="sync-repos.sh" Content-Disposition: attachment; filename="sync-repos.sh" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kcg7r2xn2 IyEvYmluL3NoCgplY2hvICJTeW5jaW5nIEFQVCByZXBvcy4uLiIKcnN5bmMgLWF2eiAtLWRlbGV0 ZSAtLWluY2x1ZGUgIiovIiAtLWluY2x1ZGU9IlJlbGVhc2UiIC0taW5jbHVkZT0iUGFja2FnZXMi IC0tZXhjbHVkZT0iKiIgcnN5bmM6Ly9mdHAucG9zdGdyZXNxbC5vcmcvcGdzcWwtZnRwL3JlcG9z L2FwdCAuCgplY2hvICJTeW5jaW5nIFl1bSByZXBvcy4uLiIKcnN5bmMgLWF2eiAtLWRlbGV0ZSAt LWluY2x1ZGUgIiovIiAtLWluY2x1ZGU9IiovcmVwb2RhdGEvKiIgLS1leGNsdWRlPSIqIiByc3lu YzovL2Z0cC5wb3N0Z3Jlc3FsLm9yZy9wZ3NxbC1mdHAvcmVwb3MveXVtIC4KCmVjaG8gIlN5bmNp bmcgWnlwcCByZXBvcy4uLiIKcnN5bmMgLWF2eiAtLWRlbGV0ZSAtLWluY2x1ZGUgIiovIiAtLWlu Y2x1ZGU9IiovcmVwb2RhdGEvKiIgLS1leGNsdWRlPSIqIiByc3luYzovL2Z0cC5wb3N0Z3Jlc3Fs Lm9yZy9wZ3NxbC1mdHAvcmVwb3MvenlwcCAu --000000000000914d0505aa15c883 Content-Type: text/x-python-script; charset="US-ASCII"; name="scan-yum.py" Content-Disposition: attachment; filename="scan-yum.py" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kcg7r2xl1 aW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBqc29uCmltcG9ydCBvcwpmcm9tIHBhdGhsaWIgaW1wb3J0 IFBhdGgKCmltcG9ydCByZXBvbWQKCgpkZWYgZ2V0X3JlcG9zKHJlcG9fZGlyKToKICAgICMgR2V0 IGEgbGlzdCBvZiBhbGwgcmVwbyBkaXJzCiAgICByZXBvcyA9IFtdCgogICAgZm9yIHBhdGggaW4g UGF0aChyZXBvX2Rpcikucmdsb2IoJ3JlcG9tZC54bWwnKToKICAgICAgICByZXBvcy5hcHBlbmQo cGF0aC5wYXJlbnQucGFyZW50LmFic29sdXRlKCkpCgogICAgcmV0dXJuIHJlcG9zCgoKZGVmIGdl dF9kaXN0cmlidXRpb24ocmVwbyk6CiAgICBkaXN0cmlidXRpb25fZGlyID0gcmVwby5uYW1lCgog ICAgcGFydHMgPSBkaXN0cmlidXRpb25fZGlyLnNwbGl0KCctJykKICAgIGRpc3RyaWJ1dGlvbiA9 ICctJy5qb2luKHBhcnRzWzoyXSkKCiAgICByZXR1cm4gZGlzdHJpYnV0aW9uCgoKZGVmIGdldF9w YWNrYWdlX2luZm8ocmVwbywgYmFzZV9wYXRoKToKICAgIHBhY2thZ2VzID0gW10KCiAgICByZXBv X2RhdGEgPSByZXBvbWQubG9hZCgnZmlsZTovLycgKyBzdHIocmVwbykpCiAgICBmb3IgcGFja2Fn ZV9kYXRhIGluIHJlcG9fZGF0YToKICAgICAgICBwYWNrYWdlID0geydQYWNrYWdlJzogcGFja2Fn ZV9kYXRhLm5hbWUsCiAgICAgICAgICAgICAgICAgICAnVmVyc2lvbic6IHBhY2thZ2VfZGF0YS52 ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgJ0J1aWxkJzogcGFja2FnZV9kYXRhLnJlbGVhc2Us CiAgICAgICAgICAgICAgICAgICAnQXJjaGl0ZWN0dXJlJzogcGFja2FnZV9kYXRhLmFyY2gsCiAg ICAgICAgICAgICAgICAgICAnRmlsZW5hbWUnOiBvcy5wYXRoLnJlbHBhdGgoc3RyKHJlcG8pICsg Jy8nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNr YWdlX2RhdGEubG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmFzZV9wYXRoKSwKICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbic6IHBh Y2thZ2VfZGF0YS5kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICdEaXN0cmlidXRpb24n OiBnZXRfZGlzdHJpYnV0aW9uKHJlcG8pLAogICAgICAgICAgICAgICAgICAgJ1VybCc6IHBhY2th Z2VfZGF0YS51cmwsCiAgICAgICAgICAgICAgICAgICAnTWFpbnRhaW5lcic6IHBhY2thZ2VfZGF0 YS52ZW5kb3IsCiAgICAgICAgICAgICAgICAgICAnUmVwbyc6IG9zLnBhdGgucmVscGF0aChzdHIo cmVwbyksIGJhc2VfcGF0aCkuc3BsaXQoJy8nKVswXSwKICAgICAgICAgICAgICAgICAgICdMaWNl bmNlJzogcGFja2FnZV9kYXRhLmxpY2Vuc2UKICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg cGFja2FnZXMuYXBwZW5kKHBhY2thZ2UpCgogICAgcmV0dXJuIHBhY2thZ2VzCgoKZGVmIG1haW4o KToKCiAgICAjIENvbW1hbmQgbGluZSBhcmd1bWVudHMKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy Z3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdTY2FuIGEgc2V0IG9mIEFQVCByZXBvcyBhbmQgJwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRl IGEgSlNPTiBjYXRhbG9nIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICd0aGUgY29udGVudHMuJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInJl cG8iLCBoZWxwPSJ0aGUgcmVwbyBkaXJlY3RvcnksIG9yIGRpcmVjdG9yeSAiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFpbmluZyBtdWx0aXBsZSByZXBvcyIpCgog ICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBwYWNrYWdlX2luZm8gPSBbXQogICAg cmVwb3MgPSBnZXRfcmVwb3MoYXJncy5yZXBvKQoKICAgIGZvciByZXBvIGluIHJlcG9zOgogICAg ICAgIHBhY2thZ2VfaW5mby5leHRlbmQoZ2V0X3BhY2thZ2VfaW5mbyhyZXBvLCBhcmdzLnJlcG8p KQoKICAgIHdpdGggb3BlbigneXVtLmpzb24nLCAndycpIGFzIG91dHB1dF9maWxlOgogICAgICAg IGpzb24uZHVtcChwYWNrYWdlX2luZm8sIG91dHB1dF9maWxlLCBpbmRlbnQ9Miwgc29ydF9rZXlz PVRydWUpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oKQo= --000000000000914d0505aa15c883--