summaryrefslogtreecommitdiffstats
path: root/scripts/dl_cleanup.py
diff options
context:
space:
mode:
authormb <mb@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-18 19:19:34 +0000
committermb <mb@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-18 19:19:34 +0000
commit3a333a2f4cfbfa13a21776a0aeda9567f381fc8a (patch)
tree0a89c1f0543084a22fccd010521e0c38711b8ae2 /scripts/dl_cleanup.py
parent659f65623734f0b54be8153672c978bea1eb94fc (diff)
dl_cleanup: Add support for GIT-SHASUM
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23084 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts/dl_cleanup.py')
-rwxr-xr-xscripts/dl_cleanup.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/scripts/dl_cleanup.py b/scripts/dl_cleanup.py
index 67ccbda91..81c69f7aa 100755
--- a/scripts/dl_cleanup.py
+++ b/scripts/dl_cleanup.py
@@ -15,7 +15,7 @@ import getopt
opt_dryrun = False
-def parseVer_1234(match):
+def parseVer_1234(match, filepath):
progname = match.group(1)
progversion = (int(match.group(2)) << 64) |\
(int(match.group(3)) << 48) |\
@@ -23,7 +23,7 @@ def parseVer_1234(match):
(int(match.group(5)) << 16)
return (progname, progversion)
-def parseVer_123(match):
+def parseVer_123(match, filepath):
progname = match.group(1)
try:
patchlevel = match.group(5)
@@ -39,7 +39,7 @@ def parseVer_123(match):
patchlevel
return (progname, progversion)
-def parseVer_12(match):
+def parseVer_12(match, filepath):
progname = match.group(1)
try:
patchlevel = match.group(4)
@@ -54,18 +54,24 @@ def parseVer_12(match):
patchlevel
return (progname, progversion)
-def parseVer_r(match):
+def parseVer_r(match, filepath):
progname = match.group(1)
progversion = (int(match.group(2)) << 64)
return (progname, progversion)
-def parseVer_ymd(match):
+def parseVer_ymd(match, filepath):
progname = match.group(1)
progversion = (int(match.group(2)) << 64) |\
(int(match.group(3)) << 48) |\
(int(match.group(4)) << 32)
return (progname, progversion)
+def parseVer_GIT(match, filepath):
+ progname = match.group(1)
+ st = os.stat(filepath)
+ progversion = int(st.st_mtime) << 64
+ return (progname, progversion)
+
extensions = (
".tar.gz",
".tar.bz2",
@@ -77,6 +83,7 @@ extensions = (
)
versionRegex = (
+ (re.compile(r"(.+)[-_]([0-9a-fA-F]{40,40})"), parseVer_GIT), # xxx-GIT_SHASUM
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)\.(\d+)"), parseVer_1234), # xxx-1.2.3.4
(re.compile(r"(.+)[-_](\d\d\d\d)-?(\d\d)-?(\d\d)"), parseVer_ymd), # xxx-YYYY-MM-DD
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)(\w?)"), parseVer_123), # xxx-1.2.3a
@@ -102,10 +109,12 @@ class Entry:
self.directory = directory
self.filename = filename
self.progname = ""
+ self.fileext = ""
for ext in extensions:
if filename.endswith(ext):
filename = filename[0:0-len(ext)]
+ self.fileext = ext
break
else:
print self.filename, "has an unknown file-extension"
@@ -113,7 +122,8 @@ class Entry:
for (regex, parseVersion) in versionRegex:
match = regex.match(filename)
if match:
- (self.progname, self.version) = parseVersion(match)
+ (self.progname, self.version) = parseVersion(
+ match, directory + "/" + filename + self.fileext)
break
else:
print self.filename, "has an unknown version pattern"