summaryrefslogtreecommitdiff
path: root/lua_scripts/create_argvmods_usr_bin_rules.lua
blob: d617a5eb8f3e3d326cbe60e8bd557c43bd8fcc63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
-- Copyright (c) 2009 Nokia Corporation.
-- Author: Lauri T. Aarnio
--
-- Licensed under MIT license

-- This script is executed after a new SB2 session has been created,
-- to create mapping rules for toolchain components:
-- For example, /usr/bin/gcc will be mapped to the toolchain. These rules
-- are used for other filesystem operations than exec*
-- (for example, when the shell is looking for a program, it must be
-- possible to stat() the destination)
--

gcc_rule_file_path = session_dir .. "/gcc-conf.lua"

default_rule = os.getenv("SBOX_ARGVMODS_USR_BIN_DEFAULT_RULE")

function argvmods_to_mapping_rules()
	local n
	print("argvmods_rules_for_usr_bin = {")
	print(" rules = {")
	for n in pairs(argvmods) do
		local rule = argvmods[n]
		-- print("-- rule ", n, " new_filename=", rule.new_filename)
		local k
		for k=1,table.maxn(rule.path_prefixes) do
			if rule.path_prefixes[k] == "/usr/bin/" and
			   rule.new_filename ~= nil then
				-- this rule maps "n" from /usr/bin to
				-- another file
				if sb.path_exists(rule.new_filename) then
					print("  {path=\"/usr/bin/"..n.."\",")
					print("   replace_by=\"" ..
						rule.new_filename.."\"},")
				else
					print("  -- WARNING: " ..
						rule.new_filename ..
						" does not exist")
				end
			end
		end
	end
	if (default_rule ~= nil) then
		print("  -- default:")
		print("  {prefix=\"/usr/bin\",", default_rule, "}")
	end
	print(" }")
	print("}")
end

print("-- Argvmods-to-mapping-rules converter:")
print("-- Automatically generated mapping rules. Do not modify:")

do_file(session_dir .. "/lua_scripts/argvenvp.lua")
argvmods_to_mapping_rules()

print("-- End of rules created by argvmods-to-mapping-rules converter.")