[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

freshmeat.php: a sf.php-like script for watch files



Hello everybody,

During the last few days I've been submitting patches for some of the reports 
filled in my MBF of watch files. 
While fixing watch files I've encountered some upstream homepages are moved to 
an other server and other similar situations which prevent the watch files 
from doing their job.

In some of the watch files I found the project at sourceforge, so I made them 
use the sf redirector.
But in other cases I only found the project at freshmeat. Because of 
freshmeat's design it is not possible to directly use it in the watch files, 
that's how I came up with freshmeat.php[1].

I tried to make the freshmeat script (not really a redirector) very similar to 
sf's. So this is how it would be used (currently available here[2] to see it 
in action, but be warned I don't plan to keep it there) if my proposed 
changes[3] to uscan are also integrated:

http://debian.freshmeat.net/projectName/branchID/projectName-(.*)\.tgz

Example:

http://debian.freshmeat.net/gringotts/71681/gringotts-(.*)\.tgz

Some notes on the script (cons):

* It downloads an xml file on every request (except when the final file is 
requested)
* It is unable to report older versions (freshmeat-side, I can't do anything 
about it)
* Branch id is required (otherwise a more extended and not so funny watch file 
is required)
* Current regexes for input checks may be too strict (/^[a-z0-9\-\_\.]*$/Di)

Some notes on the script (pros):

* Finally watch information can be retrieved from freshmeat :)
* Generated file names are consistent

Possible solutions to the cons:

* XML download: the script is able to use a caching/mirroring server by 
modifying the value of $baseUrl to something like 
http://cache.server.tld/freshmeat.net/projects-xml
* Old versions: do we really need this? anyway: when the script fetches the 
xml file and parses it, the reported version could be stored, so future calls 
to the script will make it also report those old *known* versions.
* Rest: it can all be tweaked (except for the branch id stuff)

When should it be used:
* Upstream's homepage is likely to change (e.g. already did in the past)
* It doesn't have a sf.net/berlios/similar project account OR it doesn't 
release the files there (already seen that)
* Upstream is known to keep the freshmeat project updated.

Quoting part of the conversation from #debian-qa after announcing the creation 
of freshmeat.php to answer some possible questions:

<Rhonda> Atomo64: Some doevs move their homepage. So? Maintainers are meant to 
stay in contact with upstream and know about those moves. Redirecting it 
through freshmeat (which, I have to repeat myself, is way too often totally 
neglected and lacking behind *immensly*) doesn't help much, is the wrong way 
to fix that problem, and gives a wrong impression, IMNSHO
<Atomo64> Rhonda: yes, but I think nobody wants a package to be rebuilt just 
because a change in the watch file. But if the watch file isn't updated 
accordingly then it will fail to do its job
<Rhonda> Atomo64: What's the problem with updating the watchfile in the 
package's VCS?
<Atomo64> Rhonda: watch files aren't retrieved from VCS'
<Rhonda> Atomo64: Erm, why should they be retreived from VCS? Aren't people 
doing uscan in their own local checkouts?
<Rhonda> Again, you have still totally ignored that freshmeat projects are 
more then regularly hopelessly outdated and lacking behind.
<Atomo64> Rhonda: that's not the rule for every project
<Atomo64> and I've seen it, some projects even have their sf.net project but 
they don't upload any package there, and all is tracked at freshmeat

Some notes regarding Rhonda's last message:
It _is_ my _intention_ to fill bug reports when there's a new upstream version 
available.
I'd like to stress the point that it is only my _intention_ so I'll post about 
that on -devel and here (-qa) when the right time comes to let anyone share 
their opinion and based on that take the final decision.
Please don't comment about this topic yet. 

Now, as a reply to Rhonda:
I don't believe watch files are stored under debian/ just to wait for some 
maintainer (or the current maintainer) to download the source and check if 
there's an upstream version available.
And it isn't the case, that information is displayed on 
qa.debian.org/developer.php and dehs.alioth.debian.org and both report the 
results of the watch file of the source package in the archive, never from 
the VCS nor a local watch file. The conclusion to this is that the watch file 
on the archive needs to work as expected, and if upstream's homepage 
is 'regularly' moved from one server to an other then it becomes a perfect 
candidate to use the freshmeat.php script.
There might also be some packages which may benefit from this script when 
upstream's tarball doesn't contain the version number/identifier. Since the 
freshmeat script generates the file names based on the project name and the 
project version, it is possible to use it for such cases.


I think this is it. Any kind of feedback is very welcomed :-)

[1] see the attached freshmeat.php file
[2] http://deb.atomo64.puffinhost.com/freshmeat.php/
[3] see the attached uscan.patch file


Kind regards,
Raphael Geissert
-- 
Atomo64 - Raphael

Please avoid sending me Word, PowerPoint or Excel attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html

Attachment: freshmeat.php
Description: application/php

Index: uscan.pl
===================================================================
--- uscan.pl	(revision 841)
+++ uscan.pl	(working copy)
@@ -745,6 +745,8 @@
 
 	# Handle sf.net addresses specially
 	$base =~ s%^http://sf\.net/%http://qa.debian.org/watch/sf.php/%;
+	# Handle debian.freshmeat.net addresses specially
+	$base =~ s%^http://debian\.freshmeat\.net/%http://qa.debian.org/watch/freshmeat.php/%;
 	if ($base =~ m%^(\w+://[^/]+)%) {
 	    $site = $1;
 	} else {

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: