diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-04-13 14:54:44 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-04-13 14:54:44 +0000 |
commit | 93ada374bc97e413da72f4ab4026246ca5398dfe (patch) | |
tree | a4a1ad052489e4f882b36432d86cab868e979e67 /cmp-apks-iso | |
parent | 236620ca8d62618161e3c255cf008bdee30960d0 (diff) | |
download | abuild-93ada374bc97e413da72f4ab4026246ca5398dfe.tar.gz abuild-93ada374bc97e413da72f4ab4026246ca5398dfe.tar.bz2 abuild-93ada374bc97e413da72f4ab4026246ca5398dfe.tar.xz abuild-93ada374bc97e413da72f4ab4026246ca5398dfe.zip |
added utility to compare packages versions on iso images
Diffstat (limited to 'cmp-apks-iso')
-rwxr-xr-x | cmp-apks-iso | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cmp-apks-iso b/cmp-apks-iso new file mode 100755 index 0000000..2c7951f --- /dev/null +++ b/cmp-apks-iso @@ -0,0 +1,80 @@ +#!/usr/bin/env lua + +-- script to compare the packages versions in 2 iso images +-- usage: compare-apks + +maxlen = 0 + +function read_package_list(file) + local a = {} + local h +-- h = io.popen("tar -O -zxf ".. file.." -- apks/INDEX.md5.gz | gunzip -c | awk '{ print $2}'") + + h = io.popen("isoinfo -R -f -i "..file.." | grep '.apk$' | sed 's:.*/::'") + for line in h:lines() do + p, v = string.match(line, "^(.+)-(%d.*).apk") + a[p] = v + if maxlen < #p + #v + 2 then + maxlen = #p + #v + 2 + end + end + h:close() + return a +end + +-- print all packages that exist in a1 but not in a2 +function missing_packages(a1, a2) + local ret = {} + local p,v + for p,v in pairs(a1) do + if a2[p] == nil then + table.insert(ret, p.."-"..v) + end + end + table.sort(ret) + return ret +end + +function unexpand_tabs(s, tab) + tab = tab or 8 + local pat = string.rep(".", tab) + s = string.gsub(s, pat, "%0\1") + s = string.gsub(s, " +\1", "\t") + s = string.gsub(s, "\1", "") + return s +end + +function upgraded_packages(a1, a2) + local p,v, tmp + local a = {} + for p,v in pairs(a2) do + if a1[p] and a1[p] ~= v then + tmp = unexpand_tabs(string.format("%-"..tostring(maxlen).."s(%s)", + p.."-"..v, a1[p])) + table.insert(a, tmp) + end + end + table.sort(a) + return a +end + +apks1 = read_package_list(arg[1]) +apks2 = read_package_list(arg[2]) + +print("Removed packages:") +for dummy,line in ipairs(missing_packages(apks1, apks2)) do + print(line) +end +print("\n") + +print("New pacakges:") +for dummy,line in ipairs(missing_packages(apks2, apks1)) do + print(line) +end +print("\n") + +print("Upgraded/downgraded packages (from version):") +for dummy,line in ipairs(upgraded_packages(apks1, apks2)) do + print(line) +end + |