Gentoo Archives: gentoo-dev

From: Corentin Chary <corentin.chary@×××××.com>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] euscan proof of concept (like debian's uscan)
Date: Mon, 21 Mar 2011 08:24:42

I recently started working on a small gentoo utility named "euscan"
(for Ebuild Upstream Scan)
For those who don't know debian's uscan, it allows to scan upstream
for new versions. It's used by (example: ).
It's available at:

Currently, it uses two heuristics to find new versions, both based on
- Directory scanning: scan directories to find files with newer version
- Brute Force: generate new possible versions, and try to download files

Note that it also works when only a part of the version is available
in the url.

I think that it would be great to have these informations on and/or unofficial website.

We could also add the ability to browse packages by maintainer to help
them see if they have any outdated package.

I started this mostly to see if it was possible, and I don't know if
i'll have the time to continue to work on that project, but I think
gentoo really needs an automated way to detect outdated packages.
This could also be a 2011 GSOC project (finishing euscan, and adding a
web based interface to browse the results).


$ ./euscan PEAR-Validate-0.8.3
Package: dev-php/PEAR-Validate-0.8.3
Herd: php
Maintainer: none
Location: /usr/portage/dev-php/PEAR-Validate
 * Scanning:${PV}.tgz
 * Scanning:
 * Generating version from 0.8.3
 * Brute forcing:${PV}.tgz
 * Trying: ...               [ ok ]
 * Trying: ...               [ !! ]
 * Trying: ...               [ !! ]
 * Trying: ...              [ !! ]
 * Trying: ...               [ !! ]
New Upstream Version: 0.8.4

$ ./euscan icu4j-4.4.2
Package: dev-java/icu4j-4.4.2
Herd: java
Maintainer: none
Location: /usr/portage/dev-java/icu4j
 * Scanning:${PV}/icu4j-4_4_2-src.jar
 * Scanning:
New Upstream Version: 4.5.1
New Upstream Version: 4.5.2
New Upstream Version: 4.6
New Upstream Version: 4.6rc2
New Upstream Version: 4.7.1
New Upstream Version: 4.6.1

$ ./euscan IceE-1.3.0-r1
Package: dev-cpp/IceE-1.3.0-r1
Herd: no-herd
Maintainer: maintainer-needed@g.o
Description: The Internet Communications Engine (Ice) is a modern
object-oriented middleware with support for C++, .NET, Java, Python,
Ruby, and PHP
Location: /usr/portage/dev-cpp/IceE
 * Scanning:${0}.${1}//IceE-${PV}-linux.tar.gz
 * Scanning:
 * Generating version from 1.3.0
 * Brute forcing:${0}.${1}//IceE-${PV}-linux.tar.gz
 * Trying:
...      [ !! ]
 * Trying:
...      [ !! ]
 * Trying:
...      [ !! ]
 * Trying:
...      [ !! ]

Corentin Chary