On 05/03/2013 09:54:42 PM, Bruce Dubbs wrote: > I'm going to write a program to automatically identify out of date > packages for LFS. Has anyone already done such a beast? > > As I review the packages, it seems that the only constant is > inconsistency. Trying to parse versions is quite package specific. > Packages may have versions with a single number (systemd, kbd, less), > two numbers (vim, psmisc, etc), three numbers (most), and even four > numbers (shadow). In one case, the version has a letter (tzdata).
For my aboriginal linux project http://landley.net/aboriginal/about.html I have the following horrible regex: # Given a filename.tar.ext, return the version number. getversion() { echo "$1" | sed -e 's/.*-\(\([0-9\.]\)*\([_-]rc\)*\(-pre\)*\([0-9][a-zA-Z]\)*\)*\(\.tar\..z2*\)$/'"$2"'\1/' } > Some packages change the version scheme depending on release > (util-linux-2.22.1 vs util-linux-2.23, gcc, linux kernel, etc. ) > > In addition, some directories that contain the packages vary with > version (e.g. v2.23/util-linux..., check/0.9.10/..., gmp-5.1.1/..., > 1.0.6/bzip..., mpfr-3.1.2/... ). Some sites don't allow a directory > of > the parent location so other means of determining the most recent > version are needed (e.g. bzip2). I do a variant of: mkdir tmpdir cd tmpdir tar xvjf /path/to/tarball mv * ~/newlocation/packagename It's in the extract_package function of: http://landley.net/hg/aboriginal/file/1599/sources/download_functions.sh#l71 > Writing a script to do all this is not particularly hard, but just > long > and tedious. There are some common elements in most of the packages > from ftp.gnu.org. > > Has anyone else looked at this? I've done it, and debugged it over a period of several years. :) My automatic "build linux from scratch under the resulting system" package is still on 6.8 (I've been busy with other things), and I had to adjust four package names in order for the automated machinery to be able to extract the tarballs out of the big tarball: http://landley.net/hg/control-images/file/34/images/lfs-bootstrap/download.sh#l32 Basically the limitation is that my regex thinks that the filename ends with "-" (not necessarily the _first_ -, but there's gotta be one between name and version), and some things (like squashfs tools) don't do that. When i'm downloading an individual tarball I can put a rewrite rule in the download request, ala: http://landley.net/hg/aboriginal/file/1599/download.sh#l109 I've been meaning to fix that up and switch to 7.3, but... day job and so much else to do... Rob -- http://linuxfromscratch.org/mailman/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page