Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
dde9c9c280 | |||
598d301284 | |||
520f97c7f6 | |||
e4b69d17f4 | |||
42be4afd0a | |||
1fa860e5b3 | |||
87a4106101 | |||
1ec07b9446 | |||
5995effd9e | |||
43c0ec2535 | |||
31fb9818ff | |||
83d7154254 | |||
55609b904c | |||
4beda0dd23 | |||
236f19bf36 | |||
fe75da7ef9 | |||
e1728a4d8d | |||
c6ea16d046 | |||
b645f087f3 | |||
6e69681480 | |||
14114158aa | |||
618825ac76 |
70
bin/lutin
70
bin/lutin
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -10,6 +11,7 @@
|
|||||||
# for path inspection:
|
# for path inspection:
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import copy
|
||||||
import lutin
|
import lutin
|
||||||
import lutin.debug as debug
|
import lutin.debug as debug
|
||||||
import lutin.arg as arguments
|
import lutin.arg as arguments
|
||||||
@@ -33,6 +35,7 @@ myArgs.add(arguments.ArgDefine("P", "pretty", desc="Print the debug has pretty d
|
|||||||
myArgs.add(arguments.ArgDefine("j", "jobs", haveParam=True, desc="Specifies the number of jobs (commands) to run simultaneously"))
|
myArgs.add(arguments.ArgDefine("j", "jobs", haveParam=True, desc="Specifies the number of jobs (commands) to run simultaneously"))
|
||||||
myArgs.add(arguments.ArgDefine("d", "depth", haveParam=True, desc="Depth of the search of sub element lutin_*.py (default=" + str(env.get_parse_depth()) + ")"))
|
myArgs.add(arguments.ArgDefine("d", "depth", haveParam=True, desc="Depth of the search of sub element lutin_*.py (default=" + str(env.get_parse_depth()) + ")"))
|
||||||
myArgs.add(arguments.ArgDefine("s", "force-strip", desc="Force the stripping of the compile elements"))
|
myArgs.add(arguments.ArgDefine("s", "force-strip", desc="Force the stripping of the compile elements"))
|
||||||
|
myArgs.add(arguments.ArgDefine("o", "force-optimisation", desc="Force optimisation of the build"))
|
||||||
myArgs.add(arguments.ArgDefine("w", "warning", desc="Store warning in a file build file"))
|
myArgs.add(arguments.ArgDefine("w", "warning", desc="Store warning in a file build file"))
|
||||||
|
|
||||||
myArgs.add_section("properties", "keep in the sequency of the cible")
|
myArgs.add_section("properties", "keep in the sequency of the cible")
|
||||||
@@ -152,6 +155,15 @@ def usage(full=False):
|
|||||||
print(" ex: " + sys.argv[0] + " all --target=Android all -t Windows -m debug all")
|
print(" ex: " + sys.argv[0] + " all --target=Android all -t Windows -m debug all")
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
|
def check_boolean(value):
|
||||||
|
if value == "" \
|
||||||
|
or value == "1" \
|
||||||
|
or value == "true" \
|
||||||
|
or value == "True" \
|
||||||
|
or value == True:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
# preparse the argument to get the verbose element for debug mode
|
# preparse the argument to get the verbose element for debug mode
|
||||||
def parseGenericArg(argument, active):
|
def parseGenericArg(argument, active):
|
||||||
debug.extreme_verbose("parse arg : " + argument.get_option_name() + " " + argument.get_arg() + " active=" + str(active))
|
debug.extreme_verbose("parse arg : " + argument.get_option_name() + " " + argument.get_arg() + " active=" + str(active))
|
||||||
@@ -199,48 +211,42 @@ def parseGenericArg(argument, active):
|
|||||||
return True
|
return True
|
||||||
elif argument.get_option_name() == "color":
|
elif argument.get_option_name() == "color":
|
||||||
if active==True:
|
if active==True:
|
||||||
if argument.get_arg() == "" \
|
if check_boolean(argument.get_arg()) == True:
|
||||||
or argument.get_arg() == "1" \
|
|
||||||
or argument.get_arg() == "true" \
|
|
||||||
or argument.get_arg() == "True" \
|
|
||||||
or argument.get_arg() == True:
|
|
||||||
debug.enable_color()
|
debug.enable_color()
|
||||||
else:
|
else:
|
||||||
debug.disable_color()
|
debug.disable_color()
|
||||||
return True
|
return True
|
||||||
elif argument.get_option_name() == "force-build":
|
elif argument.get_option_name() == "force-build":
|
||||||
if active==True:
|
if active==True:
|
||||||
|
if check_boolean(argument.get_arg()) == True:
|
||||||
env.set_force_mode(True)
|
env.set_force_mode(True)
|
||||||
|
else:
|
||||||
|
env.set_force_mode(False)
|
||||||
return True
|
return True
|
||||||
elif argument.get_option_name() == "pretty":
|
elif argument.get_option_name() == "pretty":
|
||||||
if active==True:
|
if active==True:
|
||||||
if argument.get_arg() == "" \
|
if check_boolean(argument.get_arg()) == True:
|
||||||
or argument.get_arg() == "1" \
|
|
||||||
or argument.get_arg() == "true" \
|
|
||||||
or argument.get_arg() == "True" \
|
|
||||||
or argument.get_arg() == True:
|
|
||||||
env.set_print_pretty_mode(True)
|
env.set_print_pretty_mode(True)
|
||||||
else:
|
else:
|
||||||
env.set_print_pretty_mode(False)
|
env.set_print_pretty_mode(False)
|
||||||
return True
|
return True
|
||||||
|
elif argument.get_option_name() == "force-optimisation":
|
||||||
|
if active==True:
|
||||||
|
if check_boolean(argument.get_arg()) == True:
|
||||||
|
env.set_force_optimisation(True)
|
||||||
|
else:
|
||||||
|
env.set_force_optimisation(False)
|
||||||
|
return True
|
||||||
elif argument.get_option_name() == "force-strip":
|
elif argument.get_option_name() == "force-strip":
|
||||||
if active==True:
|
if active==True:
|
||||||
if argument.get_arg() == "" \
|
if check_boolean(argument.get_arg()) == True:
|
||||||
or argument.get_arg() == "1" \
|
|
||||||
or argument.get_arg() == "true" \
|
|
||||||
or argument.get_arg() == "True" \
|
|
||||||
or argument.get_arg() == True:
|
|
||||||
env.set_force_strip_mode(True)
|
env.set_force_strip_mode(True)
|
||||||
else:
|
else:
|
||||||
env.set_force_strip_mode(False)
|
env.set_force_strip_mode(False)
|
||||||
return True
|
return True
|
||||||
elif argument.get_option_name() == "warning":
|
elif argument.get_option_name() == "warning":
|
||||||
if active==True:
|
if active==True:
|
||||||
if argument.get_arg() == "" \
|
if check_boolean(argument.get_arg()) == True:
|
||||||
or argument.get_arg() == "1" \
|
|
||||||
or argument.get_arg() == "true" \
|
|
||||||
or argument.get_arg() == "True" \
|
|
||||||
or argument.get_arg() == True:
|
|
||||||
env.set_warning_mode(True)
|
env.set_warning_mode(True)
|
||||||
else:
|
else:
|
||||||
env.set_warning_mode(False)
|
env.set_warning_mode(False)
|
||||||
@@ -356,14 +362,34 @@ for argument in localArgument:
|
|||||||
#remove previous target
|
#remove previous target
|
||||||
my_target = None
|
my_target = None
|
||||||
else:
|
else:
|
||||||
|
argument_value = argument.get_arg()
|
||||||
|
debug.debug("something request : '" + argument_value + "'")
|
||||||
if argument.get_option_name() != "":
|
if argument.get_option_name() != "":
|
||||||
debug.warning("Can not understand argument : '" + argument.get_option_name() + "'")
|
debug.warning("Can not understand argument : '" + argument.get_option_name() + "'")
|
||||||
usage()
|
usage()
|
||||||
|
break;
|
||||||
|
name2 = argument_value.replace("@", "?")
|
||||||
|
gettedElement = name2.split("?")
|
||||||
|
module_name = gettedElement[0]
|
||||||
|
action_list = gettedElement[1:]
|
||||||
|
if len(action_list) == 0:
|
||||||
|
action_list = "build"
|
||||||
|
debug.debug("requested: '" + module_name + "' ? actions:'" + str(action_list) + "'")
|
||||||
|
multiple_module_list = []
|
||||||
|
if module_name[-1] == "*":
|
||||||
|
base_name = module_name[:-1]
|
||||||
|
for mod in module.list_all_module():
|
||||||
|
if mod[:len(base_name)] == base_name:
|
||||||
|
debug.verbose("need do it for: " + mod);
|
||||||
|
multiple_module_list.append(mod)
|
||||||
else:
|
else:
|
||||||
|
multiple_module_list.append(module_name)
|
||||||
|
debug.debug("Will do: '" + str(multiple_module_list) + "' ? actions:'" + str(action_list) + "'")
|
||||||
|
for module_name in multiple_module_list:
|
||||||
#load the target if needed :
|
#load the target if needed :
|
||||||
if my_target == None:
|
if my_target == None:
|
||||||
my_target = target.load_target(targetName, config)
|
my_target = target.load_target(targetName, copy.deepcopy(config))
|
||||||
my_target.build(argument.get_arg())
|
my_target.build(module_name, actions=action_list)
|
||||||
actionDone=True
|
actionDone=True
|
||||||
|
|
||||||
# if no action done : we do "all" ...
|
# if no action done : we do "all" ...
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -70,8 +71,26 @@ def import_path_local(path, limit_sub_folder, exclude_path = [], base_name = "")
|
|||||||
# check if the file "lutin_parse_sub.py" is present ==> parse SubFolder (force and add +1 in the resursing
|
# check if the file "lutin_parse_sub.py" is present ==> parse SubFolder (force and add +1 in the resursing
|
||||||
if base_name + "ParseSubFolders.txt" in list_files:
|
if base_name + "ParseSubFolders.txt" in list_files:
|
||||||
debug.debug("find SubParser ... " + str(base_name + "ParseSubFolders.txt") + " " + path)
|
debug.debug("find SubParser ... " + str(base_name + "ParseSubFolders.txt") + " " + path)
|
||||||
|
data_file_sub = tools.file_read_data(os.path.join(path, base_name + "ParseSubFolders.txt"))
|
||||||
|
if data_file_sub == "":
|
||||||
|
debug.debug(" Empty file Load all subfolder in the worktree in '" + str(path) + "'")
|
||||||
need_parse_sub_folder = True
|
need_parse_sub_folder = True
|
||||||
rm_value = 0
|
rm_value = 0
|
||||||
|
else:
|
||||||
|
list_sub = data_file_sub.split("\n")
|
||||||
|
debug.debug(" Parse selected folders " + str(list_sub) + " no parse local folder directory")
|
||||||
|
need_parse_sub_folder = False
|
||||||
|
for folder in list_sub:
|
||||||
|
if folder == "" \
|
||||||
|
or folder == "/":
|
||||||
|
continue;
|
||||||
|
tmp_out = import_path_local(os.path.join(path, folder),
|
||||||
|
1,
|
||||||
|
exclude_path,
|
||||||
|
base_name)
|
||||||
|
# add all the elements:
|
||||||
|
for elem in tmp_out:
|
||||||
|
out.append(elem)
|
||||||
if need_parse_sub_folder == True:
|
if need_parse_sub_folder == True:
|
||||||
list_folders = filter_path(path, list_files)
|
list_folders = filter_path(path, list_files)
|
||||||
for folder in list_folders:
|
for folder in list_folders:
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
27
lutin/env.py
27
lutin/env.py
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -25,6 +26,19 @@ def get_force_mode():
|
|||||||
global force_mode
|
global force_mode
|
||||||
return force_mode
|
return force_mode
|
||||||
|
|
||||||
|
force_optimisation=False
|
||||||
|
|
||||||
|
def set_force_optimisation(val):
|
||||||
|
global force_optimisation
|
||||||
|
if val==1:
|
||||||
|
force_optimisation = 1
|
||||||
|
else:
|
||||||
|
force_optimisation = 0
|
||||||
|
|
||||||
|
def get_force_optimisation():
|
||||||
|
global force_optimisation
|
||||||
|
return force_optimisation
|
||||||
|
|
||||||
parse_depth = 9999999
|
parse_depth = 9999999
|
||||||
|
|
||||||
def set_parse_depth(val):
|
def set_parse_depth(val):
|
||||||
@@ -115,6 +129,19 @@ def print_pretty(my_string, force=False):
|
|||||||
"-classpath",
|
"-classpath",
|
||||||
"-sourcepath"
|
"-sourcepath"
|
||||||
]
|
]
|
||||||
|
elif end_with(cmdApplication, ["java"]) == True:
|
||||||
|
baseElementList = [
|
||||||
|
"-z",
|
||||||
|
"-f",
|
||||||
|
"-rf"
|
||||||
|
]
|
||||||
|
elif end_with(cmdApplication, ["jarsigner"]) == True:
|
||||||
|
baseElementList = [
|
||||||
|
"-sigalg",
|
||||||
|
"-digestalg",
|
||||||
|
"-storepass",
|
||||||
|
"-keypass"
|
||||||
|
]
|
||||||
elif end_with(cmdApplication, ["jar"]) == True:
|
elif end_with(cmdApplication, ["jar"]) == True:
|
||||||
baseElementList = [
|
baseElementList = [
|
||||||
"cf",
|
"cf",
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
129
lutin/module.py
129
lutin/module.py
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -9,6 +10,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import copy
|
||||||
import inspect
|
import inspect
|
||||||
import fnmatch
|
import fnmatch
|
||||||
# Local import
|
# Local import
|
||||||
@@ -42,6 +44,8 @@ class Module:
|
|||||||
self.type='LIBRARY'
|
self.type='LIBRARY'
|
||||||
# Name of the module
|
# Name of the module
|
||||||
self.name=module_name
|
self.name=module_name
|
||||||
|
# Tools list:
|
||||||
|
self.tools = []
|
||||||
# Dependency list:
|
# Dependency list:
|
||||||
self.depends = []
|
self.depends = []
|
||||||
# Dependency list (optionnal module):
|
# Dependency list (optionnal module):
|
||||||
@@ -101,7 +105,8 @@ class Module:
|
|||||||
"ANDROID_WALLPAPER_PROPERTIES" : [], # To create properties of the wallpaper (no use of EWOL display)
|
"ANDROID_WALLPAPER_PROPERTIES" : [], # To create properties of the wallpaper (no use of EWOL display)
|
||||||
"RIGHT" : [],
|
"RIGHT" : [],
|
||||||
"LICENSE" : "", # by default: no license
|
"LICENSE" : "", # by default: no license
|
||||||
"ADMOD_POSITION" : "top"
|
"ADMOD_POSITION" : "top",
|
||||||
|
"ANDROID_SIGN" : "no_file.jks"
|
||||||
}
|
}
|
||||||
self.package_prop_default = { "COMPAGNY_TYPE" : True,
|
self.package_prop_default = { "COMPAGNY_TYPE" : True,
|
||||||
"COMPAGNY_NAME" : True,
|
"COMPAGNY_NAME" : True,
|
||||||
@@ -120,7 +125,8 @@ class Module:
|
|||||||
"ANDROID_WALLPAPER_PROPERTIES" : True,
|
"ANDROID_WALLPAPER_PROPERTIES" : True,
|
||||||
"RIGHT" : True,
|
"RIGHT" : True,
|
||||||
"LICENSE" : True,
|
"LICENSE" : True,
|
||||||
"ADMOD_POSITION" : True
|
"ADMOD_POSITION" : True,
|
||||||
|
"ANDROID_SIGN" : True
|
||||||
}
|
}
|
||||||
self.sub_heritage_list = None
|
self.sub_heritage_list = None
|
||||||
|
|
||||||
@@ -234,12 +240,38 @@ class Module:
|
|||||||
if self.type == 'PREBUILD':
|
if self.type == 'PREBUILD':
|
||||||
debug.error("Can not generate gcov on prebuid system ... : '" + self.name + "'");
|
debug.error("Can not generate gcov on prebuid system ... : '" + self.name + "'");
|
||||||
return
|
return
|
||||||
|
# list of path that can apear in the output data :
|
||||||
|
gcov_path_file = []
|
||||||
|
gcov_path_file.append(target.get_build_path_include(self.name)) # for include (that is installed)
|
||||||
|
gcov_path_file.append(" " + target.get_build_path_include(self.name))
|
||||||
|
gcov_path_file.append(self.origin_path) # for sources.
|
||||||
|
gcov_path_file.append(" " + self.origin_path)
|
||||||
|
# squash header and src...
|
||||||
|
full_list_file = []
|
||||||
|
for elem in self.header:
|
||||||
|
debug.extreme_verbose("plop H : " +str(elem['src']))
|
||||||
|
full_list_file.append([self.name, elem['src']])
|
||||||
|
for elem in self.src:
|
||||||
|
debug.extreme_verbose("plop S : " +str(elem))
|
||||||
|
full_list_file.append([self.name, elem])
|
||||||
|
for mod_name in self.tools:
|
||||||
|
tool_module = load_module(target, mod_name)
|
||||||
|
if tool_module == None:
|
||||||
|
continue
|
||||||
|
for elem in tool_module.header:
|
||||||
|
debug.extreme_verbose("plop HH: " + ":" + str(elem['src']))
|
||||||
|
full_list_file.append([tool_module.name, elem['src']])
|
||||||
|
for elem in tool_module.src:
|
||||||
|
debug.extreme_verbose("plop SS: " + tool_module.name + ":" + str(elem))
|
||||||
|
full_list_file.append([tool_module.name, elem])
|
||||||
|
debug.extreme_verbose("plop F : " +str(self.extention_order_build))
|
||||||
# remove uncompilable elements:
|
# remove uncompilable elements:
|
||||||
list_file = tools.filter_extention(self.src, self.extention_order_build, True)
|
# TODO: list_file = tools.filter_extention(full_list_file, self.extention_order_build, True)
|
||||||
|
list_file = full_list_file;
|
||||||
global_list_file = ""
|
global_list_file = ""
|
||||||
for file in list_file:
|
for file in list_file:
|
||||||
debug.verbose(" gcov : " + self.name + " <== " + file);
|
debug.verbose(" gcov : " + self.name + " <== " + str(file));
|
||||||
file_dst = target.get_full_name_destination(self.name, self.origin_path, file, "o")
|
file_dst = target.get_full_name_destination(file[0], self.origin_path, file[1], "o")
|
||||||
global_list_file += file_dst + " "
|
global_list_file += file_dst + " "
|
||||||
cmd = "gcov"
|
cmd = "gcov"
|
||||||
# specify the version of gcov we need to use
|
# specify the version of gcov we need to use
|
||||||
@@ -261,39 +293,80 @@ class Module:
|
|||||||
executed_lines = 0
|
executed_lines = 0
|
||||||
executable_lines = 0
|
executable_lines = 0
|
||||||
for elem in ret:
|
for elem in ret:
|
||||||
|
debug.debug("line: " + elem)
|
||||||
if remove_next == True:
|
if remove_next == True:
|
||||||
remove_next = False
|
remove_next = False
|
||||||
|
debug.debug("--------------------------")
|
||||||
continue;
|
continue;
|
||||||
if elem[:10] == "Creating '" \
|
if elem[:10] == "Creating '" \
|
||||||
or elem[:10] == "Removing '":
|
or elem[:10] == "Removing '" \
|
||||||
|
or elem[:14] == "Suppression de" \
|
||||||
|
or elem[:11] == "Création de":
|
||||||
remove_next = True
|
remove_next = True
|
||||||
continue
|
continue
|
||||||
if elem[:6] == "File '" \
|
if elem[:6] in ["File '", "File «"] \
|
||||||
and self.origin_path != elem[6:len(self.origin_path)+6]:
|
or elem[:7] in ["File ' ", "File « "]:
|
||||||
|
path_finder = False
|
||||||
|
for path_base_finder in gcov_path_file:
|
||||||
|
if path_base_finder == elem[6:len(path_base_finder)+6]:
|
||||||
|
path_finder = True
|
||||||
|
last_file = elem[6+len(path_base_finder)+1:-1]
|
||||||
|
while last_file[-1] == " ":
|
||||||
|
last_file = last_file[:-1]
|
||||||
|
if path_finder == False:
|
||||||
remove_next = True
|
remove_next = True
|
||||||
|
debug.verbose(" REMOVE: '" + str(elem[6:len(self.origin_path)+1]) + "' not in " + str(gcov_path_file))
|
||||||
continue
|
continue
|
||||||
if elem[:6] == "File '":
|
|
||||||
last_file = elem[6+len(self.origin_path)+1:-1]
|
|
||||||
continue
|
continue
|
||||||
start_with = "Lines executed:"
|
if elem[:7] == "Aucune " \
|
||||||
if elem[:len(start_with)] != start_with:
|
or elem[:19] == "No executable lines":
|
||||||
|
debug.verbose(" Nothing to execute");
|
||||||
|
continue
|
||||||
|
start_with = ["Lines executed:", "Lignes exécutées:"]
|
||||||
|
find = False
|
||||||
|
for line_base in start_with:
|
||||||
|
if elem[:len(line_base)] == line_base:
|
||||||
|
find = True
|
||||||
|
elem = elem[len(line_base):]
|
||||||
|
break;
|
||||||
|
debug.verbose(" temp Value: " + str(elem))
|
||||||
|
if find == False:
|
||||||
debug.warning(" gcov ret : " + str(elem));
|
debug.warning(" gcov ret : " + str(elem));
|
||||||
debug.warning(" ==> does not start with : " + start_with);
|
debug.warning(" ==> does not start with : " + str(start_with));
|
||||||
debug.warning(" Parsing error");
|
debug.warning(" Parsing error");
|
||||||
continue
|
continue
|
||||||
out = elem[len(start_with):].split("% of ")
|
out = elem.split("% of ")
|
||||||
|
if len(out) != 2:
|
||||||
|
out = elem.split("% de ")
|
||||||
if len(out) != 2:
|
if len(out) != 2:
|
||||||
debug.warning(" gcov ret : " + str(elem));
|
debug.warning(" gcov ret : " + str(elem));
|
||||||
debug.warning(" Parsing error of '% of '");
|
debug.warning(" Parsing error of '% of '");
|
||||||
continue
|
continue
|
||||||
|
debug.verbose("property : " + str(out))
|
||||||
pourcent = float(out[0])
|
pourcent = float(out[0])
|
||||||
total_line_count = int(out[1])
|
total_line_count = int(out[1])
|
||||||
total_executed_line = int(float(total_line_count)*pourcent/100.0)
|
total_executed_line = int(float(total_line_count)*pourcent/100.0)
|
||||||
|
# check if in source or header:
|
||||||
|
in_source_file = False
|
||||||
|
debug.verbose(" ??> Check: " + str(last_file))
|
||||||
|
for elem_header in self.header:
|
||||||
|
debug.verbose(" ==> Check: " + str(elem_header['src']))
|
||||||
|
if elem_header['src'] == last_file:
|
||||||
|
in_source_file = True
|
||||||
|
for elem_src in self.src:
|
||||||
|
debug.verbose(" ==> Check: " + str(elem_src))
|
||||||
|
if elem_src == last_file:
|
||||||
|
in_source_file = True
|
||||||
|
if in_source_file == False:
|
||||||
|
debug.verbose(" ==> Remove not in source: " + str(out))
|
||||||
|
continue
|
||||||
useful_list.append([last_file, pourcent, total_executed_line, total_line_count])
|
useful_list.append([last_file, pourcent, total_executed_line, total_line_count])
|
||||||
executed_lines += total_executed_line
|
executed_lines += total_executed_line
|
||||||
executable_lines += total_line_count
|
executable_lines += total_line_count
|
||||||
last_file = ""
|
last_file = ""
|
||||||
|
debug.debug("--------------------------")
|
||||||
ret = useful_list[:-1]
|
ret = useful_list[:-1]
|
||||||
|
debug.verbose("plopppp " + str(useful_list))
|
||||||
#for elem in ret:
|
#for elem in ret:
|
||||||
# debug.info(" " + str(elem));
|
# debug.info(" " + str(elem));
|
||||||
for elem in ret:
|
for elem in ret:
|
||||||
@@ -303,7 +376,11 @@ class Module:
|
|||||||
debug.info(" % " + str(elem[1]) + "\r\t\t" + str(elem[0]));
|
debug.info(" % " + str(elem[1]) + "\r\t\t" + str(elem[0]));
|
||||||
else:
|
else:
|
||||||
debug.info(" % " + str(elem[1]) + "\r\t\t" + str(elem[0]));
|
debug.info(" % " + str(elem[1]) + "\r\t\t" + str(elem[0]));
|
||||||
|
debug.verbose(" " + str(elem[2]) + " / " + str(elem[3]));
|
||||||
|
try:
|
||||||
pourcent = 100.0*float(executed_lines)/float(executable_lines)
|
pourcent = 100.0*float(executed_lines)/float(executable_lines)
|
||||||
|
except ZeroDivisionError:
|
||||||
|
pourcent = 0.0
|
||||||
# generate json file:
|
# generate json file:
|
||||||
json_file_name = target.get_build_path(self.name) + "/" + self.name + "_coverage.json"
|
json_file_name = target.get_build_path(self.name) + "/" + self.name + "_coverage.json"
|
||||||
debug.debug("generate json file : " + json_file_name)
|
debug.debug("generate json file : " + json_file_name)
|
||||||
@@ -331,6 +408,7 @@ class Module:
|
|||||||
tmp_file.close()
|
tmp_file.close()
|
||||||
# print debug:
|
# print debug:
|
||||||
debug.print_element("coverage", self.name, ":", str(pourcent) + "% " + str(executed_lines) + "/" + str(executable_lines))
|
debug.print_element("coverage", self.name, ":", str(pourcent) + "% " + str(executed_lines) + "/" + str(executable_lines))
|
||||||
|
return True
|
||||||
|
|
||||||
# call here to build the module
|
# call here to build the module
|
||||||
def build(self, target, package_name):
|
def build(self, target, package_name):
|
||||||
@@ -338,7 +416,8 @@ class Module:
|
|||||||
if target.is_module_build(self.name) == True:
|
if target.is_module_build(self.name) == True:
|
||||||
if self.sub_heritage_list == None:
|
if self.sub_heritage_list == None:
|
||||||
self.local_heritage = heritage.heritage(self, target)
|
self.local_heritage = heritage.heritage(self, target)
|
||||||
return self.sub_heritage_list
|
debug.warning("plop " + str(self.local_heritage));
|
||||||
|
return copy.deepcopy(self.sub_heritage_list)
|
||||||
# create the package heritage
|
# create the package heritage
|
||||||
self.local_heritage = heritage.heritage(self, target)
|
self.local_heritage = heritage.heritage(self, target)
|
||||||
|
|
||||||
@@ -473,6 +552,7 @@ class Module:
|
|||||||
debug.warning(" UN-SUPPORTED file format: '" + self.origin_path + "/" + file + "'")
|
debug.warning(" UN-SUPPORTED file format: '" + self.origin_path + "/" + file + "'")
|
||||||
# when multiprocess availlable, we need to synchronize here ...
|
# when multiprocess availlable, we need to synchronize here ...
|
||||||
multiprocess.pool_synchrosize()
|
multiprocess.pool_synchrosize()
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# -- Generation point --
|
# -- Generation point --
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
@@ -686,13 +766,14 @@ class Module:
|
|||||||
target.make_package(self.name, self.package_prop, os.path.join(self.origin_path, ".."), self.sub_heritage_list)
|
target.make_package(self.name, self.package_prop, os.path.join(self.origin_path, ".."), self.sub_heritage_list)
|
||||||
|
|
||||||
# return local dependency ...
|
# return local dependency ...
|
||||||
return self.sub_heritage_list
|
return copy.deepcopy(self.sub_heritage_list)
|
||||||
|
|
||||||
# call here to clean the module
|
# call here to clean the module
|
||||||
def clean(self, target):
|
def clean(self, target):
|
||||||
if self.type=='PREBUILD':
|
if self.type=='PREBUILD':
|
||||||
# nothing to add ==> just dependence
|
# nothing to add ==> just dependence
|
||||||
None
|
None
|
||||||
|
return True
|
||||||
elif self.type=='LIBRARY' \
|
elif self.type=='LIBRARY' \
|
||||||
or self.type=='LIBRARY_DYNAMIC' \
|
or self.type=='LIBRARY_DYNAMIC' \
|
||||||
or self.type=='LIBRARY_STATIC':
|
or self.type=='LIBRARY_STATIC':
|
||||||
@@ -700,6 +781,7 @@ class Module:
|
|||||||
pathbuild = target.get_build_path(self.name)
|
pathbuild = target.get_build_path(self.name)
|
||||||
debug.info("remove path : '" + pathbuild + "'")
|
debug.info("remove path : '" + pathbuild + "'")
|
||||||
tools.remove_path_and_sub_path(pathbuild)
|
tools.remove_path_and_sub_path(pathbuild)
|
||||||
|
return True
|
||||||
elif self.type=='BINARY' \
|
elif self.type=='BINARY' \
|
||||||
or self.type=='PACKAGE':
|
or self.type=='PACKAGE':
|
||||||
# remove path of the lib ... for this targer
|
# remove path of the lib ... for this targer
|
||||||
@@ -709,9 +791,13 @@ class Module:
|
|||||||
pathStaging = target.get_staging_path(self.name)
|
pathStaging = target.get_staging_path(self.name)
|
||||||
debug.info("remove path : '" + pathStaging + "'")
|
debug.info("remove path : '" + pathStaging + "'")
|
||||||
tools.remove_path_and_sub_path(pathStaging)
|
tools.remove_path_and_sub_path(pathStaging)
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
debug.error("Dit not know the element type ... (impossible case) type=" + self.type)
|
debug.error("Dit not know the element type ... (impossible case) type=" + self.type)
|
||||||
|
|
||||||
|
def add_tools(self, list):
|
||||||
|
tools.list_append_to(self.tools, list, True)
|
||||||
|
|
||||||
def add_module_depend(self, list):
|
def add_module_depend(self, list):
|
||||||
tools.list_append_to(self.depends, list, True)
|
tools.list_append_to(self.depends, list, True)
|
||||||
|
|
||||||
@@ -806,7 +892,7 @@ class Module:
|
|||||||
print(' ' + str(description))
|
print(' ' + str(description))
|
||||||
print(' ' + str(input_list))
|
print(' ' + str(input_list))
|
||||||
|
|
||||||
def display(self, target):
|
def display(self):
|
||||||
print('-----------------------------------------------')
|
print('-----------------------------------------------')
|
||||||
print(' package : "' + self.name + "'")
|
print(' package : "' + self.name + "'")
|
||||||
print('-----------------------------------------------')
|
print('-----------------------------------------------')
|
||||||
@@ -830,12 +916,13 @@ class Module:
|
|||||||
self.print_list('paths',self.paths)
|
self.print_list('paths',self.paths)
|
||||||
for element in self.path["local"]:
|
for element in self.path["local"]:
|
||||||
value = self.path["local"][element]
|
value = self.path["local"][element]
|
||||||
self.print_list('local path ' + str(element), value)
|
self.print_list('local path "' + str(element) + '" ' + str(len(value)), value)
|
||||||
|
|
||||||
for element in self.path["export"]:
|
for element in self.path["export"]:
|
||||||
value = self.path["export"][element]
|
value = self.path["export"][element]
|
||||||
self.print_list('export path ' + str(element), value)
|
self.print_list('export path "' + str(element) + '" ' + str(len(value)), value)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def pkg_set(self, variable, value):
|
def pkg_set(self, variable, value):
|
||||||
if "COMPAGNY_TYPE" == variable:
|
if "COMPAGNY_TYPE" == variable:
|
||||||
@@ -899,7 +986,8 @@ class Module:
|
|||||||
"ANDROID_APPL_TYPE",
|
"ANDROID_APPL_TYPE",
|
||||||
"ADMOD_ID",
|
"ADMOD_ID",
|
||||||
"APPLE_APPLICATION_IOS_ID",
|
"APPLE_APPLICATION_IOS_ID",
|
||||||
"LICENSE"]:
|
"LICENSE",
|
||||||
|
"ANDROID_SIGN"]:
|
||||||
self.package_prop[variable] = value
|
self.package_prop[variable] = value
|
||||||
self.package_prop_default[variable] = False
|
self.package_prop_default[variable] = False
|
||||||
elif "ADMOD_POSITION" == variable:
|
elif "ADMOD_POSITION" == variable:
|
||||||
@@ -1026,6 +1114,7 @@ def load_module(target, name):
|
|||||||
debug.debug("Request load module '" + name + "' not define for this platform")
|
debug.debug("Request load module '" + name + "' not define for this platform")
|
||||||
else:
|
else:
|
||||||
target.add_module(tmp_element)
|
target.add_module(tmp_element)
|
||||||
|
return tmp_element
|
||||||
|
|
||||||
def list_all_module():
|
def list_all_module():
|
||||||
global module_list
|
global module_list
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -48,7 +49,7 @@ processor_availlable = 1 # number of CPU core availlable
|
|||||||
def run_command_no_lock_out(cmd_line):
|
def run_command_no_lock_out(cmd_line):
|
||||||
# prepare command line:
|
# prepare command line:
|
||||||
args = shlex.split(cmd_line)
|
args = shlex.split(cmd_line)
|
||||||
debug.verbose("cmd = " + str(args))
|
debug.info("cmd = " + str(args))
|
||||||
try:
|
try:
|
||||||
# create the subprocess
|
# create the subprocess
|
||||||
p = subprocess.Popen(args)
|
p = subprocess.Popen(args)
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
125
lutin/target.py
125
lutin/target.py
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -44,6 +45,7 @@ class Target:
|
|||||||
# todo : remove this :
|
# todo : remove this :
|
||||||
self.sumulator = config["simulation"]
|
self.sumulator = config["simulation"]
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.config_based_on = name
|
||||||
self.end_generate_package = config["generate-package"]
|
self.end_generate_package = config["generate-package"]
|
||||||
debug.info("=================================");
|
debug.info("=================================");
|
||||||
debug.info("== Target='" + self.name + "' " + config["bus-size"] + " bits for arch '" + config["arch"] + "'");
|
debug.info("== Target='" + self.name + "' " + config["bus-size"] + " bits for arch '" + config["arch"] + "'");
|
||||||
@@ -105,9 +107,12 @@ class Target:
|
|||||||
if "debug" == self.config["mode"]:
|
if "debug" == self.config["mode"]:
|
||||||
self.add_flag("c", [
|
self.add_flag("c", [
|
||||||
"-g",
|
"-g",
|
||||||
"-DDEBUG",
|
"-DDEBUG"
|
||||||
"-O0"
|
|
||||||
])
|
])
|
||||||
|
if env.get_force_optimisation() == False:
|
||||||
|
self.add_flag("c", "-O0")
|
||||||
|
else:
|
||||||
|
self.add_flag("c", "-O3")
|
||||||
else:
|
else:
|
||||||
self.add_flag("c", [
|
self.add_flag("c", [
|
||||||
"-DNDEBUG",
|
"-DNDEBUG",
|
||||||
@@ -116,13 +121,21 @@ class Target:
|
|||||||
|
|
||||||
## To add code coverate on build result system
|
## To add code coverate on build result system
|
||||||
if self.config["gcov"] == True:
|
if self.config["gcov"] == True:
|
||||||
|
if self.config["compilator"] == "clang":
|
||||||
|
self.add_flag("c", [
|
||||||
|
"--coverage"
|
||||||
|
])
|
||||||
|
self.add_flag("link", [
|
||||||
|
"--coverage"
|
||||||
|
])
|
||||||
|
else:
|
||||||
self.add_flag("c", [
|
self.add_flag("c", [
|
||||||
"-fprofile-arcs",
|
"-fprofile-arcs",
|
||||||
"-ftest-coverage"
|
"-ftest-coverage"
|
||||||
])
|
])
|
||||||
self.add_flag("link", [
|
self.add_flag("link", [
|
||||||
"-fprofile-arcs",
|
"-lgcov",
|
||||||
"-ftest-coverage"
|
"--coverage"
|
||||||
])
|
])
|
||||||
|
|
||||||
self.update_path_tree()
|
self.update_path_tree()
|
||||||
@@ -460,7 +473,17 @@ class Target:
|
|||||||
mod.ext_project_add_module(self, projectMng, addedModule)
|
mod.ext_project_add_module(self, projectMng, addedModule)
|
||||||
return
|
return
|
||||||
|
|
||||||
def build(self, name, packagesName=None, optionnal=False):
|
|
||||||
|
def build(self, name, packagesName=None, optionnal=False, actions=[]):
|
||||||
|
if len(name.split("?")) != 1\
|
||||||
|
or len(name.split("@")) != 1:
|
||||||
|
debug.error("need update")
|
||||||
|
if actions == "":
|
||||||
|
actions = ["build"]
|
||||||
|
if actions == []:
|
||||||
|
actions = ["build"]
|
||||||
|
if type(actions) == str:
|
||||||
|
actions = [actions]
|
||||||
if name == "gcov":
|
if name == "gcov":
|
||||||
debug.info("gcov all")
|
debug.info("gcov all")
|
||||||
debug.error("must set the gcov parsing on a specific library or binary ==> not supported now for all")
|
debug.error("must set the gcov parsing on a specific library or binary ==> not supported now for all")
|
||||||
@@ -468,7 +491,7 @@ class Target:
|
|||||||
debug.info("dump all")
|
debug.info("dump all")
|
||||||
self.load_all()
|
self.load_all()
|
||||||
for mod in self.module_list:
|
for mod in self.module_list:
|
||||||
mod.display(self)
|
mod.display()
|
||||||
return
|
return
|
||||||
if name == "all":
|
if name == "all":
|
||||||
debug.info("build all")
|
debug.info("build all")
|
||||||
@@ -487,14 +510,8 @@ class Target:
|
|||||||
for mod in self.module_list:
|
for mod in self.module_list:
|
||||||
mod.clean(self)
|
mod.clean(self)
|
||||||
else:
|
else:
|
||||||
# get the action an the module ....
|
module_name = name
|
||||||
name2 = name.replace("@", "?")
|
action_list = actions
|
||||||
gettedElement = name2.split("?")
|
|
||||||
module_name = gettedElement[0]
|
|
||||||
action_list = gettedElement[1:]
|
|
||||||
if len(action_list) == 0:
|
|
||||||
action_list = ["build"]
|
|
||||||
debug.verbose("requested : " + module_name + " ? actions:" + str(action_list))
|
|
||||||
for action_name in action_list:
|
for action_name in action_list:
|
||||||
debug.verbose("requested : " + module_name + "?" + action_name + " [START]")
|
debug.verbose("requested : " + module_name + "?" + action_name + " [START]")
|
||||||
ret = None;
|
ret = None;
|
||||||
@@ -508,11 +525,25 @@ class Target:
|
|||||||
self.un_install_package(module_name)
|
self.un_install_package(module_name)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
debug.error("target have no 'un_install_package' instruction")
|
debug.error("target have no 'un_install_package' instruction")
|
||||||
elif action_name == "run":
|
elif action_name[:3] == "run":
|
||||||
try:
|
if len(action_name) > 3:
|
||||||
self.run(module_name)
|
# we have option:
|
||||||
except AttributeError:
|
action_name2 = action_name.replace("\:", "1234COLUMN4321")
|
||||||
debug.error("target have no 'run' instruction")
|
option_list = action_name2.split(":")
|
||||||
|
if len(option_list) == 0:
|
||||||
|
debug.warning("action 'run' wrong options options ... : '" + action_name + "' might be separate with ':'")
|
||||||
|
option_list = []
|
||||||
|
else:
|
||||||
|
option_list_tmp = option_list[1:]
|
||||||
|
option_list = []
|
||||||
|
for elem in option_list_tmp:
|
||||||
|
option_list.append(elem.replace("1234COLUMN4321", ":"))
|
||||||
|
else:
|
||||||
|
option_list = []
|
||||||
|
#try:
|
||||||
|
self.run(module_name, option_list)
|
||||||
|
#except AttributeError:
|
||||||
|
# debug.error("target have no 'run' instruction")
|
||||||
elif action_name == "log":
|
elif action_name == "log":
|
||||||
try:
|
try:
|
||||||
self.show_log(module_name)
|
self.show_log(module_name)
|
||||||
@@ -524,14 +555,13 @@ class Target:
|
|||||||
and optionnal == True:
|
and optionnal == True:
|
||||||
ret = [heritage.HeritageList(), False]
|
ret = [heritage.HeritageList(), False]
|
||||||
else:
|
else:
|
||||||
# clean requested
|
|
||||||
for mod in self.module_list:
|
for mod in self.module_list:
|
||||||
if mod.name == module_name:
|
if mod.name == module_name:
|
||||||
if action_name[:4] == "dump":
|
if action_name[:4] == "dump":
|
||||||
debug.info("dump module '" + module_name + "'")
|
debug.info("dump module '" + module_name + "'")
|
||||||
if len(action_name) > 4:
|
if len(action_name) > 4:
|
||||||
debug.warning("action 'dump' does not support options ... : '" + action_name + "'")
|
debug.warning("action 'dump' does not support options ... : '" + action_name + "'")
|
||||||
ret = mod.display(self)
|
ret = mod.display()
|
||||||
break
|
break
|
||||||
elif action_name[:5] == "clean":
|
elif action_name[:5] == "clean":
|
||||||
debug.info("clean module '" + module_name + "'")
|
debug.info("clean module '" + module_name + "'")
|
||||||
@@ -549,6 +579,8 @@ class Target:
|
|||||||
option_list = []
|
option_list = []
|
||||||
else:
|
else:
|
||||||
option_list = option_list[1:]
|
option_list = option_list[1:]
|
||||||
|
else:
|
||||||
|
option_list = []
|
||||||
if "output" in option_list:
|
if "output" in option_list:
|
||||||
ret = mod.gcov(self, generate_output=True)
|
ret = mod.gcov(self, generate_output=True)
|
||||||
else:
|
else:
|
||||||
@@ -618,6 +650,8 @@ class Target:
|
|||||||
## @param[in] pkg_name Package Name (generic name)
|
## @param[in] pkg_name Package Name (generic name)
|
||||||
## @param[in] heritage_list List of dependency of the package
|
## @param[in] heritage_list List of dependency of the package
|
||||||
## @param[in] static The package is build in static mode
|
## @param[in] static The package is build in static mode
|
||||||
|
## @return True Something has been copied
|
||||||
|
## @return False Nothing has been copied
|
||||||
##
|
##
|
||||||
def make_package_binary_data(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
def make_package_binary_data(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
||||||
target_shared_path = os.path.join(path_package, self.pkg_path_data)
|
target_shared_path = os.path.join(path_package, self.pkg_path_data)
|
||||||
@@ -651,9 +685,10 @@ class Target:
|
|||||||
force_identical=True,
|
force_identical=True,
|
||||||
in_list=copy_list)
|
in_list=copy_list)
|
||||||
#real copy files
|
#real copy files
|
||||||
tools.copy_list(copy_list)
|
ret_copy = tools.copy_list(copy_list)
|
||||||
# remove unneded files (NOT folder ...)
|
# remove unneded files (NOT folder ...)
|
||||||
tools.clean_directory(target_shared_path, copy_list)
|
ret_remove = tools.clean_directory(target_shared_path, copy_list)
|
||||||
|
return ret_copy or ret_remove
|
||||||
|
|
||||||
##
|
##
|
||||||
## @brief Create a generic tree of the binary folder
|
## @brief Create a generic tree of the binary folder
|
||||||
@@ -661,6 +696,8 @@ class Target:
|
|||||||
## @param[in] pkg_name Package Name (generic name)
|
## @param[in] pkg_name Package Name (generic name)
|
||||||
## @param[in] heritage_list List of dependency of the package
|
## @param[in] heritage_list List of dependency of the package
|
||||||
## @param[in] static The package is build in static mode
|
## @param[in] static The package is build in static mode
|
||||||
|
## @return True Something has been copied
|
||||||
|
## @return False Nothing has been copied
|
||||||
##
|
##
|
||||||
def make_package_binary_bin(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
def make_package_binary_bin(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
||||||
copy_list={}
|
copy_list={}
|
||||||
@@ -673,10 +710,12 @@ class Target:
|
|||||||
path_dst,
|
path_dst,
|
||||||
in_list=copy_list)
|
in_list=copy_list)
|
||||||
#real copy files
|
#real copy files
|
||||||
tools.copy_list(copy_list)
|
ret_copy = tools.copy_list(copy_list)
|
||||||
|
ret_remove = False
|
||||||
if self.pkg_path_bin != "":
|
if self.pkg_path_bin != "":
|
||||||
# remove unneded files (NOT folder ...)
|
# remove unneded files (NOT folder ...)
|
||||||
tools.clean_directory(path_package_bin, copy_list)
|
ret_remove = tools.clean_directory(path_package_bin, copy_list)
|
||||||
|
return ret_copy or ret_remove
|
||||||
|
|
||||||
##
|
##
|
||||||
## @brief Create a generic tree of the library folder
|
## @brief Create a generic tree of the library folder
|
||||||
@@ -684,6 +723,8 @@ class Target:
|
|||||||
## @param[in] pkg_name Package Name (generic name)
|
## @param[in] pkg_name Package Name (generic name)
|
||||||
## @param[in] heritage_list List of dependency of the package
|
## @param[in] heritage_list List of dependency of the package
|
||||||
## @param[in] static The package is build in static mode
|
## @param[in] static The package is build in static mode
|
||||||
|
## @return True Something has been copied
|
||||||
|
## @return False Nothing has been copied
|
||||||
##
|
##
|
||||||
def make_package_binary_lib(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
def make_package_binary_lib(self, path_package, pkg_name, base_pkg_path, heritage_list, static):
|
||||||
copy_list={}
|
copy_list={}
|
||||||
@@ -704,44 +745,47 @@ class Target:
|
|||||||
os.path.join(path_package_lib, os.path.basename(file_src)),
|
os.path.join(path_package_lib, os.path.basename(file_src)),
|
||||||
in_list=copy_list)
|
in_list=copy_list)
|
||||||
#real copy files
|
#real copy files
|
||||||
tools.copy_list(copy_list)
|
ret_copy = tools.copy_list(copy_list)
|
||||||
|
ret_remove = False
|
||||||
if self.pkg_path_lib != "":
|
if self.pkg_path_lib != "":
|
||||||
# remove unneded files (NOT folder ...)
|
# remove unneded files (NOT folder ...)
|
||||||
tools.clean_directory(path_package_lib, copy_list)
|
ret_remove = tools.clean_directory(path_package_lib, copy_list)
|
||||||
|
return ret_copy or ret_remove
|
||||||
|
|
||||||
|
|
||||||
def make_package_generic_files(self, path_package, pkg_properties, pkg_name, base_pkg_path, heritage_list, static):
|
def make_package_generic_files(self, path_package, pkg_properties, pkg_name, base_pkg_path, heritage_list, static):
|
||||||
## Create version file:
|
## Create version file:
|
||||||
tools.file_write_data(os.path.join(path_package, self.pkg_path_version_file),
|
ret_version = tools.file_write_data(os.path.join(path_package, self.pkg_path_version_file),
|
||||||
tools.version_to_string(pkg_properties["VERSION"]),
|
tools.version_to_string(pkg_properties["VERSION"]),
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
|
||||||
## Create maintainer file:
|
## Create maintainer file:
|
||||||
tools.file_write_data(os.path.join(path_package, self.pkg_path_maintainer_file),
|
ret_maintainer = tools.file_write_data(os.path.join(path_package, self.pkg_path_maintainer_file),
|
||||||
self.generate_list_separate_coma(pkg_properties["MAINTAINER"]),
|
self.generate_list_separate_coma(pkg_properties["MAINTAINER"]),
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
|
||||||
## Create appl_name file:
|
## Create appl_name file:
|
||||||
tools.file_write_data(os.path.join(path_package, self.pkg_path_application_name_file),
|
ret_appl_name = tools.file_write_data(os.path.join(path_package, self.pkg_path_application_name_file),
|
||||||
"en_EN:" + pkg_properties["NAME"],
|
"en_EN:" + pkg_properties["NAME"],
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
|
||||||
## Create appl_description file:
|
## Create appl_description file:
|
||||||
tools.file_write_data(os.path.join(path_package, self.pkg_path_application_description_file),
|
ret_appl_desc = tools.file_write_data(os.path.join(path_package, self.pkg_path_application_description_file),
|
||||||
"en_EN:" + pkg_properties["DESCRIPTION"],
|
"en_EN:" + pkg_properties["DESCRIPTION"],
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
|
||||||
## Create Readme file:
|
## Create Readme file:
|
||||||
readme_file_dest = os.path.join(path_package, self.pkg_path_readme_file)
|
readme_file_dest = os.path.join(path_package, self.pkg_path_readme_file)
|
||||||
|
ret_readme = False
|
||||||
if os.path.exists(os.path.join(base_pkg_path, "os-Linux/README"))==True:
|
if os.path.exists(os.path.join(base_pkg_path, "os-Linux/README"))==True:
|
||||||
tools.copy_file(os.path.join(base_pkg_path, "os-Linux/README"), readme_file_dest)
|
ret_readme = tools.copy_file(os.path.join(base_pkg_path, "os-Linux/README"), readme_file_dest)
|
||||||
elif os.path.exists(os.path.join(base_pkg_path, "README"))==True:
|
elif os.path.exists(os.path.join(base_pkg_path, "README"))==True:
|
||||||
tools.copy_file(os.path.join(base_pkg_path, "README"), readme_file_dest)
|
ret_readme = tools.copy_file(os.path.join(base_pkg_path, "README"), readme_file_dest)
|
||||||
elif os.path.exists(os.path.join(base_pkg_path, "README.md"))==True:
|
elif os.path.exists(os.path.join(base_pkg_path, "README.md"))==True:
|
||||||
tools.copy_file(os.path.join(base_pkg_path, "README.md"), readme_file_dest)
|
ret_readme = tools.copy_file(os.path.join(base_pkg_path, "README.md"), readme_file_dest)
|
||||||
else:
|
else:
|
||||||
debug.debug("no file 'README', 'README.md' or 'os-Linux/README' ==> generate an empty one")
|
debug.debug("no file 'README', 'README.md' or 'os-Linux/README' ==> generate an empty one")
|
||||||
tools.file_write_data(readme_file_dest,
|
ret_readme = tools.file_write_data(readme_file_dest,
|
||||||
"No documentation for " + pkg_name + "\n",
|
"No documentation for " + pkg_name + "\n",
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
|
||||||
@@ -762,13 +806,20 @@ class Target:
|
|||||||
|
|
||||||
## Create changeLog file:
|
## Create changeLog file:
|
||||||
change_log_file_dest = os.path.join(path_package, self.pkg_path_change_log_file)
|
change_log_file_dest = os.path.join(path_package, self.pkg_path_change_log_file)
|
||||||
|
ret_changelog = False
|
||||||
if os.path.exists(os.path.join(base_pkg_path, "changelog")) == True:
|
if os.path.exists(os.path.join(base_pkg_path, "changelog")) == True:
|
||||||
tools.copy_file(os.path.join(base_pkg_path, "changelog"), change_log_file_dest)
|
ret_changelog = tools.copy_file(os.path.join(base_pkg_path, "changelog"), change_log_file_dest)
|
||||||
else:
|
else:
|
||||||
debug.debug("no file 'changelog' ==> generate an empty one")
|
debug.debug("no file 'changelog' ==> generate an empty one")
|
||||||
tools.file_write_data(change_log_file_dest,
|
ret_changelog = tools.file_write_data(change_log_file_dest,
|
||||||
"No changelog data " + pkg_name + "\n",
|
"No changelog data " + pkg_name + "\n",
|
||||||
only_if_new=True)
|
only_if_new=True)
|
||||||
|
return ret_version \
|
||||||
|
or ret_maintainer \
|
||||||
|
or ret_appl_name \
|
||||||
|
or ret_appl_desc \
|
||||||
|
or ret_readme \
|
||||||
|
or ret_changelog
|
||||||
|
|
||||||
##
|
##
|
||||||
## @brief convert a s list of string in a string separated by a ","
|
## @brief convert a s list of string in a string separated by a ","
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -86,17 +87,20 @@ def version_to_string(version):
|
|||||||
## @param[in] path Path of the data might be written.
|
## @param[in] path Path of the data might be written.
|
||||||
## @param[in] data Data To write in the file.
|
## @param[in] data Data To write in the file.
|
||||||
## @param[in] only_if_new (default: False) Write data only if data is different.
|
## @param[in] only_if_new (default: False) Write data only if data is different.
|
||||||
|
## @return True Something has been copied
|
||||||
|
## @return False Nothing has been copied
|
||||||
##
|
##
|
||||||
def file_write_data(path, data, only_if_new=False):
|
def file_write_data(path, data, only_if_new=False):
|
||||||
if only_if_new == True:
|
if only_if_new == True:
|
||||||
old_data = file_read_data(path)
|
old_data = file_read_data(path)
|
||||||
if old_data == data:
|
if old_data == data:
|
||||||
return
|
return False
|
||||||
#real write of data:
|
#real write of data:
|
||||||
create_directory_of_file(path)
|
create_directory_of_file(path)
|
||||||
file = open(path, "w")
|
file = open(path, "w")
|
||||||
file.write(data)
|
file.write(data)
|
||||||
file.close()
|
file.close()
|
||||||
|
return True
|
||||||
|
|
||||||
def list_to_str(list):
|
def list_to_str(list):
|
||||||
if type(list) == type(str()):
|
if type(list) == type(str()):
|
||||||
@@ -130,6 +134,8 @@ def add_prefix(prefix,list):
|
|||||||
## @param[in] force (default False) Force copy of the file
|
## @param[in] force (default False) Force copy of the file
|
||||||
## @param[in] force_identical (default False) Force file to be identical (read it in binary)
|
## @param[in] force_identical (default False) Force file to be identical (read it in binary)
|
||||||
## @param[in,out] in_list (default None) Not real copy: set the request copy in the input list
|
## @param[in,out] in_list (default None) Not real copy: set the request copy in the input list
|
||||||
|
## @return True Something has/must been copied
|
||||||
|
## @return False Nothing has/myst been copied
|
||||||
##
|
##
|
||||||
def copy_file(src, dst, cmd_file=None, force=False, force_identical=False, in_list=None):
|
def copy_file(src, dst, cmd_file=None, force=False, force_identical=False, in_list=None):
|
||||||
if os.path.exists(src) == False:
|
if os.path.exists(src) == False:
|
||||||
@@ -147,7 +153,7 @@ def copy_file(src, dst, cmd_file=None, force=False, force_identical=False, in_li
|
|||||||
in_list[dst] = {"src":src,
|
in_list[dst] = {"src":src,
|
||||||
"cmd_file":cmd_file,
|
"cmd_file":cmd_file,
|
||||||
"need_copy":False}
|
"need_copy":False}
|
||||||
return
|
return False
|
||||||
if in_list == None:
|
if in_list == None:
|
||||||
debug.print_element("copy file ", os.path.relpath(src), "==>", os.path.relpath(dst))
|
debug.print_element("copy file ", os.path.relpath(src), "==>", os.path.relpath(dst))
|
||||||
create_directory_of_file(dst)
|
create_directory_of_file(dst)
|
||||||
@@ -162,6 +168,7 @@ def copy_file(src, dst, cmd_file=None, force=False, force_identical=False, in_li
|
|||||||
in_list[dst] = {"src":src,
|
in_list[dst] = {"src":src,
|
||||||
"cmd_file":cmd_file,
|
"cmd_file":cmd_file,
|
||||||
"need_copy":True}
|
"need_copy":True}
|
||||||
|
return True
|
||||||
|
|
||||||
##
|
##
|
||||||
## @brief Copy a compleate directory in a specific folder
|
## @brief Copy a compleate directory in a specific folder
|
||||||
@@ -209,20 +216,28 @@ def copy_anything(src, dst, recursive = False, force_identical=False, in_list=No
|
|||||||
##
|
##
|
||||||
## @brief real copy of files in a specific dictionnary list
|
## @brief real copy of files in a specific dictionnary list
|
||||||
## @param[in] in_list Dictionnary of file to copy
|
## @param[in] in_list Dictionnary of file to copy
|
||||||
|
## @return True Something has been copied
|
||||||
|
## @return False Nothing has been copied
|
||||||
##
|
##
|
||||||
def copy_list(in_list):
|
def copy_list(in_list):
|
||||||
|
has_file_copied = False
|
||||||
for dst in in_list:
|
for dst in in_list:
|
||||||
if in_list[dst]["need_copy"] == False:
|
if in_list[dst]["need_copy"] == False:
|
||||||
continue
|
continue
|
||||||
# note we force the copy to disable the check of needed of copy (already done)
|
# note we force the copy to disable the check of needed of copy (already done)
|
||||||
copy_file(in_list[dst]["src"], dst, cmd_file=in_list[dst]["cmd_file"], force=True)
|
copy_file(in_list[dst]["src"], dst, cmd_file=in_list[dst]["cmd_file"], force=True)
|
||||||
|
has_file_copied = True
|
||||||
|
return has_file_copied
|
||||||
|
|
||||||
##
|
##
|
||||||
## @brief Clean a path from all un-needed element in a directory
|
## @brief Clean a path from all un-needed element in a directory
|
||||||
## @param[in] path Path to clean
|
## @param[in] path Path to clean
|
||||||
## @param[in] normal_list List of all files/path in the path
|
## @param[in] normal_list List of all files/path in the path
|
||||||
|
## @return True Something has been removed
|
||||||
|
## @return False Nothing has been removed
|
||||||
##
|
##
|
||||||
def clean_directory(path, normal_list):
|
def clean_directory(path, normal_list):
|
||||||
|
has_file_removed = False
|
||||||
# get a list of all element in the path:
|
# get a list of all element in the path:
|
||||||
for root, dirnames, filenames in os.walk(path):
|
for root, dirnames, filenames in os.walk(path):
|
||||||
for file in filenames:
|
for file in filenames:
|
||||||
@@ -230,6 +245,8 @@ def clean_directory(path, normal_list):
|
|||||||
if file_name not in normal_list:
|
if file_name not in normal_list:
|
||||||
debug.print_element("remove file ", os.path.relpath(file_name), "==>", "---")
|
debug.print_element("remove file ", os.path.relpath(file_name), "==>", "---")
|
||||||
os.remove(file_name)
|
os.remove(file_name)
|
||||||
|
has_file_removed = True
|
||||||
|
return has_file_removed
|
||||||
|
|
||||||
def filter_extention(list_files, extentions, invert=False):
|
def filter_extention(list_files, extentions, invert=False):
|
||||||
out = []
|
out = []
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Executable/binary builder
|
## Executable/binary builder
|
||||||
##
|
##
|
||||||
@@ -126,7 +136,7 @@ def link(file, binary, target, depancy, flags, name, basic_path, static = False)
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
cmd.append(target.global_flags_ld)
|
cmd.append(target.global_flags["link"])
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
for view in ["local", "export"]:
|
for view in ["local", "export"]:
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## C builder
|
## C builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## C++ builder
|
## C++ builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Dynamic library builder
|
## Dynamic library builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Java builder
|
## Java builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Java builder
|
## Java builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Dynamic library builder
|
## Dynamic library builder
|
||||||
##
|
##
|
||||||
@@ -89,6 +99,10 @@ def link(file, binary, target, depancy, flags, name, basic_path, static=False):
|
|||||||
cmd.append(file_src)
|
cmd.append(file_src)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
try:
|
||||||
|
cmd.append(list_static)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
for view in ["local", "export"]:
|
for view in ["local", "export"]:
|
||||||
if view not in flags:
|
if view not in flags:
|
||||||
continue
|
continue
|
||||||
@@ -103,10 +117,6 @@ def link(file, binary, target, depancy, flags, name, basic_path, static=False):
|
|||||||
cmd.append(target.global_flags[type])
|
cmd.append(target.global_flags[type])
|
||||||
if 'src' in depancy.src:
|
if 'src' in depancy.src:
|
||||||
cmd.append(tools.filter_extention(depancy.src['src'], get_input_type()))
|
cmd.append(tools.filter_extention(depancy.src['src'], get_input_type()))
|
||||||
try:
|
|
||||||
cmd.append(list_static)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
try:
|
||||||
for elem in list_dynamic:
|
for elem in list_dynamic:
|
||||||
lib_path = os.path.dirname(elem)
|
lib_path = os.path.dirname(elem)
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Static library builder
|
## Static library builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Objective-C builder
|
## Objective-C builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## Objective C++ builder
|
## Objective C++ builder
|
||||||
##
|
##
|
||||||
|
@@ -1,3 +1,13 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
##
|
##
|
||||||
## ASM builder
|
## ASM builder
|
||||||
##
|
##
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -47,6 +48,7 @@ class System(system.System):
|
|||||||
else:
|
else:
|
||||||
self.add_export_flag("c++", "-D__STDCPP_GNU__")
|
self.add_export_flag("c++", "-D__STDCPP_GNU__")
|
||||||
self.add_export_flag("c++-remove","-nostdlib")
|
self.add_export_flag("c++-remove","-nostdlib")
|
||||||
|
self.add_export_flag("need-libstdc++", True)
|
||||||
# GPL v3 (+ exception link for gcc compilator)
|
# GPL v3 (+ exception link for gcc compilator)
|
||||||
self.add_export_path(os.path.join(target.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", target.compilator_version, "include"))
|
self.add_export_path(os.path.join(target.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", target.compilator_version, "include"))
|
||||||
if target.type_arch == "armv5":
|
if target.type_arch == "armv5":
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
28
lutin/z_system/lutinSystem_Android_z.py
Normal file
28
lutin/z_system/lutinSystem_Android_z.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
|
from lutin import debug
|
||||||
|
from lutin import system
|
||||||
|
from lutin import tools
|
||||||
|
import os
|
||||||
|
|
||||||
|
class System(system.System):
|
||||||
|
def __init__(self, target):
|
||||||
|
system.System.__init__(self)
|
||||||
|
# create some HELP:
|
||||||
|
self.help="Z : z library \n Can be install with the package:\n - zlib1g-dev"
|
||||||
|
# check if the library exist:
|
||||||
|
if not os.path.isfile("/usr/include/zlib.h"):
|
||||||
|
# we did not find the library reqiested (just return) (automaticly set at false)
|
||||||
|
return;
|
||||||
|
self.valid = True
|
||||||
|
# todo : create a searcher of the presence of the library:
|
||||||
|
self.add_export_flag("link-lib", "z")
|
||||||
|
|
||||||
|
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -7,7 +8,6 @@
|
|||||||
## @license APACHE v2.0 (see license file)
|
## @license APACHE v2.0 (see license file)
|
||||||
##
|
##
|
||||||
|
|
||||||
|
|
||||||
from lutin import debug
|
from lutin import debug
|
||||||
from lutin import target
|
from lutin import target
|
||||||
from lutin import tools
|
from lutin import tools
|
||||||
@@ -467,7 +467,7 @@ class Target(target.Target):
|
|||||||
print("On release mode we need the file : and key an pasword to sign the application ...")
|
print("On release mode we need the file : and key an pasword to sign the application ...")
|
||||||
debug.print_element("pkg", ".apk(signed debug)", "<==", ".apk (not signed)")
|
debug.print_element("pkg", ".apk(signed debug)", "<==", ".apk (not signed)")
|
||||||
cmdLine = "jarsigner " \
|
cmdLine = "jarsigner " \
|
||||||
+ " -keystore " + base_pkg_path + "/AndroidKey.jks " \
|
+ " -keystore " + pkg_properties["ANDROID_SIGN"] + " " \
|
||||||
+ " -sigalg SHA1withRSA -digestalg SHA1 " \
|
+ " -sigalg SHA1withRSA -digestalg SHA1 " \
|
||||||
+ target_outpath + "/build/" + pkg_name_application_name + "-unalligned.apk " \
|
+ target_outpath + "/build/" + pkg_name_application_name + "-unalligned.apk " \
|
||||||
+ " " + pkg_name_application_name
|
+ " " + pkg_name_application_name
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -73,25 +74,29 @@ class Target(target.Target):
|
|||||||
"""
|
"""
|
||||||
def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static):
|
def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("-- Generate generic '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
|
debug.debug("-- Generate generic '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
#output path
|
#output path
|
||||||
target_outpath = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app")
|
target_outpath = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app")
|
||||||
tools.create_directory_of_file(target_outpath)
|
tools.create_directory_of_file(target_outpath)
|
||||||
|
|
||||||
## Create share datas:
|
## Create share datas:
|
||||||
self.make_package_binary_data(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_share = self.make_package_binary_data(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## copy binary files:
|
## copy binary files:
|
||||||
self.make_package_binary_bin(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_bin = self.make_package_binary_bin(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## Create libraries:
|
## Create libraries:
|
||||||
self.make_package_binary_lib(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_lib = self.make_package_binary_lib(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## Create generic files:
|
## Create generic files:
|
||||||
self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
|
ret_file = self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## create the package:
|
## create the package:
|
||||||
|
if ret_share \
|
||||||
|
or ret_bin \
|
||||||
|
or ret_lib \
|
||||||
|
or ret_file:
|
||||||
debug.debug("package : " + os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app.pkg"))
|
debug.debug("package : " + os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app.pkg"))
|
||||||
os.system("cd " + self.get_staging_path(pkg_name) + " ; tar -czf " + pkg_name + ".app.tar.gz " + pkg_name + ".app")
|
os.system("cd " + self.get_staging_path(pkg_name) + " ; tar -czf " + pkg_name + ".app.tar.gz " + pkg_name + ".app")
|
||||||
#multiprocess.run_command("cd " + self.get_staging_path(pkg_name) + " ; tar -czf " + pkg_name + ".app.tar.gz " + pkg_name + ".app")
|
#multiprocess.run_command("cd " + self.get_staging_path(pkg_name) + " ; tar -czf " + pkg_name + ".app.tar.gz " + pkg_name + ".app")
|
||||||
@@ -137,12 +142,15 @@ class Target(target.Target):
|
|||||||
# remove executable link version:
|
# remove executable link version:
|
||||||
tools.remove_file(target_bin_link)
|
tools.remove_file(target_bin_link)
|
||||||
|
|
||||||
def run(self, pkg_name):
|
def run(self, pkg_name, option_list):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("-- Run package '" + pkg_name + "'")
|
debug.info("-- Run package '" + pkg_name + "' + option: " + str(option_list))
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
appl_path = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", "bin", pkg_name)
|
appl_path = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", "bin", pkg_name)
|
||||||
multiprocess.run_command_no_lock_out(appl_path)
|
cmd = appl_path + " "
|
||||||
|
for elem in option_list:
|
||||||
|
cmd += elem + " "
|
||||||
|
multiprocess.run_command_no_lock_out(cmd)
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("-- Run package '" + pkg_name + "' Finished")
|
debug.info("-- Run package '" + pkg_name + "' Finished")
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -147,12 +148,15 @@ class Target(target.Target):
|
|||||||
if os.path.exists("/Applications/" + pkg_name + ".app") == True:
|
if os.path.exists("/Applications/" + pkg_name + ".app") == True:
|
||||||
shutil.rmtree("/Applications/" + pkg_name + ".app")
|
shutil.rmtree("/Applications/" + pkg_name + ".app")
|
||||||
|
|
||||||
def run(self, pkg_name):
|
def run(self, pkg_name, option_list):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("-- Run package '" + pkg_name + "'")
|
debug.info("-- Run package '" + pkg_name + "'")
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
appl_path = os.path.join(tools.get_run_path(),self.path_out,self.path_staging,pkg_name + ".app", "bin", pkg_name)
|
appl_path = os.path.join(tools.get_run_path(),self.path_out,self.path_staging,pkg_name + ".app", "bin", pkg_name)
|
||||||
multiprocess.run_command_no_lock_out(appl_path)
|
cmd = appl_path + " "
|
||||||
|
for elem in option_list:
|
||||||
|
cmd += elem + " "
|
||||||
|
multiprocess.run_command_no_lock_out(cmd)
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("-- Run package '" + pkg_name + "' Finished")
|
debug.info("-- Run package '" + pkg_name + "' Finished")
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -62,24 +63,30 @@ class Target(target.Target):
|
|||||||
|
|
||||||
def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static):
|
def make_package_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
|
debug.debug("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
#output path
|
#output path
|
||||||
target_outpath = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app")
|
target_outpath = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app")
|
||||||
tools.create_directory_of_file(target_outpath)
|
tools.create_directory_of_file(target_outpath)
|
||||||
|
|
||||||
## Create share datas:
|
## Create share datas:
|
||||||
self.make_package_binary_data(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_share = self.make_package_binary_data(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## copy binary files:
|
## copy binary files:
|
||||||
self.make_package_binary_bin(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_bin = self.make_package_binary_bin(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## Create libraries:
|
## Create libraries:
|
||||||
self.make_package_binary_lib(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
ret_lib = self.make_package_binary_lib(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
## Create generic files:
|
## Create generic files:
|
||||||
self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
|
ret_file = self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
|
||||||
|
|
||||||
|
## create the package:
|
||||||
|
if ret_share \
|
||||||
|
or ret_bin \
|
||||||
|
or ret_lib \
|
||||||
|
or ret_file:
|
||||||
|
debug.info("TODO: create a windows pkg ...")
|
||||||
|
|
||||||
def make_package_single_file(self, pkg_name, pkg_properties, base_pkg_path, heritage_list):
|
def make_package_single_file(self, pkg_name, pkg_properties, base_pkg_path, heritage_list):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
##
|
##
|
||||||
## @author Edouard DUPIN
|
## @author Edouard DUPIN
|
||||||
##
|
##
|
||||||
@@ -6,6 +7,7 @@
|
|||||||
##
|
##
|
||||||
## @license APACHE v2.0 (see license file)
|
## @license APACHE v2.0 (see license file)
|
||||||
##
|
##
|
||||||
|
|
||||||
import platform
|
import platform
|
||||||
import os
|
import os
|
||||||
import zipfile
|
import zipfile
|
||||||
|
11
setup.py
11
setup.py
@@ -1,4 +1,13 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
|
||||||
def readme():
|
def readme():
|
||||||
@@ -7,7 +16,7 @@ def readme():
|
|||||||
|
|
||||||
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
|
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
|
||||||
setup(name='lutin',
|
setup(name='lutin',
|
||||||
version='1.1.0',
|
version='1.2.3',
|
||||||
description='Lutin generic builder (might replace makefile, CMake ...)',
|
description='Lutin generic builder (might replace makefile, CMake ...)',
|
||||||
long_description=readme(),
|
long_description=readme(),
|
||||||
url='http://github.com/HeeroYui/lutin',
|
url='http://github.com/HeeroYui/lutin',
|
||||||
|
Reference in New Issue
Block a user