Compare commits

...

23 Commits

Author SHA1 Message Date
5065c7b6ee [CI] version 0.7.10 2015-11-02 22:11:42 +01:00
b497e09dd0 [CI] set minGW builder better 2015-11-02 21:55:32 +01:00
75d1490a59 [DEV] correct the android application naming 2015-11-02 21:35:08 +01:00
ddff6f82b9 [RELEASE] new version 0.7.9 2015-10-30 21:12:01 +01:00
4067d6266e [DEBUG] update android build 2015-10-30 21:05:49 +01:00
fcd357e452 [RELEASE] new version 0.7.8 (fix error android) 2015-10-29 21:19:29 +01:00
3c186dc92e [RELEASE] new version 0.7.7 2015-10-29 21:19:29 +01:00
0b33c94680 [DEV] start add unitary test 2015-10-22 21:01:35 +02:00
6c416c9fef [RELEASE] new version 2015-10-21 21:56:53 +02:00
fc6493f441 [DEBUG] strip Ok on MacOs (missing -u flag) 2015-10-21 21:40:59 +02:00
16c019ac5b [DEBUG] compile OK in IOs even if secret key not present (release mode) 2015-10-21 21:28:32 +02:00
328681d44b [DEBUG] correct jar link 2015-10-21 21:25:12 +02:00
fbf7d2dbad [DEBUG] correct force strip 2015-10-21 21:22:34 +02:00
5f008a153e [DEBUG] correct dynamic-build 2015-10-20 23:52:51 +02:00
4d82e31d40 [TAG] creata a new version 2015-10-20 23:39:12 +02:00
c913e19ccf [DEBUG] Correct creating directory of file when needed 2015-10-20 23:33:53 +02:00
62ac51e78b [TAG] creata a new version 2015-10-20 23:39:12 +02:00
ce407605c9 [DEBUG] Compile again on MacOs and IOs 2015-10-20 23:33:53 +02:00
8336411ec2 [DEBUG] corect help 2015-10-19 21:56:11 +02:00
fd58b31c26 [DEBUG] correct windows minGW version 2015-10-16 23:36:10 +02:00
fa1b618896 [DEBUG] MacOs dynamic variable 2015-10-16 22:10:24 +02:00
2dcbbe9639 [DEV] Remove completion for linux ... 2015-10-15 21:24:20 +02:00
242a086ba1 [DEV] add missing license file 2015-10-15 08:33:38 +02:00
21 changed files with 503 additions and 360 deletions

69
.travis.yml Normal file
View File

@@ -0,0 +1,69 @@
#language: python
sudo: false
branches:
only:
- master
- dev
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
- expect
- binutils-mingw-w64-i686 # 32bit MinGW
- gcc-mingw-w64-i686
- g++-mingw-w64-i686
- binutils-mingw-w64-x86-64 # 64bit MinGW
- gcc-mingw-w64-x86-64
- g++-mingw-w64-x86-64
matrix:
include:
- os: linux
env: CONF=release BUILDER=gcc TARGET=Linux TAG=Linux
compiler: gcc
- os: linux
env: CONF=debug BUILDER=clang TARGET=Linux
compiler: clang
- os: linux
env: CONF=release BUILDER=gcc TARGET=Windows TAG=Mingw
compiler: gcc
- os: linux
env: CONF=release BUILDER=gcc TARGET=Android TAG=Android DISABLE_PACKAGE=-p
compiler: gcc
- os: osx
env: CONF=release BUILDER=clang TARGET=MacOs TAG=MacOs
compiler: clang
- os: osx
env: CONF=release BUILDER=clang TARGET=IOs TAG=IOs
compiler: clang
install:
- cd ..
# download NDK
- if [ "$TAG" == "Android" ]; then
git clone --depth 1 --branch master https://github.com/HeeroYui/android-download-tool;
./android-download-tool/dl-android.sh;
fi
- git clone --depth 1 --branch master https://github.com/atria-soft/ci.git
- cd -
before_script:
- ./setup.py build
- export PYTHONPATH=$PYTHONPATH:./lutin/build/lib.linux-x86_64-2.7/:./lutin/build/lib.linux-x86_64-2.7/lutin/:./lutin/build/lib:./lutin/build/lib/lutin/
- cd ..
- pwd
- ls -l *
- ./ci/build_send.py --tag=$TAG --status=START;
script:
- ./lutin/build/scripts-2.7/lutin -w -j4 -C -P -t$TARGET -c $BUILDER $COMPILATOR_OPTION $BUS -m $CONF $GCOV $DISABLE_PACKAGE test-c; STATUS=$?
- ./ci/build_send.py --tag=$TAG --status="$STATUS";
notifications:
email:
- yui.heero@gmail.com

View File

@@ -3,9 +3,52 @@ Lutin
`lutin` is a generic builder and package maker is a FREE software tool. `lutin` is a generic builder and package maker is a FREE software tool.
.. image:: https://badge.fury.io/py/lutin.png .. image:: https://badge.fury.io/py/lutin.png
:target: https://pypi.python.org/pypi/lutin :target: https://pypi.python.org/pypi/lutin
Release (master)
----------------
.. image:: https://travis-ci.org/HeeroYui/lutin.svg?branch=master
:target: https://travis-ci.org/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=master&tag=Linux
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=master&tag=MacOs
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=master&tag=Mingw
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=master&tag=Android
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=master&tag=IOs
:target: http://atria-soft.com/ci/HeeroYui/lutin
Developement (dev)
------------------
.. image:: https://travis-ci.org/HeeroYui/lutin.svg?branch=dev
:target: https://travis-ci.org/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=dev&tag=Linux
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=dev&tag=MacOs
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=dev&tag=Mingw
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=dev&tag=Android
:target: http://atria-soft.com/ci/HeeroYui/lutin
.. image:: http://atria-soft.com/ci/build/HeeroYui/lutin.svg?branch=dev&tag=IOs
:target: http://atria-soft.com/ci/HeeroYui/lutin
Instructions Instructions
------------ ------------

View File

@@ -17,6 +17,7 @@ import lutin.module as module
import lutin.target as target import lutin.target as target
import lutin.env as env import lutin.env as env
import lutin.multiprocess as multiprocess import lutin.multiprocess as multiprocess
import lutin.tools as tools
myArgs = arguments.LutinArg() myArgs = arguments.LutinArg()
myArgs.add(arguments.ArgDefine("h", "help", desc="Display this help")) myArgs.add(arguments.ArgDefine("h", "help", desc="Display this help"))
@@ -66,7 +67,8 @@ def usage(full=False):
for mod in listOfAllModule: for mod in listOfAllModule:
data_print = " " data_print = " "
if full == False: if full == False:
if mod["type"][:6] == "BINARY": if mod["type"] != None \
and mod["type"][:6] == "BINARY":
data_print += color['blue'] data_print += color['blue']
if mod["sub-type"] == "": if mod["sub-type"] == "":
data_print += "* " data_print += "* "
@@ -78,9 +80,11 @@ def usage(full=False):
data_print += "S " data_print += "S "
else: else:
data_print += " " data_print += " "
elif mod["type"] == "PACKAGE": elif mod["type"] != None \
and mod["type"] == "PACKAGE":
data_print += color['red'] + "# " data_print += color['red'] + "# "
elif mod["type"][:7] == "LIBRARY": elif mod["type"] != None \
and mod["type"][:7] == "LIBRARY":
data_print += color['yellow'] + " " data_print += color['yellow'] + " "
else: else:
data_print += color['default'] + " " data_print += color['default'] + " "
@@ -89,9 +93,11 @@ def usage(full=False):
data_print += mod["name"] + color['default'] data_print += mod["name"] + color['default']
if full == False: if full == False:
data_print += "\r\t\t\t\t\t\t\t" data_print += "\r\t\t\t\t\t\t\t"
if mod["license"] != "": if mod["license"] != None \
and mod["license"] != "":
data_print += color['yellow'] + " [" + mod["license"] + "]" + color['default'] data_print += color['yellow'] + " [" + mod["license"] + "]" + color['default']
if mod["version"] != []: if mod["version"] != None \
and mod["version"] != []:
version_ID = tools.version_to_string(mod["version"]) version_ID = tools.version_to_string(mod["version"])
data_print += color['blue'] + " (" + version_ID + ")" + color['default'] data_print += color['blue'] + " (" + version_ID + ")" + color['default']
""" """
@@ -106,11 +112,14 @@ def usage(full=False):
if mod["description"] != "": if mod["description"] != "":
print(" " + mod["description"]) print(" " + mod["description"])
if full == True: if full == True:
if mod["type"] != "": if mod["type"] != None \
and mod["type"] != "":
print(" Type: " + mod["type"]) print(" Type: " + mod["type"])
if mod["sub-type"] != "": if mod["sub-type"] != None \
and mod["sub-type"] != "":
print(" Sub-Type: " + mod["sub-type"]) print(" Sub-Type: " + mod["sub-type"])
if mod["version"] != []: if mod["version"] != None \
and mod["version"] != []:
version_ID = "" version_ID = ""
for id in mod["version"]: for id in mod["version"]:
if len(version_ID) != 0: if len(version_ID) != 0:
@@ -120,14 +129,19 @@ def usage(full=False):
version_ID+="." version_ID+="."
version_ID += str(id) version_ID += str(id)
print(" version: " + color['blue'] + version_ID + color['default']) print(" version: " + color['blue'] + version_ID + color['default'])
if mod["compagny-type"] != "" \ if mod["compagny-type"] != None \
and mod["compagny-name"] != None \
and mod["compagny-type"] != "" \
and mod["compagny-name"] != "": and mod["compagny-name"] != "":
print(" compagny: " + color['purple'] + mod["compagny-type"] + "/" + mod["compagny-name"] + color['default']) print(" compagny: " + color['purple'] + mod["compagny-type"] + "/" + mod["compagny-name"] + color['default'])
elif mod["compagny-name"] != "": elif mod["compagny-name"] != None \
and mod["compagny-name"] != "":
print(" compagny: " + color['purple'] + mod["compagny-name"] + color['default']) print(" compagny: " + color['purple'] + mod["compagny-name"] + color['default'])
if mod["license"] != "": if mod["license"] != None \
and mod["license"] != "":
print(" license: " + color['yellow'] + mod["license"] + color['default']) print(" license: " + color['yellow'] + mod["license"] + color['default'])
if mod["maintainer"] != []: if mod["maintainer"] != None \
and mod["maintainer"] != []:
print(" maintainers:") print(" maintainers:")
for elem in mod["maintainer"]: for elem in mod["maintainer"]:
print(" " + str(elem)) print(" " + str(elem))
@@ -178,7 +192,7 @@ def parseGenericArg(argument, active):
if active==True: if active==True:
debug.enable_color() debug.enable_color()
return True return True
elif argument.get_option_name() == "force": elif argument.get_option_name() == "force-build":
if active==True: if active==True:
env.set_force_mode(True) env.set_force_mode(True)
return True return True
@@ -270,7 +284,7 @@ for argument in localArgument:
my_target = None my_target = None
else: else:
if argument.get_option_name() != "": if argument.get_option_name() != "":
debug.warning("Can not understand argument : '" + argument.get_option_nName() + "'") debug.warning("Can not understand argument : '" + argument.get_option_name() + "'")
usage() usage()
else: else:
#load the target if needed : #load the target if needed :

View File

@@ -40,7 +40,7 @@ def resize(src_file, dest_file, x, y, cmd_file=None):
if os.path.exists(src_file) == False: if os.path.exists(src_file) == False:
debug.error("Request a resize an image that does not existed : '" + src_file + "'") debug.error("Request a resize an image that does not existed : '" + src_file + "'")
cmd_line = "resize Image : " + src_file + " ==> " + dest_file + " newSize=(" + str(x) + "x" + str(y) + ")" cmd_line = "resize Image : " + src_file + " ==> " + dest_file + " newSize=(" + str(x) + "x" + str(y) + ")"
if False==depend.need_re_build(dest_file, src_file, file_cmd=cmd_file , cmd_line=cmd_line): if depend.need_re_build(dest_file, src_file, file_cmd=cmd_file , cmd_line=cmd_line) == False:
return return
# add cmdLine ... # add cmdLine ...
x = get_pow_2_multiple(x) x = get_pow_2_multiple(x)

100
lutin/license.py Normal file
View File

@@ -0,0 +1,100 @@
#!/usr/bin/python
##
## @author Edouard DUPIN
##
## @copyright 2012, Edouard DUPIN, all right reserved
##
## @license APACHE v2.0 (see license file)
##
license_base = {
"APACHE-2": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"APACHE v2.0 license",
"licence-file":"licence/apache-2.txt"
},
"GPL-2": {
"generic":True,
"contaminate-static":True,
"contaminate-dynamic":True,
"redistribute-source":True,
"title":"GPL: Gnu Public Licence v2.0",
"licence-file":"licence/GPL-2.txt"
},
"GPL-3": {
"generic":True,
"contaminate-static":True,
"contaminate-dynamic":True,
"redistribute-source":True,
"title":"GPL: GNU General Public License v3.0",
"licence-file":"licence/GPL-3.txt"
},
"LGPL-2": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":True,
"title":"LGPL: GNU Lesser General Public License v2.0",
"licence-file":"licence/LGPL-2.txt"
},
"LGPL-3": {
"generic":True,
"contaminate-static":True,
"contaminate-dynamic":False,
"redistribute-source":True,
"title":"LGPL: GNU Lesser General Public License v3.0",
"licence-file":"licence/LGPL-3.txt"
},
"MIT": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"MIT: Massachusetts Institute of Technology License",
"licence-file":"licence/MIT.txt"
},
"BSD-2": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"BSD 2-clauses: Berkeley Software Distribution License",
"licence-file":"licence/BSD-2.txt"
},
"BSD-3": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"BSD 3-clauses: Berkeley Software Distribution License",
"licence-file":"licence/BSD-3.txt"
},
"BSD-4": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"BSD 4-clauses: Berkeley Software Distribution License",
"licence-file":"licence/BSD-4.txt"
},
"PNG": {
"generic":True,
"contaminate-static":False,
"contaminate-dynamic":False,
"redistribute-source":False,
"title":"PNG License",
"licence-file":"licence/png.txt"
}
}
def get_basic_list():
global license_base
out = []
for name in license_base:
out.append(name)
return out

View File

@@ -83,17 +83,17 @@ class Module:
self.origin_path = tools.get_current_path(self.origin_file) self.origin_path = tools.get_current_path(self.origin_file)
self.local_heritage = heritage.heritage(self, None) self.local_heritage = heritage.heritage(self, None)
self.package_prop = { "COMPAGNY_TYPE" : set(""), self.package_prop = { "COMPAGNY_TYPE" : "",
"COMPAGNY_NAME" : set(""), "COMPAGNY_NAME" : "",
"COMPAGNY_NAME2" : set(""), "COMPAGNY_NAME2" : "",
"MAINTAINER" : set([]), "MAINTAINER" : [],
#"ICON" : set(""), #"ICON" : set(""),
"SECTION" : set([]), "SECTION" : [],
"PRIORITY" : set(""), "PRIORITY" : "",
"DESCRIPTION" : set(""), "DESCRIPTION" : "",
"VERSION" : [0,0,0], "VERSION" : [0,0,0],
"VERSION_CODE" : "", "VERSION_CODE" : "",
"NAME" : set("no-name"), # name of the application "NAME" : "no-name", # name of the application
"ANDROID_MANIFEST" : "", # By default generate the manifest "ANDROID_MANIFEST" : "", # By default generate the manifest
"ANDROID_RESOURCES" : [], "ANDROID_RESOURCES" : [],
"ANDROID_APPL_TYPE" : "APPL", # the other mode is "WALLPAPER" ... and later "WIDGET" "ANDROID_APPL_TYPE" : "APPL", # the other mode is "WALLPAPER" ... and later "WIDGET"
@@ -135,9 +135,10 @@ class Module:
"-Wreturn-type", "-Wreturn-type",
#"-Wint-to-pointer-cast", #"-Wint-to-pointer-cast",
"-Wno-write-strings", "-Wno-write-strings",
"-Woverloaded-virtual",
"-Wnon-virtual-dtor",
"-Wno-unused-variable"]); "-Wno-unused-variable"]);
self.compile_flags('c++', [
"-Woverloaded-virtual",
"-Wnon-virtual-dtor"]);
#only for gcc : "-Wunused-variable", "-Wunused-but-set-variable", #only for gcc : "-Wunused-variable", "-Wunused-but-set-variable",
## ##
@@ -476,26 +477,29 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
self.local_heritage.add_lib_static(res_file) self.local_heritage.add_lib_static(res_file)
except ValueError: except ValueError:
debug.error(" UN-SUPPORTED link format: '.a'") debug.error(" UN-SUPPORTED link format: '.a'")
if self.type == 'LIBRARY' \ if target.support_dynamic_link == True:
or self.type == 'LIBRARY_DYNAMIC': if self.type == 'LIBRARY' \
try: or self.type == 'LIBRARY_DYNAMIC':
tmp_builder = builder.get_builder_with_output("so"); try:
list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type()) tmp_builder = builder.get_builder_with_output("so");
if len(list_file) > 0: list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type())
res_file = tmp_builder.link(list_file, if len(list_file) > 0:
package_name, res_file = tmp_builder.link(list_file,
target, package_name,
self.sub_heritage_list, target,
name = self.name, self.sub_heritage_list,
basic_path = self.origin_path) flags = self.flags,
self.local_heritage.add_lib_dynamic(res_file) name = self.name,
except ValueError: basic_path = self.origin_path)
debug.error(" UN-SUPPORTED link format: '.so'/'.dynlib'/'.dll'") self.local_heritage.add_lib_dynamic(res_file)
except ValueError:
debug.error(" UN-SUPPORTED link format: '.so'/'.dynlib'/'.dll'")
try: try:
tmp_builder = builder.get_builder_with_output("jar"); tmp_builder = builder.get_builder_with_output("jar");
list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type()) list_file = tools.filter_extention(list_sub_file_needed_to_build, tmp_builder.get_input_type())
@@ -504,6 +508,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
self.local_heritage.add_lib_interpreted('java', res_file) self.local_heritage.add_lib_interpreted('java', res_file)
@@ -513,7 +518,7 @@ class Module:
or self.type == 'BINARY_SHARED' \ or self.type == 'BINARY_SHARED' \
or self.type == 'BINARY_STAND_ALONE': or self.type == 'BINARY_STAND_ALONE':
shared_mode = False shared_mode = False
if target.name=="Android": if target.name == "Android":
debug.warning("Android mode ...") debug.warning("Android mode ...")
# special case for android ... # special case for android ...
for elem in self.sub_heritage_list.src['src']: for elem in self.sub_heritage_list.src['src']:
@@ -523,8 +528,9 @@ class Module:
shared_mode = True shared_mode = True
break; break;
static_mode = True static_mode = True
if self.type == 'BINARY_SHARED': if target.support_dynamic_link == True:
static_mode = False if self.type == 'BINARY_SHARED':
static_mode = False
if shared_mode == True: if shared_mode == True:
try: try:
tmp_builder = builder.get_builder_with_output("so"); tmp_builder = builder.get_builder_with_output("so");
@@ -533,6 +539,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path, basic_path = self.origin_path,
static = static_mode) static = static_mode)
@@ -547,6 +554,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
self.local_heritage.add_sources(res_file) self.local_heritage.add_sources(res_file)
@@ -559,13 +567,14 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path, basic_path = self.origin_path,
static = static_mode) static = static_mode)
except ValueError: except ValueError:
debug.error(" UN-SUPPORTED link format: '.bin'") debug.error(" UN-SUPPORTED link format: '.bin'")
elif self.type == "PACKAGE": elif self.type == "PACKAGE":
if target.name=="Android": if target.name == "Android":
# special case for android wrapper: # special case for android wrapper:
try: try:
tmp_builder = builder.get_builder_with_output("so"); tmp_builder = builder.get_builder_with_output("so");
@@ -574,6 +583,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = "lib" + self.name, name = "lib" + self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
self.local_heritage.add_sources(res_file) self.local_heritage.add_sources(res_file)
@@ -587,6 +597,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
self.local_heritage.add_sources(res_file) self.local_heritage.add_sources(res_file)
@@ -599,6 +610,7 @@ class Module:
package_name, package_name,
target, target,
self.sub_heritage_list, self.sub_heritage_list,
flags = self.flags,
name = self.name, name = self.name,
basic_path = self.origin_path) basic_path = self.origin_path)
except ValueError: except ValueError:
@@ -1040,7 +1052,7 @@ def get_module_option(the_module, name):
if "get_type" in dir(the_module): if "get_type" in dir(the_module):
type = the_module.get_type() type = the_module.get_type()
else: else:
debug.debug(" fundtion get_type() must be provided in the module: " + name) debug.debug(" function get_type() must be provided in the module: " + name)
if "get_sub_type" in dir(the_module): if "get_sub_type" in dir(the_module):
sub_type = the_module.get_sub_type() sub_type = the_module.get_sub_type()

View File

@@ -134,6 +134,8 @@ class Target:
self.pkg_path_readme_file = "readme.txt" self.pkg_path_readme_file = "readme.txt"
self.pkg_path_change_log_file = "changelog.txt" self.pkg_path_change_log_file = "changelog.txt"
# special case for IOS (example) no build dynamicly ...
self.support_dynamic_link = True
def update_path_tree(self): def update_path_tree(self):
self.path_out = os.path.join("out", self.name + "_" + self.config["arch"] + "_" + self.config["bus-size"], self.config["mode"]) self.path_out = os.path.join("out", self.name + "_" + self.config["arch"] + "_" + self.config["bus-size"], self.config["mode"])
@@ -142,6 +144,9 @@ class Target:
self.path_build = os.path.join("build", self.config["compilator"]) self.path_build = os.path.join("build", self.config["compilator"])
def create_number_from_version_string(self, data): def create_number_from_version_string(self, data):
tmp_data = data.split("-")
if len(tmp_data) > 1:
data = tmp_data[0]
list = data.split(".") list = data.split(".")
if len(list) == 1: if len(list) == 1:
list.append("0") list.append("0")
@@ -528,9 +533,9 @@ class Target:
return return
if module.get_type() == 'BINARY' \ if module.get_type() == 'BINARY' \
or module.get_type() == 'BINARY_STAND_ALONE': or module.get_type() == 'BINARY_STAND_ALONE':
self.make_package_generic_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = True) self.make_package_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = True)
if module.get_type() == 'BINARY_SHARED': if module.get_type() == 'BINARY_SHARED':
self.make_package_generic_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = False) self.make_package_binary(pkg_name, pkg_properties, base_pkg_path, heritage_list, static = False)
if module.get_type() == 'PACKAGE': if module.get_type() == 'PACKAGE':
debug.info("Can not create package for package"); debug.info("Can not create package for package");
return return

View File

@@ -50,6 +50,8 @@ def remove_path_and_sub_path(path):
def remove_file(path): def remove_file(path):
if os.path.isfile(path): if os.path.isfile(path):
os.remove(path) os.remove(path)
elif os.path.islink(path):
os.remove(path)
def file_size(path): def file_size(path):
if not os.path.isfile(path): if not os.path.isfile(path):
@@ -91,6 +93,7 @@ def file_write_data(path, data, only_if_new=False):
if old_data == data: if old_data == data:
return return
#real write of data: #real write of data:
create_directory_of_file(path)
file = open(path, "w") file = open(path, "w")
file.write(data) file.write(data)
file.close() file.close()

View File

@@ -40,7 +40,7 @@ def get_output_type():
## ##
## @brief Commands for running gcc to link an executable. ## @brief Commands for running gcc to link an executable.
## ##
def link(file, binary, target, depancy, name, basic_path, static = False): def link(file, binary, target, depancy, flags, name, basic_path, static = False):
file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "bin") file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "bin")
debug.extreme_verbose("list files = " + str(depancy.src)) debug.extreme_verbose("list files = " + str(depancy.src))
list_static = [] list_static = []
@@ -99,9 +99,10 @@ def link(file, binary, target, depancy, name, basic_path, static = False):
lib_name = elem[len(lib_path)+len(target.prefix_lib)+1:-len(target.suffix_lib_dynamic)] lib_name = elem[len(lib_path)+len(target.prefix_lib)+1:-len(target.suffix_lib_dynamic)]
cmd.append("-L" + lib_path) cmd.append("-L" + lib_path)
cmd.append("-l" + lib_name) cmd.append("-l" + lib_name)
if len(list_dynamic) > 0: if target.name != "MacOs" \
cmd.append("-Wl,-R$ORIGIN/../lib/") and target.name != "Android":
pass if len(list_dynamic) > 0:
cmd.append("-Wl,-R$ORIGIN/../lib/")
except: except:
pass pass
try: try:

View File

@@ -38,7 +38,7 @@ def get_output_type():
## ##
## @brief Commands for running gcc to link a shared library. ## @brief Commands for running gcc to link a shared library.
## ##
def link(file, binary, target, depancy, name, basic_path): def link(file, binary, target, depancy, flags, name, basic_path):
file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "jar") file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "jar")
#create command Line #create command Line
cmd = [ cmd = [

View File

@@ -38,7 +38,7 @@ def get_output_type():
## ##
## @brief Commands for running gcc to link a shared library. ## @brief Commands for running gcc to link a shared library.
## ##
def link(file, binary, target, depancy, name, basic_path, static=False): def link(file, binary, target, depancy, flags, name, basic_path, static=False):
file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-shared") file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-shared")
list_static = [] list_static = []
list_dynamic = [] list_dynamic = []
@@ -91,7 +91,7 @@ def link(file, binary, target, depancy, name, basic_path, static=False):
lib_name = elem[len(lib_path)+len(target.prefix_lib)+1:-len(target.suffix_lib_dynamic)] lib_name = elem[len(lib_path)+len(target.prefix_lib)+1:-len(target.suffix_lib_dynamic)]
cmd.append("-L" + lib_path) cmd.append("-L" + lib_path)
cmd.append("-l" + lib_name) cmd.append("-l" + lib_name)
if target != "MacOs" \ if target.name != "MacOs" \
and target.name != "Android": and target.name != "Android":
if len(list_dynamic) > 0: if len(list_dynamic) > 0:
cmd.append("-Wl,-R$ORIGIN/../lib/") cmd.append("-Wl,-R$ORIGIN/../lib/")
@@ -101,6 +101,10 @@ def link(file, binary, target, depancy, name, basic_path, static=False):
cmd.append(flags["local"]["link"]) cmd.append(flags["local"]["link"])
except: except:
pass pass
try:
cmd.append(flags["export"]["link"])
except:
pass
try: try:
cmd.append(depancy.flags["link"]) cmd.append(depancy.flags["link"])
except: except:
@@ -123,9 +127,15 @@ def link(file, binary, target, depancy, name, basic_path, static=False):
# get the file size of the non strip file # get the file size of the non strip file
originSize = tools.file_size(file_dst); originSize = tools.file_size(file_dst);
debug.print_element("SharedLib(strip)", name, "", "") debug.print_element("SharedLib(strip)", name, "", "")
cmdLineStrip=tools.list_to_str([ if target.name == "MacOs":
target.strip, cmdLineStrip=tools.list_to_str([
file_dst]) target.strip,
"-u",
file_dst])
else:
cmdLineStrip=tools.list_to_str([
target.strip,
file_dst])
multiprocess.run_command(cmdLineStrip, store_output_file=file_warning) multiprocess.run_command(cmdLineStrip, store_output_file=file_warning)
# get the stip size of the binary # get the stip size of the binary
stripSize = tools.file_size(file_dst) stripSize = tools.file_size(file_dst)

View File

@@ -38,7 +38,7 @@ def get_output_type():
## ##
## @brief Commands for running ar. ## @brief Commands for running ar.
## ##
def link(file, binary, target, depancy, name, basic_path): def link(file, binary, target, depancy, flags, name, basic_path):
file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-static") file_src, file_dst, file_depend, file_cmd, file_warning = target.generate_file(binary, name, basic_path, file, "lib-static")
#$(Q)$(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $(PRIVATE_ALL_OBJECTS) #$(Q)$(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $(PRIVATE_ALL_OBJECTS)
cmd = [ cmd = [

View File

@@ -17,10 +17,12 @@ class System(system.System):
system.System.__init__(self) system.System.__init__(self)
# create some HELP: # create some HELP:
self.help="SDK: Android SDK basic interface java\n" self.help="SDK: Android SDK basic interface java\n"
# jar file:
jar_file_path=os.path.join(target.path_sdk, "platforms", "android-" + str(target.board_id), "android.jar")
# TODO : Check if the android sdk android.jar is present ... # TODO : Check if the android sdk android.jar is present ...
self.valid = True self.valid = True
# todo : create a searcher of the presence of the library: # todo : create a searcher of the presence of the library:
self.add_export_SRC(target.path_sdk + "/platforms/android-" + str(target.boardId) + "/android.jar") self.add_export_SRC(jar_file_path)
self.add_export_flag_LD("-ldl") self.add_export_flag_LD("-ldl")
self.add_export_flag_LD("-llog") self.add_export_flag_LD("-llog")
self.add_export_flag_LD("-landroid") self.add_export_flag_LD("-landroid")

View File

@@ -87,80 +87,96 @@ class Target(target.Target):
self.pkg_path_lib = "data/lib/armeabi" self.pkg_path_lib = "data/lib/armeabi"
self.pkg_path_license = "license" self.pkg_path_license = "license"
# board id at 15 is for android 4.0.3 and more ... (note: API 14 has been removed ...) # If the env variable is not define, find the newest version of the BOARD_ID (Note: 0: autofind)
self.boardId = 15 self.board_id = int(os.getenv('PROJECT_NDK_BOARD_ID', "0"))
self.global_flags_cc.append("-D__ANDROID_BOARD_ID__=" + str(self.boardId)) if self.board_id != 0:
# check if element existed :
if not os.path.isdir(self.path_sdk +"/platforms/android-" + str(self.board_id)):
debug.error("Specify PROJECT_NDK_BOARD_ID env variable and the BOARD_ID does not exit ... : " + str(self.board_id) + "==> auto-search")
self.board_id = 0
if self.board_id == 0:
debug.debug("Auto-search BOARD-ID")
for iii in reversed(range(0, 50)):
debug.debug("try: " + os.path.join(self.path_sdk, "platforms", "android-" + str(iii)))
if os.path.isdir(os.path.join(self.path_sdk, "platforms", "android-" + str(iii))):
debug.debug("Find BOARD-ID : " + str(iii))
self.board_id = iii
break;
if self.board_id == 0:
debug.error("Can not find BOARD-ID ==> update your android SDK")
self.global_flags_cc.append("-D__ANDROID_BOARD_ID__=" + str(self.board_id))
if arch == "armv5" or arch == "armv7": if arch == "armv5" or arch == "armv7":
self.global_include_cc.append("-I" + self.path_ndk +"/platforms/android-" + str(self.boardId) + "/arch-arm/usr/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "platforms", "android-" + str(self.board_id), "arch-arm", "usr", "include"))
elif arch == "mips": elif arch == "mips":
self.global_include_cc.append("-I" + self.path_ndk +"/platforms/android-" + str(self.boardId) + "/arch-mips/usr/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "platforms", "android-" + str(self.board_id), "arch-mips", "usr", "include"))
elif arch == "x86": elif arch == "x86":
self.global_include_cc.append("-I" + self.path_ndk +"/platforms/android-" + str(self.boardId) + "/arch-x86/usr/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "platforms", "android-" + str(self.board_id), "arch-x86", "usr", "include"))
if True: if True:
if self.config["compilator"] == "clang": if self.config["compilator"] == "clang":
if self.boardId < 21: if self.board_id < 21:
debug.error("Clang work only with the board wersion >= 21 : android 5.x.x") debug.error("Clang work only with the board wersion >= 21 : android 5.x.x")
self.global_flags_cc.append("-D__STDCPP_LLVM__") self.global_flags_cc.append("-D__STDCPP_LLVM__")
# llvm-libc++ : BSD | MIT # llvm-libc++ : BSD | MIT
self.global_include_cc.append("-gcc-toolchain " + self.path_ndk +"/sources/android/support/include") self.global_include_cc.append("-gcc-toolchain " + os.path.join(self.path_ndk, "sources", "android", "support", "include"))
self.global_include_cc.append("-I" + self.path_ndk +"/sources/android/support/include") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "android", "support", "include"))
self.global_include_cc.append("-I" + self.path_ndk +"/sources/cxx-stl/llvm-libc++/libcxx/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "cxx-stl", "llvm-libc++", "libcxx", "include"))
if arch == "armv5": if arch == "armv5":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/llvm-libc++/libcxx/libs/armeabi/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "llvm-libc++", "libcxx", "libs", "armeabi")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include"))
self.global_flags_ld.append( stdCppBasePath + "libc++_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libc++_static.a"))
elif arch == "armv7": elif arch == "armv7":
# The only one tested ... ==> but we have link error ... # The only one tested ... ==> but we have link error ...
self.global_flags_cc.append("-target armv7-none-linux-androideabi") self.global_flags_cc.append("-target armv7-none-linux-androideabi")
self.global_flags_cc.append("-march=armv7-a") self.global_flags_cc.append("-march=armv7-a")
self.global_flags_cc.append("-mfpu=vfpv3-d16") self.global_flags_cc.append("-mfpu=vfpv3-d16")
self.global_flags_cc.append("-mhard-float") self.global_flags_cc.append("-mhard-float")
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "llvm-libc++", "libs", "armeabi-v7a")
self.global_flags_ld.append( stdCppBasePath + "thumb/libc++_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "thumb", "libc++_static.a"))
self.global_flags_ld.append("-target armv7-none-linux-androideabi") self.global_flags_ld.append("-target armv7-none-linux-androideabi")
self.global_flags_ld.append("-Wl,--fix-cortex-a8") self.global_flags_ld.append("-Wl,--fix-cortex-a8")
self.global_flags_ld.append("-Wl,--no-warn-mismatch") self.global_flags_ld.append("-Wl,--no-warn-mismatch")
self.global_flags_ld.append("-lm_hard") self.global_flags_ld.append("-lm_hard")
elif arch == "mips": elif arch == "mips":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/llvm-libc++/libcxx/libs/mips/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "llvm-libc++", "libcxx", "libs", "mips")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath + "include"))
self.global_flags_ld.append( stdCppBasePath + "libc++_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath + "libc++_static.a"))
elif arch == "x86": elif arch == "x86":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/llvm-libc++/libcxx/libs/x86/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "llvm-libc++", "libcxx", "libs", "x86")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include"))
self.global_flags_ld.append( stdCppBasePath + "libc++_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libc++_static.a"))
else: else:
self.global_flags_cc.append("-D__STDCPP_GNU__") self.global_flags_cc.append("-D__STDCPP_GNU__")
# GPL v3 (+ exception link for gcc compilator) # GPL v3 (+ exception link for gcc compilator)
self.global_include_cc.append("-I" + self.path_ndk +"/sources/cxx-stl/gnu-libstdc++/" + gccVersion + "/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", gccVersion, "include"))
self.global_include_cc.append("-I" + self.path_ndk +"/sources/android/support/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "android", "support", "include"))
if arch == "armv5": if arch == "armv5":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/gnu-libstdc++/" + gccVersion + "/libs/armeabi/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", gccVersion, "libs", "armeabi")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include"))
self.global_flags_ld.append( stdCppBasePath + "thumb/libgnustl_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "thumb", "libgnustl_static.a"))
self.global_flags_ld.append( stdCppBasePath + "thumb/libsupc++.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "thumb", "libsupc++.a"))
elif arch == "armv7": elif arch == "armv7":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/gnu-libstdc++/" + gccVersion + "/libs/armeabi-v7a/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", gccVersion, "libs", "armeabi-v7a")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include"))
self.global_flags_ld.append( stdCppBasePath + "thumb/libgnustl_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "thumb", "libgnustl_static.a"))
self.global_flags_ld.append( stdCppBasePath + "thumb/libsupc++.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "thumb", "libsupc++.a"))
elif arch == "mips": elif arch == "mips":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/gnu-libstdc++/" + gccVersion + "/libs/mips/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", gccVersion, "libs", "mips")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include/"))
self.global_flags_ld.append( stdCppBasePath + "libgnustl_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libgnustl_static.a"))
self.global_flags_ld.append( stdCppBasePath + "libsupc++.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libsupc++.a"))
elif arch == "x86": elif arch == "x86":
stdCppBasePath = self.path_ndk +"/sources/cxx-stl/gnu-libstdc++/" + gccVersion + "/libs/x86/" stdCppBasePath = os.path.join(self.path_ndk, "sources", "cxx-stl", "gnu-libstdc++", gccVersion, "libs", "x86")
self.global_include_cc.append("-I" + stdCppBasePath + "include/") self.global_include_cc.append("-I" + os.path.join(stdCppBasePath, "include"))
self.global_flags_ld.append( stdCppBasePath + "libgnustl_static.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libgnustl_static.a"))
self.global_flags_ld.append( stdCppBasePath + "libsupc++.a") self.global_flags_ld.append( os.path.join(stdCppBasePath, "libsupc++.a"))
else : else :
self.global_include_cc.append("-I" + self.path_ndk +"/sources/cxx-stl/system/include/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "cxx-stl", "system", "include"))
self.global_include_cc.append("-I" + self.path_ndk +"/sources/cxx-stl/stlport/stlport/") self.global_include_cc.append("-I" + os.path.join(self.path_ndk, "sources", "cxx-stl", "stlport", "stlport"))
self.global_flags_ld.append(self.path_ndk +"/platforms/android-" + str(self.boardId) + "/arch-arm/usr/lib/libstdc++.a") self.global_flags_ld.append(os.path.join(self.path_ndk, "platforms", "android-" + str(self.board_id), "arch-arm", "usr", "lib", "libstdc++.a"))
self.global_sysroot = "--sysroot=" + self.path_ndk +"/platforms/android-" + str(self.boardId) + "/arch-arm" self.global_sysroot = "--sysroot=" + os.path.join(self.path_ndk, "platforms", "android-" + str(self.board_id), "arch-arm")
self.global_flags_cc.append("-D__ARM_ARCH_5__") self.global_flags_cc.append("-D__ARM_ARCH_5__")
self.global_flags_cc.append("-D__ARM_ARCH_5T__") self.global_flags_cc.append("-D__ARM_ARCH_5T__")
@@ -208,12 +224,19 @@ class Target(target.Target):
return True return True
return False return False
def convert_name_application(self, pkg_name):
value = pkg_name.lower()
value = value.replace(' ', '')
value = value.replace('-', '')
value = value.replace('_', '')
return value
""" """
def get_staging_path_data(self, binary_name): def get_staging_path_data(self, binary_name):
return self.get_staging_path(binary_name) + self.path_data return self.get_staging_path(binary_name) + self.path_data
""" """
def make_package_generic_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.info("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
@@ -266,16 +289,27 @@ class Target(target.Target):
pkg_name_application_name = pkg_name pkg_name_application_name = pkg_name
if self.config["mode"] == "debug": if self.config["mode"] == "debug":
pkg_name_application_name += "debug" pkg_name_application_name += "debug"
debug.info("ploppppp: " + str(pkg_properties))
# FINAL_path_JAVA_PROJECT # FINAL_path_JAVA_PROJECT
self.path_java_project = os.path.join(target_outpath, self.path_java_project = os.path.join(target_outpath,
"src", "src")
pkg_properties["COMPAGNY_TYPE"], if pkg_properties["COMPAGNY_TYPE"] != "":
pkg_properties["COMPAGNY_NAME2"], self.path_java_project = os.path.join(self.path_java_project,
pkg_properties["COMPAGNY_TYPE"])
if pkg_properties["COMPAGNY_NAME2"] != "":
self.path_java_project = os.path.join(self.path_java_project,
pkg_properties["COMPAGNY_NAME2"])
self.path_java_project = os.path.join(self.path_java_project,
pkg_name_application_name) pkg_name_application_name)
#FINAL_FILE_ABSTRACTION #FINAL_FILE_ABSTRACTION
self.file_final_abstraction = os.path.join(self.path_java_project, pkg_name_application_name + ".java") self.file_final_abstraction = os.path.join(self.path_java_project, pkg_name_application_name + ".java")
compleatePackageName = pkg_properties["COMPAGNY_TYPE"]+"."+pkg_properties["COMPAGNY_NAME2"]+"." + pkg_name_application_name compleatePackageName = ""
if pkg_properties["COMPAGNY_TYPE"] != "":
compleatePackageName += pkg_properties["COMPAGNY_TYPE"] + "."
if pkg_properties["COMPAGNY_NAME2"] != "":
compleatePackageName += pkg_properties["COMPAGNY_NAME2"] + "."
compleatePackageName += pkg_name_application_name
if "ADMOD_ID" in pkg_properties: if "ADMOD_ID" in pkg_properties:
pkg_properties["RIGHT"].append("INTERNET") pkg_properties["RIGHT"].append("INTERNET")
@@ -335,7 +369,7 @@ class Target(target.Target):
cmdLine = androidToolPath + "aapt p -f " \ cmdLine = androidToolPath + "aapt p -f " \
+ "-M " + target_outpath + "/AndroidManifest.xml " \ + "-M " + target_outpath + "/AndroidManifest.xml " \
+ "-F " + target_outpath + "/resources.res " \ + "-F " + target_outpath + "/resources.res " \
+ "-I " + self.path_sdk + "/platforms/android-" + str(self.boardId) + "/android.jar "\ + "-I " + self.path_sdk + "/platforms/android-" + str(self.board_id) + "/android.jar "\
+ "-S " + target_outpath + "/res/ " \ + "-S " + target_outpath + "/res/ " \
+ adModResoucepath \ + adModResoucepath \
+ "-J " + target_outpath + "/src/ " + "-J " + target_outpath + "/src/ "
@@ -360,7 +394,7 @@ class Target(target.Target):
cmdLine = "javac " \ cmdLine = "javac " \
+ "-d " + self.get_staging_path(pkg_name) + "/build/classes " \ + "-d " + self.get_staging_path(pkg_name) + "/build/classes " \
+ "-classpath " + self.path_sdk + "/platforms/android-" + str(self.boardId) + "/android.jar" \ + "-classpath " + self.path_sdk + "/platforms/android-" + str(self.board_id) + "/android.jar" \
+ adModJarFile + " " \ + adModJarFile + " " \
+ filesString \ + filesString \
+ self.file_final_abstraction + " " \ + self.file_final_abstraction + " " \

View File

@@ -82,6 +82,8 @@ class Target(target.Target):
self.pkg_path_lib = "lib" self.pkg_path_lib = "lib"
self.pkg_path_license = "license" self.pkg_path_license = "license"
# Disable capabiliteis to compile in shared mode
self.support_dynamic_link = False
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("------------------------------------------------------------------------")
@@ -109,23 +111,23 @@ class Target(target.Target):
# Resize all icon needed for Ios ... # Resize all icon needed for Ios ...
# TODO : Do not regenerate if source resource is not availlable # TODO : Do not regenerate if source resource is not availlable
# TODO : Add a colored background ... # TODO : Add a colored background ...
debug.print_element("pkg", "iTunesArtwork.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "iTunesArtwork.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork.png"), 512, 512) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork.png"), 512, 512)
debug.print_element("pkg", "iTunesArtwork@2x.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "iTunesArtwork@2x.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork@2x.png"), 1024, 1024) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "iTunesArtwork@2x.png"), 1024, 1024)
debug.print_element("pkg", "Icon-60@2x.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-60@2x.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-60@2x.png"), 120, 120) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-60@2x.png"), 120, 120)
debug.print_element("pkg", "Icon-76.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-76.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76.png"), 76, 76) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76.png"), 76, 76)
debug.print_element("pkg", "Icon-76@2x.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-76@2x.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76@2x.png"), 152, 152) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-76@2x.png"), 152, 152)
debug.print_element("pkg", "Icon-Small-40.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small-40.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40.png"), 40, 40) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40.png"), 40, 40)
debug.print_element("pkg", "Icon-Small-40@2x.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small-40@2x.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40@2x.png"), 80, 80) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small-40@2x.png"), 80, 80)
debug.print_element("pkg", "Icon-Small.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small.png"), 29, 29) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small.png"), 29, 29)
debug.print_element("pkg", "Icon-Small@2x.png", "<==", pkg_properties["ICON"]) debug.print_element("pkg", os.path.relpath(pkg_properties["ICON"]), "==>", "Icon-Small@2x.png")
image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small@2x.png"), 58, 58) image.resize(pkg_properties["ICON"], os.path.join(target_outpath, "Icon-Small@2x.png"), 58, 58)
## Create the info file: ## Create the info file:
@@ -177,9 +179,9 @@ class Target(target.Target):
data_file += " </array>\n" data_file += " </array>\n"
data_file += " \n" data_file += " \n"
data_file += " <key>CFBundleShortVersionString</key>\n" data_file += " <key>CFBundleShortVersionString</key>\n"
data_file += " <string>"+pkg_properties["VERSION"]+"</string>\n" data_file += " <string>"+tools.version_to_string(pkg_properties["VERSION"])+"</string>\n"
data_file += " <key>CFBundleVersion</key>\n" data_file += " <key>CFBundleVersion</key>\n"
data_file += " <string>"+pkg_properties["VERSION_CODE"]+"</string>\n" data_file += " <string>"+str(pkg_properties["VERSION_CODE"])+"</string>\n"
data_file += " \n" data_file += " \n"
data_file += " <key>CFBundleResourceSpecification</key>\n" data_file += " <key>CFBundleResourceSpecification</key>\n"
data_file += " <string>ResourceRules.plist</string>\n" data_file += " <string>ResourceRules.plist</string>\n"
@@ -312,8 +314,10 @@ class Target(target.Target):
# Must create the tarball of the application # Must create the tarball of the application
#cd $(TARGET_OUT_FINAL)/; tar -cf $(PROJECT_NAME).tar $(PROJECT_NAME).app #cd $(TARGET_OUT_FINAL)/; tar -cf $(PROJECT_NAME).tar $(PROJECT_NAME).app
#cd $(TARGET_OUT_FINAL)/; tar -czf $(PROJECT_NAME).tar.gz $(PROJECT_NAME).app #cd $(TARGET_OUT_FINAL)/; tar -czf $(PROJECT_NAME).tar.gz $(PROJECT_NAME).app
if self.sumulator == False: if self.sumulator == False:
if "APPLE_APPLICATION_IOS_ID" not in pkg_properties:
pkg_properties["APPLE_APPLICATION_IOS_ID"] = "00000000"
debug.warning("Missing package property : APPLE_APPLICATION_IOS_ID USE " + pkg_properties["APPLE_APPLICATION_IOS_ID"] + " ID ... ==> CAN NOT WORK ..." )
# Create the info file # Create the info file
tmpFile = open(os.path.join(target_outpath, pkg_name + ".xcent"), 'w') tmpFile = open(os.path.join(target_outpath, pkg_name + ".xcent"), 'w')
tmpFile.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n") tmpFile.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
@@ -321,15 +325,12 @@ class Target(target.Target):
tmpFile.write("<plist version=\"1.0\">\n") tmpFile.write("<plist version=\"1.0\">\n")
tmpFile.write(" <dict>\n") tmpFile.write(" <dict>\n")
tmpFile.write(" <key>application-identifier</key>\n") tmpFile.write(" <key>application-identifier</key>\n")
try: tmpFile.write(" <string>" + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "</string>\n")
tmpFile.write(" <string>" + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "</string>\n")
except:
debug.error("Missing package property : APPLE_APPLICATION_IOS_ID")
tmpFile.write(" <key>get-task-allow</key>\n") tmpFile.write(" <key>get-task-allow</key>\n")
tmpFile.write(" <true/>\n") tmpFile.write(" <true/>\n")
tmpFile.write(" <key>keychain-access-groups</key>\n") tmpFile.write(" <key>keychain-access-groups</key>\n")
tmpFile.write(" <array>\n") tmpFile.write(" <array>\n")
tmpFile.write(" <string>" + pkg_properties["APPLE_APPLICATION_IOS_ID"] + ".atriasoft.worddown</string>\n") tmpFile.write(" <string>" + pkg_properties["APPLE_APPLICATION_IOS_ID"] + "." + pkg_properties["COMPAGNY_TYPE"] + "." + pkg_properties["COMPAGNY_NAME2"] + "." + pkg_name + "</string>\n")
tmpFile.write(" </array>\n") tmpFile.write(" </array>\n")
tmpFile.write(" </dict>\n") tmpFile.write(" </dict>\n")
tmpFile.write("</plist>\n") tmpFile.write("</plist>\n")
@@ -339,21 +340,17 @@ class Target(target.Target):
debug.print_element("pkg(signed)", "pkg", "<==", "Signing application") debug.print_element("pkg(signed)", "pkg", "<==", "Signing application")
iosDevelopperKeyFile = ".iosKey.txt" iosDevelopperKeyFile = ".iosKey.txt"
if tools.file_size(iosDevelopperKeyFile) < 10: if tools.file_size(iosDevelopperKeyFile) < 10:
debug.error("To sign an application we need to have a signing key in the file '" + iosDevelopperKeyFile + "' \n it is represented like: 'iPhone Developer: Francis DUGENOUX (YRRQE5KGTH)'\n you can obtain it with : 'certtool y | grep \"Developer\"'") debug.warning("To sign an application we need to have a signing key in the file '" + iosDevelopperKeyFile + "' \n it is represented like: 'iPhone Developer: Francis DUGENOUX (YRRQE5KGTH)'\n you can obtain it with : 'certtool y | grep \"Developer\"'")
signatureKey = tools.file_read_data(iosDevelopperKeyFile) debug.warning("Can not be install ... not runnable")
signatureKey = re.sub('\n', '', signatureKey) else:
cmdLine = 'codesign --force --sign ' signatureKey = tools.file_read_data(iosDevelopperKeyFile)
# to get this key ; certtool y | grep "Developer" signatureKey = re.sub('\n', '', signatureKey)
cmdLine += ' "' + signatureKey + '" ' cmdLine = 'codesign --force --sign '
cmdLine += ' --entitlements ' + self.get_build_path(pkg_name) + '/worddown.xcent' # to get this key ; certtool y | grep "Developer"
cmdLine += ' ' + self.get_staging_path(pkg_name) cmdLine += ' "' + signatureKey + '" '
multiprocess.run_command(cmdLine) cmdLine += ' --entitlements ' + self.get_build_path(pkg_name) + '/worddown.xcent'
cmdLine += ' ' + self.get_staging_path(pkg_name)
# --force --sign "iPhone Developer: Edouard DUPIN (SDFGSDFGSDFG)" multiprocess.run_command(cmdLine)
# --resource-rules=/Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Products/Debug-iphoneos/worddown.app/ResourceRules.plist
# --entitlements /Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Intermediates/worddown.build/Debug-iphoneos/worddown.build/worddown.xcent
# /Users/edouarddupin/Library/Developer/Xcode/DerivedData/worddown-cmuvjchgtiteexdiacyqoexsyadg/Build/Products/Debug-iphoneos/worddown.app
def createRandomNumber(self, len): def createRandomNumber(self, len):
out = "" out = ""

View File

@@ -73,7 +73,7 @@ class Target(target.Target):
* *--> YY * *--> YY
*--> sources *--> sources
""" """
def make_package_generic_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.info("Generate generic '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
@@ -94,221 +94,50 @@ class Target(target.Target):
self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static) self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
## create the package: ## create the package:
debug.debug("package : " + 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")
tools.create_directory_of_file(self.get_final_path()) tools.create_directory_of_file(self.get_final_path())
tools.copy_file(self.get_staging_path(pkg_name) + "/" + pkg_name + ".app.tar.gz", self.get_final_path() + "/" + pkg_name + ".app.gpkg") tools.copy_file(os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app.tar.gz"), os.path.join(self.get_final_path(), pkg_name + ".app.gpkg"))
def make_package_debian(self, pkg_name, pkg_properties, base_pkg_path, heritage_list):
# http://alp.developpez.com/tutoriels/debian/creer-paquet/
debianpkg_name = re.sub("_", "-", pkg_name)
debug.debug("------------------------------------------------------------------------")
debug.info("Generate package '" + debianpkg_name + "' v"+pkg_properties["VERSION"])
debug.debug("------------------------------------------------------------------------")
self.get_staging_path(pkg_name)
target_outpathDebian = self.get_staging_path(pkg_name) + "/DEBIAN/"
finalFileControl = target_outpathDebian + "control"
finalFilepostRm = target_outpathDebian + "postrm"
# create the paths :
tools.create_directory_of_file(finalFileControl)
tools.create_directory_of_file(finalFilepostRm)
## Create the control file
tools.create_directory_of_file(finalFileControl)
tmpFile = open(finalFileControl, 'w')
tmpFile.write("Package: " + debianpkg_name + "\n")
tmpFile.write("Version: " + pkg_properties["VERSION"] + "\n")
tmpFile.write("Section: " + self.generate_list_separate_coma(pkg_properties["SECTION"]) + "\n")
tmpFile.write("Priority: " + pkg_properties["PRIORITY"] + "\n")
tmpFile.write("Architecture: all\n")
tmpFile.write("Depends: bash\n")
tmpFile.write("Maintainer: " + self.generate_list_separate_coma(pkg_properties["MAINTAINER"]) + "\n")
tmpFile.write("Description: " + pkg_properties["DESCRIPTION"] + "\n")
tmpFile.write("\n")
tmpFile.flush()
tmpFile.close()
## Create the PostRm
tmpFile = open(finalFilepostRm, 'w')
tmpFile.write("#!/bin/bash\n")
tmpFile.write("touch ~/." + pkg_name + "\n")
if pkg_name != "":
tmpFile.write("touch ~/.local/share/" + pkg_name + "\n")
tmpFile.write("rm -r ~/.local/share/" + pkg_name + "\n")
tmpFile.write("\n")
tmpFile.flush()
tmpFile.close()
## Enable Execution in script
os.chmod(finalFilepostRm, stat.S_IRWXU + stat.S_IRGRP + stat.S_IXGRP + stat.S_IROTH + stat.S_IXOTH);
## Readme donumentation
readmeFileDest = self.get_staging_path(pkg_name) + "/usr/share/doc/"+ debianpkg_name + "/README"
tools.create_directory_of_file(readmeFileDest)
if os.path.exists(base_pkg_path + "/os-Linux/README")==True:
tools.copy_file(base_pkg_path + "/os-Linux/README", readmeFileDest)
elif os.path.exists(base_pkg_path + "/README")==True:
tools.copy_file(base_pkg_path + "/README", readmeFileDest)
elif os.path.exists(base_pkg_path + "/README.md")==True:
tools.copy_file(base_pkg_path + "/README.md", readmeFileDest)
else:
debug.info("no file 'README', 'README.md' or 'os-Linux/README' ==> generate an empty one")
tmpFile = open(readmeFileDest, 'w')
tmpFile.write("No documentation for " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
## licence file
license_file_dest = self.get_staging_path(pkg_name) + "/usr/share/doc/"+ debianpkg_name + "/copyright"
tools.create_directory_of_file(license_file_dest)
if os.path.exists(base_pkg_path + "/license.txt")==True:
tools.copy_file(base_pkg_path + "/license.txt", license_file_dest)
else:
debug.info("no file 'license.txt' ==> generate an empty one")
tmpFile = open(license_file_dest, 'w')
tmpFile.write("No license define by the developper for " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
##changeLog file
change_log_file_dest = self.get_staging_path(pkg_name) + "/usr/share/doc/"+ debianpkg_name + "/changelog"
tools.create_directory_of_file(change_log_file_dest)
if os.path.exists(base_pkg_path + "/changelog")==True:
tools.copy_file(base_pkg_path + "/changelog", change_log_file_dest)
else:
debug.info("no file 'changelog' ==> generate an empty one")
tmpFile = open(change_log_file_dest, 'w')
tmpFile.write("No changelog data " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
## create the package :
debug.debug("package : " + self.get_staging_path(pkg_name) + "/" + debianpkg_name + ".deb")
os.system("cd " + self.get_staging_path("") + " ; dpkg-deb --build " + pkg_name)
tools.create_directory_of_file(self.get_final_path())
tools.copy_file(self.get_staging_path("") + "/" + pkg_name + self.suffix_package, self.get_final_path() + "/" + pkg_name + self.suffix_package)
def install_package(self, pkg_name): def install_package(self, pkg_name):
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
debug.info("Install package '" + pkg_name + "'") debug.info("Install package '" + pkg_name + "'")
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
os.system("sudo dpkg -i " + self.get_final_path() + "/" + pkg_name + self.suffix_package) # this is temporary ... Will call:
if False:
os.system("lutin-pkg -i " + os.path.join(self.get_final_path(), + pkg_name + ".app.gpkg"))
else:
#Copy directly from staging path:
appl_path = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app")
target_path = os.path.join(os.path.expanduser("~"), ".local", "application", pkg_name + ".app")
target_bin_path = os.path.join(os.path.expanduser("~"), ".local", "application", pkg_name + ".app", "bin", pkg_name)
target_bin_link = os.path.join(os.path.expanduser("~"), ".local", "application", pkg_name)
# remove output path:
tools.remove_path_and_sub_path(target_path)
# remove executable link version:
tools.remove_file(target_bin_link)
# copy result:
tools.copy_anything(appl_path, target_path, recursive=True)
# create synbolic link:
debug.info("kkk " + "ln -s " + target_bin_path + " " + target_bin_link)
os.symlink(target_bin_path, target_bin_link)
def un_install_package(self, pkg_name): def un_install_package(self, pkg_name):
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
debug.info("Un-Install package '" + pkg_name + "'") debug.info("Un-Install package '" + pkg_name + "'")
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")
os.system("sudo dpkg -r " + self.get_final_path() + "/" + pkg_name + self.suffix_package) # this is temporary ... Will call:
if False:
os.system("lutin-pkg -r " + pkg_name)
else:
#Copy directly from staging path:
target_path = os.path.join(os.path.expanduser("~"), ".local", "application", pkg_name + ".app")
target_bin_link = os.path.join(os.path.expanduser("~"), ".local", "application", pkg_name)
# remove output path:
tools.remove_path_and_sub_path(target_path)
# remove executable link version:
tools.remove_file(target_bin_link)
"""
.local/application
*--> applName -> applName.app/bin/applName
*--> applName.app
*--> appl_description.txt
*--> appl_name.txt
*--> changelog.txt
*--> copyright.txt
*--> readme.txt
*--> version.txt
*--> website.txt
*--> icon.png
*--> bin
* *--> applName
*--> doc
* *--> applName
*--> lib
* *--> XX.so
* *--> YY.so
*--> license
* *--> applName.txt
* *--> libXX.txt
* *--> libYY.txt
*--> man
*--> share
* *--> applName
* *--> XX
* *--> YY
*--> sources
"""
def make_package_generic(self, pkg_name, pkg_properties, base_pkg_path, heritage_list):
debug.warning("heritage for " + str(pkg_name) + ":")
for heritage in heritage_list.list_heritage:
debug.warning("heritage .... " + str(heritage.name) + " : " + str(heritage.depends))
debianpkg_name = re.sub("_", "-", pkg_name)
debug.debug("------------------------------------------------------------------------")
debug.info("Generate generic '" + debianpkg_name + "' v"+pkg_properties["VERSION"])
debug.debug("------------------------------------------------------------------------")
target_outpath = self.get_staging_path(pkg_name) + "/edn.app/"
tools.create_directory_of_file(target_outpath)
## Create version file
tmpFile = open(target_outpath + "/version.txt", 'w')
tmpFile.write(pkg_properties["VERSION"])
tmpFile.flush()
tmpFile.close()
## Create maintainer file
tmpFile = open(target_outpath + "/maintainer.txt", 'w')
tmpFile.write(self.generate_list_separate_coma(pkg_properties["MAINTAINER"]))
tmpFile.flush()
tmpFile.close()
## Create appl_name file
tmpFile = open(target_outpath + "/appl_name.txt", 'w')
tmpFile.write("en_EN:" + pkg_properties["NAME"])
tmpFile.flush()
tmpFile.close()
## Create appl_description file
tmpFile = open(target_outpath + "/appl_description.txt", 'w')
tmpFile.write("en_EN:" + pkg_properties["DESCRIPTION"])
tmpFile.flush()
tmpFile.close()
## Create Readme file
readmeFileDest = target_outpath + "/readme.txt"
if os.path.exists(base_pkg_path + "/os-Linux/README")==True:
tools.copy_file(base_pkg_path + "/os-Linux/README", readmeFileDest)
elif os.path.exists(base_pkg_path + "/README")==True:
tools.copy_file(base_pkg_path + "/README", readmeFileDest)
elif os.path.exists(base_pkg_path + "/README.md")==True:
tools.copy_file(base_pkg_path + "/README.md", readmeFileDest)
else:
debug.info("no file 'README', 'README.md' or 'os-Linux/README' ==> generate an empty one")
tmpFile = open(readmeFileDest, 'w')
tmpFile.write("No documentation for " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
## Create licence file
license_file_dest = target_outpath + "/license/"+ debianpkg_name + ".txt"
tools.create_directory_of_file(license_file_dest)
if os.path.exists(base_pkg_path + "/license.txt")==True:
tools.copy_file(base_pkg_path + "/license.txt", license_file_dest)
else:
debug.info("no file 'license.txt' ==> generate an empty one")
tmpFile = open(license_file_dest, 'w')
tmpFile.write("No license define by the developper for " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
## Create changeLog file
change_log_file_dest = target_outpath + "/changelog.txt"
if os.path.exists(base_pkg_path + "/changelog") == True:
tools.copy_file(base_pkg_path + "/changelog", change_log_file_dest)
else:
debug.info("no file 'changelog' ==> generate an empty one")
tmpFile = open(change_log_file_dest, 'w')
tmpFile.write("No changelog data " + pkg_name + "\n")
tmpFile.flush()
tmpFile.close()
## copy share path
#debug.info("plop:" + self.get_staging_path(pkg_name) + self.path_data)
if os.path.exists(self.get_staging_path(pkg_name) + self.path_data) == True:
tools.copy_anything(self.get_staging_path(pkg_name) + self.path_data + "/*", target_outpath + self.path_data, recursive=True)
## Create binary path:
bin_path = target_outpath + self.path_bin
#tools.create_directory_of_file(bin_path)
tools.copy_anything(self.get_staging_path(pkg_name) + self.path_bin + "/*",
bin_path)
## create the package:
debug.debug("package : " + self.get_staging_path(pkg_name) + "/" + debianpkg_name + ".app.pkg")
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")
tools.create_directory_of_file(self.get_final_path())
tools.copy_file(self.get_staging_path(pkg_name) + "/" + pkg_name + ".app.tar.gz", self.get_final_path() + "/" + pkg_name + ".app.gpkg")

View File

@@ -110,7 +110,6 @@ class Target(target.Target):
data_file = "#!/bin/bash\n" data_file = "#!/bin/bash\n"
data_file += "# Simply open the real application in the correct way (a link does not work ...)\n" data_file += "# Simply open the real application in the correct way (a link does not work ...)\n"
data_file += "/Applications/" + pkg_name + ".app/Contents/MacOS/" + pkg_name + " $*\n" data_file += "/Applications/" + pkg_name + ".app/Contents/MacOS/" + pkg_name + " $*\n"
#tmpFile.write("open -n /Applications/edn.app --args -AppCommandLineArg $*\n")
tools.file_write_data(os.path.join(target_outpath, "shell", pkg_name), tools.file_write_data(os.path.join(target_outpath, "shell", pkg_name),
data_file, data_file,
only_if_new=True) only_if_new=True)
@@ -128,8 +127,8 @@ class Target(target.Target):
debug.info("disk image: " + output_file_name) debug.info("disk image: " + output_file_name)
## user information: ## user information:
debug.info("You can have an shell interface by executing : ") #debug.info("You can have an shell interface by executing : ")
debug.info(" sudo cp " + shell_file_name + " /usr/local/bin") #debug.info(" sudo cp " + shell_file_name + " /usr/local/bin")
def install_package(self, pkg_name): def install_package(self, pkg_name):
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")

View File

@@ -50,11 +50,6 @@ class Target(target.Target):
"-static-libstdc++", "-static-libstdc++",
"-static"]) "-static"])
#self.path_bin=""
#self.path_lib="lib"
#self.path_data="data"
#self.path_doc="doc"
self.pkg_path_data = "data" self.pkg_path_data = "data"
self.pkg_path_bin = "" self.pkg_path_bin = ""
self.pkg_path_lib = "lib" self.pkg_path_lib = "lib"
@@ -70,7 +65,7 @@ class Target(target.Target):
def get_staging_path_data(self, binary_name, heritage_list): def get_staging_path_data(self, binary_name, heritage_list):
return self.get_staging_path(binary_name) + self.path_data return self.get_staging_path(binary_name) + self.path_data
def make_package_generic_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.info("Generate package '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
debug.debug("------------------------------------------------------------------------") debug.debug("------------------------------------------------------------------------")

View File

@@ -7,8 +7,8 @@ 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='0.7.0', version='0.7.10',
description='Lutin generic builder', 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',
author='Edouard DUPIN', author='Edouard DUPIN',
@@ -19,19 +19,21 @@ setup(name='lutin',
'lutin/z_system', 'lutin/z_system',
'lutin/z_target'], 'lutin/z_target'],
classifiers=[ classifiers=[
'Development Status :: 3 - Alpha', 'Development Status :: 4 - Beta',
'License :: OSI Approved :: Apache Software License', 'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python', 'Programming Language :: Python',
'Topic :: Software Development :: Compilers', 'Topic :: Software Development :: Compilers',
], ],
keywords='builder c++ c android ios macos makefile cmake', keywords='builder c++ c android ios macos makefile cmake',
scripts=['bin/lutin'], scripts=['bin/lutin'],
data_file=[ # Does not work on MacOs
('/etc/bash_completion.d', ['bash-autocompletion/lutin']), #data_file=[
], # ('/etc/bash_completion.d', ['bash-autocompletion/lutin']),
#],
include_package_data = True, include_package_data = True,
zip_safe=False) zip_safe=False)
#To developp: ./setup.py install/develop #To developp: sudo ./setup.py install
# sudo ./setup.py develop
#TO register all in pip: ./setup.py register sdist upload #TO register all in pip: ./setup.py register sdist upload

View File

@@ -0,0 +1,22 @@
#!/usr/bin/python
import lutin.module as module
import lutin.tools as tools
import lutin.debug as debug
import os
def get_type():
return "BINARY"
def get_desc():
return "Text C compilation"
def create(target, module_name):
my_module = module.Module(__file__, module_name, get_type())
my_module.add_extra_compile_flags()
my_module.add_src_file([
'test.c'
])
if target.name=="Android":
my_module.compile_version("c", 1999)
return my_module

6
test/test-c/test.c Normal file
View File

@@ -0,0 +1,6 @@
#include <stdio.h>
int main(int _argc, char* _argv[]) {
printf("Hello World\n");
return 0;
}