X-Git-Url: http://git.hcoop.net/hcoop/portal.git/blobdiff_plain/93f77ca7c0fbfefe5eaf130c360cd1d112f40d52..b6392a52a07ca163e5a1ee1b46d62a48ef395829:/aptquery.sml diff --git a/aptquery.sml b/aptquery.sml index bf0ec6a..d7fc8cc 100644 --- a/aptquery.sml +++ b/aptquery.sml @@ -3,10 +3,10 @@ struct type info = { name : string, section : string, descr : string, installed : bool } -fun validName s = CharVector.all (fn ch => Char.isAlphaNum ch orelse ch = #"_" orelse ch = #"-") s +fun validName s = CharVector.all (fn ch => Char.isAlphaNum ch orelse ch = #"_" orelse ch = #"-" orelse ch = #".") s andalso (size s > 0 andalso String.sub (s, 0) <> #"-") -fun query name = +fun query {node, pkg = name} = let val _ = if validName name then @@ -14,7 +14,7 @@ fun query name = else raise Fail "Invalid package name" - val proc = Unix.execute ("/usr/bin/apt-cache", ["show", name]) + val proc = Unix.executeInEnv ("/usr/local/bin/domtool-admin", ["package-exists", Init.nodeName node, name], ["DOMTOOL_USER=hcoop"]) val inf = Unix.textInstreamOf proc fun loop (section, descr) = @@ -33,7 +33,7 @@ fun query name = let val _ = Unix.reap proc - val installed = OS.Process.isSuccess (OS.Process.system ("/usr/bin/dpkg -p " ^ name ^ " >/dev/null 2>/dev/null")) + val installed = OS.Process.isSuccess (OS.Process.system ("DOMTOOL_USER=hcoop /usr/local/bin/domtool-admin package " ^ Init.nodeName node ^ " " ^ name ^ " >/dev/null 2>/dev/null")) in SOME {name = name, section = section, descr = descr, installed = installed} end