get-cygwin-package - for anyone with upload privileges

2012-10-17 Thread Christopher Faylor
As I mentioned in another post, I've hacked at the get-cygwin-package
script so that it should properly handle -debuginfo packages.  I also
added a --release option which moves the packages into the release
directory after downloading them.  Without this option the script will
only download to a staging area and stop.

If the email contains a string like:

Please remove 5.42-1 then that package will be removed and temporarily
archived to a tar file in /tmp.

So, for any existing packages, this should be as simple as just piping
email via:

|ssh sourceware.org get-cygwin-package

If there are any problems please report them here.

cgf


Re: get-cygwin-package - for anyone with upload privileges

2012-10-17 Thread Christopher Faylor
On Wed, Oct 17, 2012 at 06:46:00PM -0400, Christopher Faylor wrote:
As I mentioned in another post, I've hacked at the get-cygwin-package
script so that it should properly handle -debuginfo packages.  I also
added a --release option which moves the packages into the release
directory after downloading them.  Without this option the script will
only download to a staging area and stop.

If the email contains a string like:

Please remove 5.42-1 then that package will be removed and temporarily
archived to a tar file in /tmp.

So, for any existing packages, this should be as simple as just piping
email via:

|ssh sourceware.org get-cygwin-package

If there are any problems please report them here.

Sorry, that should be:

|ssh sourceware.org --release get-cygwin-package

cgf


Re: get-cygwin-package - for anyone with upload privileges

2012-10-17 Thread Warren Young

On 10/17/2012 4:46 PM, Christopher Faylor wrote:

I've hacked at the get-cygwin-package script


I take it this script is run by hand when a human has decided to do 
something about an RFU message?


If so, is there a plan or even a wish for getting to a point where a 
script can run on sourceware.org (?) and just monitor the list for RFU 
messages and handle them all automatically?



If the email contains a string like:

Please remove 5.42-1 then that package will be removed and temporarily
archived to a tar file in /tmp.


Every natural language processor I've used -- including very well funded 
ones like Siri -- require that the human conform to the limitations of 
the computer's natural language parser.  They give the illusion of 
flexibility while they generate frustration by refusing to accept text 
that looks similar to forms it does support.


I think it's great that you've gone and done this, Chris.  You can 
expect people to keep posting RFUs by the copy-paste-edit-send method, 
and the current forms are well understood.


My point is that if you ever find yourself wanting to extend the natural 
language parser to cover another new case, instead of spending that time 
writing more natural language parsing code or a nastygram to the person 
who wrote the RFU, stop and consider.  It might be better to spend that 
time inventing a more robust RFU message format that a script can parse 
with 100% confidence: if it parses, it's legal.


For example, you can repurpose your setup.ini parser:

[cygrfu]
root: http://etr-usa.com/cygwin/
packages: ctags
version: 5.8-2

That, coupled with info parsed from the package's existing setup.hint 
files or the setup.ini file would tell the script everything it needs to 
know to do the right thing.  This formal RFU is saying that the script 
should expect a sourceware.org like release tree at the root path given, 
and that the package names found there differ only in the version number.


The packages: line allows for single logical packages that are 
actually composed of several separate packages:


packages: sqlite3, libsqlite3_0, libsqlite3-devel

This is where parsing setup.ini comes in: it looks for [libsqlite3_0] to 
learn that it should expect to find it in sqlite3/libsqlite3_0 under 
the given root, not in sqlite3.


The formal RFU request doesn't mention -src and -debuginfo because the 
tool already has the information to handle them implicitly.


Then you can add tags for exceptional conditions:

[cygrfu]

prev: 5.7-1

That would mean remove 5.8-1 and leave the earlier 5.7-1 as prev. 
That as opposed to its default action, which would be to remove 5.7-1 
and leave 5.8-1 as prev.


The point of all this would be to get to a point where the script can 
monitor the mailing list and be expected to DTRT 100% of the time.


The incentive to you, Chris, is that it potentially gets the human out 
of the RFU loop entirely.  This should defeat the SHTDI argument, too. 
The Someone is one of those with upload privileges who wants a computer 
to put them out of a job. :)


The incentive to the package maintainers is that if they use this 
format, they know the script will pick up their packages in computer 
time, instead of waiting for a human to process an informal RFU.  A 
package maintainer might therefore have some hope of getting a fix out 
to the mirrors within 24 hours of sending the RFU.


You might consider whether to add an email whitelist to this, which 
controls whether the script will pay attention to formal RFUs.  Newbie 
maintainers or those the uploaders don't entirely trust for whatever 
reason won't be on the list.


I think that's probably a sign they shouldn't have maintainership at 
all, though.  The more independence you give the package maintainers, 
the fewer synchronization points you have, which is good for speed, as 
any experienced computer programmer knows.


That said, a whitelist containing all package maintainers' known emails 
is probably still a good thing.  You wouldn't want the script accepting 
formal RFU requests from random people.


Re: get-cygwin-package - for anyone with upload privileges

2012-10-17 Thread Christopher Faylor
On Wed, Oct 17, 2012 at 08:12:16PM -0600, Warren Young wrote:
On 10/17/2012 4:46 PM, Christopher Faylor wrote:
 I've hacked at the get-cygwin-package script

I take it this script is run by hand when a human has decided to do 
something about an RFU message?

If so, is there a plan or even a wish for getting to a point where a 
script can run on sourceware.org (?) and just monitor the list for RFU 
messages and handle them all automatically?

I've been thinking about this problem for many years.  I have lots of
ideas on how to make this automatic.  I have even partially implemented
a more robust version of this which relied on package maintainers
logging in via ssh into a chroot jail where packages are uploaded to a
staging area which ran upset on packages before copying them to the
final release area.  I wasn't really satisified with it though, partly
because I thought it would be a maintenance headache and partly because
I was paranoid about security.

Someday, possibly, I'll complete something like that and make the whole
RFU thing obsolete.

In the meantime, this is only intended as a useful utility for people
who handle RFUs.

cgf


Re: get-cygwin-package - for anyone with upload privileges

2012-10-17 Thread Christopher Faylor
On Wed, Oct 17, 2012 at 06:53:57PM -0400, Christopher Faylor wrote:
On Wed, Oct 17, 2012 at 06:46:00PM -0400, Christopher Faylor wrote:
As I mentioned in another post, I've hacked at the get-cygwin-package
script so that it should properly handle -debuginfo packages.  I also
added a --release option which moves the packages into the release
directory after downloading them.  Without this option the script will
only download to a staging area and stop.

If the email contains a string like:

Please remove 5.42-1 then that package will be removed and temporarily
archived to a tar file in /tmp.

So, for any existing packages, this should be as simple as just piping
email via:

|ssh sourceware.org get-cygwin-package

If there are any problems please report them here.

Sorry, that should be:

|ssh sourceware.org --release get-cygwin-package

One more correction.  I thought everyone who had login privileges on
sourceware.org had /sourceware/infra/bin in their path but that's
apparently not the case.  So amend that to:

|ssh sourceware.org --release /sourceware/infra/bin/get-cygwin-package

That's what I'll be doing from mutt.  I'm sure that this isn't anywhere
near that easy from most GUI clients so you might have to save the
file first.

Again, these messages are only for the handful of people who have login
capabilities on sourceware.org.  Everyone else can safely ignore them.

cgf