summaryrefslogtreecommitdiff
path: root/ap.in
diff options
context:
space:
mode:
Diffstat (limited to 'ap.in')
-rwxr-xr-xap.in51
1 files changed, 51 insertions, 0 deletions
diff --git a/ap.in b/ap.in
index 4c9d510..e5ce0e7 100755
--- a/ap.in
+++ b/ap.in
@@ -5,6 +5,19 @@ require("lfs")
local db
+local function build_is_outdated(pkg)
+ local apk_attr = lfs.attributes(aports.get_apk_file_path(pkg))
+ local apkbuild_attr = lfs.attributes(pkg.dir.."/APKBUILD")
+ if apk_attr == nil then
+ return true
+ end
+ return os.difftime(apk_attr.modification, apkbuild_attr.modification) < 0
+end
+
+local function build_is_missing(pkg)
+ return lfs.attributes(aports.get_apk_file_path(pkg)) == nil
+end
+
-- subcommands -----------------------
subcmd = {}
subcmd.revdep = {
@@ -83,6 +96,40 @@ subcmd.sources = {
end
}
+subcmd["rebuild-list"] = {
+ desc = "List packages that can/should be rebuilt",
+ usage = "",
+ run = function()
+ local outdated = {}
+ db:foreach(function(k)
+ db:foreach_pkg(k, function(_, p)
+ if build_is_outdated(p) then
+ table.insert(outdated, p.pkgname)
+ end
+ end)
+ end)
+ -- print build dirs in build sort order
+ subcmd.builddirs.run(outdated)
+ end
+}
+
+subcmd["build-list"] = {
+ desc = "List packages that is not built",
+ usage = "",
+ run = function()
+ local missing = {}
+ db:foreach(function(k)
+ db:foreach_pkg(k, function(_, p)
+ if build_is_missing(p) then
+ table.insert(missing, p.pkgname)
+ end
+ end)
+ end)
+ -- print build dirs in build sort order
+ subcmd.builddirs.run(missing)
+ end
+}
+
function print_usage()
io.write("usage: ap -d <DIR> SUBCOMMAND [options]\n\nSubcommands are:\n")
local k,v
@@ -130,7 +177,11 @@ end
if subcmd[cmd] and type(subcmd[cmd].run) == "function" then
db = aports.new(repodirs)
+ loadtime = os.clock()
subcmd[cmd].run(opts)
+ runtime = os.clock() - loadtime
+-- io.stderr:write("db load time = "..tostring(loadtime).."\n")
+-- io.stderr:write("cmd run time = "..tostring(runtime).."\n")
else
io.stderr:write(cmd..": invalid subcommand\n")
end