[DEV] add base of emscripten build for firefox test
This commit is contained in:
parent
156abe3533
commit
92a0e5198c
@ -888,7 +888,6 @@ class Module:
|
||||
target.make_package(self._name, self._package_prop, os.path.join(self._origin_path, ".."), self._sub_heritage_list)
|
||||
else:
|
||||
target.make_package(self._name, self._package_prop, os.path.join(self._origin_path, ".."), self._sub_heritage_list)
|
||||
|
||||
# return local dependency ...
|
||||
return copy.deepcopy(self._sub_heritage_list)
|
||||
|
||||
|
@ -923,6 +923,18 @@ class Target:
|
||||
tools.copy_file(path_src,
|
||||
path_dst,
|
||||
in_list=copy_list)
|
||||
try:
|
||||
path_src = self.get_build_file_bin(pkg_name)
|
||||
path_src = path_src[:len(path_src)-4] + "js"
|
||||
path_dst = os.path.join(path_package_bin, pkg_name + self.suffix_binary2)
|
||||
debug.verbose("path_dst: " + str(path_dst))
|
||||
tools.copy_file(path_src,
|
||||
path_dst,
|
||||
in_list=copy_list)
|
||||
except:
|
||||
debug.extreme_verbose("can not find : " + path_src)
|
||||
pass
|
||||
|
||||
#real copy files
|
||||
ret_copy = tools.copy_list(copy_list)
|
||||
ret_remove = False
|
||||
|
229
lutin/z_target/lutinTarget_Web.py
Normal file
229
lutin/z_target/lutinTarget_Web.py
Normal file
@ -0,0 +1,229 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
##
|
||||
## @author Edouard DUPIN
|
||||
##
|
||||
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||
##
|
||||
## @license APACHE v2.0 (see license file)
|
||||
##
|
||||
|
||||
from lutin import debug
|
||||
from lutin import target
|
||||
from lutin import tools
|
||||
from lutin import env
|
||||
import os
|
||||
import stat
|
||||
import re
|
||||
from lutin import host
|
||||
from lutin import depend
|
||||
from lutin import zip
|
||||
from lutin import multiprocess
|
||||
import lutinTarget_Linux
|
||||
|
||||
|
||||
class Target(lutinTarget_Linux.Target):
|
||||
def __init__(self, config, sub_name=[]):
|
||||
lutinTarget_Linux.Target.__init__(self, config, ["Web"] + sub_name)
|
||||
|
||||
self.cross ="/home/heero/dev/perso/emsdk_portable/emscripten/master/em"
|
||||
debug.debug("== Target='em'");
|
||||
self.java = "javac"
|
||||
self.javah = "javah"
|
||||
self.jar = "jar"
|
||||
self.ar = self.cross + "ar"
|
||||
self.ranlib = self.cross + "ranlib"
|
||||
self.cc = self.cross + "cc"
|
||||
self.xx = self.cross + "++"
|
||||
self.ar = self.cross + "ar"
|
||||
|
||||
self.xx_version = [0,0,0]
|
||||
self.ld = self.cross + "ld"
|
||||
self.nm = self.cross + "nm"
|
||||
self.strip = self.cross + "strip"
|
||||
self.dlltool = self.cross + "dlltool"
|
||||
self._update_path_tree()
|
||||
|
||||
self.stdlib_name_libgcc = ""
|
||||
self.stdlib_name_libsupc = "";
|
||||
self.suffix_binary = '.html'
|
||||
self.suffix_binary2 = '.js'
|
||||
|
||||
self.pkg_path_bin = ""
|
||||
|
||||
# Disable capabiliteis to compile in shared mode
|
||||
self.support_dynamic_link = False
|
||||
# create temporary file:
|
||||
self._file_data_tmp = os.path.join(self.get_build_path_temporary_generate(""), "tmp_file_data.zip")
|
||||
tools.file_write_data(self._file_data_tmp, "coucou", only_if_new=True)
|
||||
# add default file (need to generate a empty file to add it before loading:
|
||||
self.add_flag("link", [
|
||||
"--preload-file " + self._file_data_tmp,
|
||||
#" -s FULL_ES2=1 "
|
||||
])
|
||||
# in the output.js this generate a section '{"audio": 0, "start": 0, "crunched": 0, "end": 6, "filename": "/out/Web_x86_64/debug/build/gcc/generate/tmp_file_data.zip"}], "remote_package_size": 6' ==> that will be replaced by the corretc data in the file 'module.data'
|
||||
|
||||
"""
|
||||
.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_binary(self, pkg_name, pkg_properties, base_pkg_path, heritage_list, static):
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
debug.debug("-- Generate generic '" + pkg_name + "' v" + tools.version_to_string(pkg_properties["VERSION"]))
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
#output path
|
||||
target_outpath = os.path.join(self.get_staging_path(pkg_name, tmp=True), pkg_name + ".app")
|
||||
tools.create_directory_of_file(target_outpath)
|
||||
|
||||
## Create share datas:
|
||||
ret_share = self.make_package_binary_data(target_outpath, "zz_generic_zz", base_pkg_path, heritage_list, static)
|
||||
|
||||
## copy binary files:
|
||||
ret_bin = self.make_package_binary_bin(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||
|
||||
## Create libraries:
|
||||
ret_lib = self.make_package_binary_lib(target_outpath, pkg_name, base_pkg_path, heritage_list, static)
|
||||
|
||||
## Create generic files:
|
||||
ret_file = self.make_package_generic_files(target_outpath, pkg_properties, pkg_name, base_pkg_path, heritage_list, static)
|
||||
|
||||
## end of the package generation
|
||||
build_package_path_done = os.path.join(self.get_build_path(pkg_name), "generatePackageDone.txt")
|
||||
#Check date between the current file "list of action to generate package and the end of package generation
|
||||
need_generate_package = depend.need_re_package(build_package_path_done, [__file__], True)
|
||||
|
||||
## create the package:
|
||||
if ret_share \
|
||||
or ret_bin \
|
||||
or ret_lib \
|
||||
or ret_file \
|
||||
or need_generate_package or True:
|
||||
# Zip the data
|
||||
debug.print_element("zip", "data.zip", "<==", os.path.join(self.get_staging_path(pkg_name, tmp=True), pkg_name + ".app/share/*"))
|
||||
zip_path = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", pkg_name + ".data")
|
||||
zip.create_zip([
|
||||
self.get_staging_path(pkg_name, tmp=True) + "/" + pkg_name + ".app/share/",
|
||||
target_outpath + "/pkg"
|
||||
], zip_path)
|
||||
# copy if needed the binary:
|
||||
tools.copy_file(
|
||||
os.path.join(self.get_staging_path(pkg_name, tmp=True), pkg_name + ".app", pkg_name + self.suffix_binary),
|
||||
os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", pkg_name + self.suffix_binary),
|
||||
force_identical=True)
|
||||
|
||||
# patch the .js file to update the new real data ...
|
||||
js_file_data = tools.file_read_data(os.path.join(self.get_staging_path(pkg_name, tmp=True), pkg_name + ".app", pkg_name + self.suffix_binary2))
|
||||
data_to_replace = '"end": 6, "filename": "/' + os.path.relpath(self._file_data_tmp) + '"}], "remote_package_size": 6'
|
||||
data_size = str(tools.file_size(zip_path))
|
||||
replace_with = '"end": ' + data_size + ', "filename": "/data.zip"}], "remote_package_size": ' + data_size
|
||||
debug.print_element("js", pkg_name + ".data", "<==", "correct zip name and data")
|
||||
tools.file_write_data(os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", pkg_name + self.suffix_binary2),
|
||||
js_file_data.replace(data_to_replace, replace_with),
|
||||
only_if_new = True)
|
||||
|
||||
zip_path_final = os.path.join(self.get_final_path(), pkg_name + ".data")
|
||||
# generate deployed zip (for user)
|
||||
debug.print_element("zip", pkg_name + ".zip", "<==", self.get_staging_path(pkg_name), pkg_name + ".zip")
|
||||
zip.create_zip_file([
|
||||
zip_path,
|
||||
os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", pkg_name + self.suffix_binary)
|
||||
],
|
||||
pkg_name + ".app",
|
||||
zip_path_final)
|
||||
|
||||
tools.file_write_data(build_package_path_done, "done...")
|
||||
## create the package:
|
||||
"""
|
||||
if ret_share \
|
||||
or ret_bin \
|
||||
or ret_lib \
|
||||
or ret_file \
|
||||
or need_generate_package:
|
||||
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")
|
||||
#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(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"))
|
||||
# package is done corectly ...
|
||||
tools.file_write_data(build_package_path_done, "done...")
|
||||
"""
|
||||
|
||||
def install_package(self, pkg_name):
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
debug.info("-- Install package '" + pkg_name + "'")
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
# 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):
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
debug.info("-- Un-Install package '" + pkg_name + "'")
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
# 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)
|
||||
|
||||
def run(self, pkg_name, option_list):
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
debug.info("-- Run package '" + pkg_name + "' + option: " + str(option_list))
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
appl_path = os.path.join(self.get_staging_path(pkg_name), pkg_name + ".app", pkg_name + ".html")
|
||||
cmd = "firefox " + appl_path + " "
|
||||
for elem in option_list:
|
||||
cmd += elem + " "
|
||||
multiprocess.run_command_no_lock_out(cmd)
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
debug.info("-- Run package '" + pkg_name + "' Finished")
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user