From 62fe33efad9c33dca892a6ef1fa1949ef17e3acd Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Mon, 15 Feb 2016 14:56:39 +0000 Subject: [PATCH] Improver error handling when executing shell commands in build scripts. --- build/scripts/Build.lua | 6 +++--- build/scripts/LLVM.lua | 10 +++++----- build/scripts/Utils.lua | 16 ++++++++++++---- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/build/scripts/Build.lua b/build/scripts/Build.lua index 8422f733..d336457d 100644 --- a/build/scripts/Build.lua +++ b/build/scripts/Build.lua @@ -22,7 +22,7 @@ function msbuild(sln, conf) cmd = cmd .. " /p:Configuration=" .. conf end - execute(cmd) + execute_or_die(cmd) end function ninja(dir, action) @@ -30,7 +30,7 @@ function ninja(dir, action) if action then cmd = cmd .. " " .. action end - return execute(cmd) + return execute_or_die(cmd) end function run_premake(file, action) @@ -40,7 +40,7 @@ function run_premake(file, action) end local cmd = string.format("%s --file=%s %s", _PREMAKE_COMMAND, file, action) - return execute(cmd) + return execute_or_die(cmd) end function build_cppsharp() diff --git a/build/scripts/LLVM.lua b/build/scripts/LLVM.lua index f1cac6c6..16b09cc0 100644 --- a/build/scripts/LLVM.lua +++ b/build/scripts/LLVM.lua @@ -68,12 +68,12 @@ function get_llvm_configuration_name(debug) end function extract_7z(archive, dest_dir) - return execute(string.format("7z x %s -o%s -y", archive, dest_dir), true) + return execute_or_die(string.format("7z x %s -o%s -y", archive, dest_dir), true) end function extract_tar_xz(archive, dest_dir) execute("mkdir -p " .. dest_dir, true) - return execute(string.format("tar xJf %s -C %s", archive, dest_dir), true) + return execute_or_die(string.format("tar xJf %s -C %s", archive, dest_dir), true) end local use_7zip = os.is("windows") @@ -180,7 +180,7 @@ function cmake(gen, conf, options) .. ' -DLLVM_TARGETS_TO_BUILD="X86"' .. ' -DCMAKE_BUILD_TYPE=' .. conf .. ' ..' .. ' ' .. options - execute(cmd) + execute_or_die(cmd) os.chdir(cwd) end @@ -262,9 +262,9 @@ function archive_llvm(dir) local cwd = os.getcwd() os.chdir(dir) if use_7zip then - execute("7z a " .. path.join("..", archive) .. " *") + execute_or_die("7z a " .. path.join("..", archive) .. " *") else - execute("tar cJf " .. path.join("..", archive) .. " *") + execute_or_die("tar cJf " .. path.join("..", archive) .. " *") end os.chdir(cwd) if is_vagrant() then diff --git a/build/scripts/Utils.lua b/build/scripts/Utils.lua index e20fbc00..760f2c9f 100644 --- a/build/scripts/Utils.lua +++ b/build/scripts/Utils.lua @@ -21,6 +21,14 @@ function execute(cmd, quiet) end end +function execute_or_die(cmd, quiet) + local res = execute(cmd, quiet) + if res > 0 then + error("Error executing shell command, aborting...") + end + return res +end + function sudo(cmd) return os.execute("sudo " .. cmd) end @@ -39,22 +47,22 @@ function git.clone(dir, url, target) if target ~= nil then cmd = cmd .. " " .. target end - return execute(cmd) + return execute_or_die(cmd) end function git.pull_rebase(dir) local cmd = "git -C " .. path.translate(dir, sep) .. " pull --rebase" - return execute(cmd) + return execute_or_die(cmd) end function git.reset_hard(dir, rev) local cmd = "git -C " .. path.translate(dir, sep) .. " reset --hard " .. rev - return execute(cmd) + return execute_or_die(cmd) end function git.checkout(dir, rev) local cmd = "git -C " .. path.translate(dir, sep) .. " checkout " .. rev - return execute(cmd) + return execute_or_die(cmd) end function git.rev_parse(dir, rev)