From 93ada374bc97e413da72f4ab4026246ca5398dfe Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 13 Apr 2009 14:54:44 +0000 Subject: added utility to compare packages versions on iso images --- cmp-apks-iso | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 cmp-apks-iso (limited to 'cmp-apks-iso') 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 + -- cgit v1.2.3-60-g2f50