summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-11-28 23:53:47 +0800
committerruki <[email protected]>2018-11-28 17:22:44 +0800
commit7b10ce1303e6081762498cfdef0870cba732ffd0 (patch)
tree04d7efcd9cd4ada02506ef09ae54210fa5041e86
parent6b51f7f0a60dbe3553273fa8a450f8349a51e8e5 (diff)
cleanup tmp files
-rw-r--r--CHANGELOG.md2
-rw-r--r--xmake/actions/build/cleaner.lua78
-rw-r--r--xmake/actions/build/main.lua4
3 files changed, 84 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3805dc1d8..e3d81c603 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,7 @@
* [#249](https://github.com/tboox/xmake/pull/249): revise progress formatting to space-leading three digit percentages
* [#247](https://github.com/tboox/xmake/pull/247): Add `-D` and `--diagnosis` instead of `--backtrace`
* [#259](https://github.com/tboox/xmake/issues/259): Improve on_build, on_build_file and on_xxx for target and rule
+* [#269](https://github.com/tboox/xmake/issues/269): Clean up the temporary files at last 30 days
## v2.2.2
@@ -518,6 +519,7 @@
* [#250](https://github.com/tboox/xmake/issues/250): 添加`xmake f --vs_sdkver=10.0.15063.0`去改变windows sdk版本
* 添加`lib.luajit.ffi`和`lib.luajit.jit`扩展模块
* [#263](https://github.com/tboox/xmake/issues/263): 添加object目标类型,仅仅用于编译生成object对象文件
+* [#269](https://github.com/tboox/xmake/issues/269): 每天第一次构建时候后台进程自动清理最近30天的临时文件
### 改进
diff --git a/xmake/actions/build/cleaner.lua b/xmake/actions/build/cleaner.lua
new file mode 100644
index 000000000..6648a2d02
--- /dev/null
+++ b/xmake/actions/build/cleaner.lua
@@ -0,0 +1,78 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2018, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file cleaner.lua
+--
+
+-- imports
+import("core.base.option")
+import("core.project.config")
+import("core.platform.platform")
+import("core.platform.environment")
+
+-- clean up temporary files once a day
+function cleanup()
+
+ -- has been cleaned up today?
+ local markfile = path.join(os.tmpdir(), "cleanup", os.date("%y%m%d") .. ".mark")
+ if os.isfile(markfile) then
+ return
+ end
+
+ -- mark as posted first, avoid to post it repeatly
+ io.writefile(markfile, "ok")
+
+ -- init argument list
+ local argv = {"lua", path.join(os.scriptdir(), "cleaner.lua")}
+ for _, name in ipairs({"root", "file", "project", "diagnosis", "verbose", "quiet", "yes"}) do
+ local value = option.get(name)
+ if type(value) == "string" then
+ table.insert(argv, "--" .. name .. "=" .. value)
+ elseif value then
+ table.insert(argv, "--" .. name)
+ end
+ end
+
+ -- try to post it in background
+ try
+ {
+ function ()
+ local proc = process.openv("xmake", argv, path.join(os.tmpdir(), "cleaner.log"))
+ if proc ~= nil then
+ process.close(proc)
+ end
+ end
+ }
+end
+
+-- the main function
+function main()
+
+ -- clean up the temporary files at last 30 days
+ local parentdir = path.directory(os.tmpdir())
+ for day = 1, 30 do
+ local tmpdir = path.join(parentdir, os.date("%y%m%d", os.time() - day * 24 * 3600))
+ if os.isdir(tmpdir) then
+ print("cleanup %s ..", tmpdir)
+ os.tryrm(tmpdir)
+ end
+ end
+end
diff --git a/xmake/actions/build/main.lua b/xmake/actions/build/main.lua
index b0d530ef3..b1b64ac50 100644
--- a/xmake/actions/build/main.lua
+++ b/xmake/actions/build/main.lua
@@ -29,6 +29,7 @@ import("core.project.config")
import("core.project.project")
import("core.platform.platform")
import("build")
+import("cleaner")
import("trybuild")
import("statistics")
@@ -52,6 +53,9 @@ function main()
-- post statistics
statistics.post()
+ -- clean up temporary files once a day
+ cleaner.cleanup()
+
-- build it
try
{