[DEV] try to create generic package
This commit is contained in:
parent
ca67cb4c26
commit
10c0f98cef
@ -102,10 +102,18 @@ class Target:
|
|||||||
self.global_flags_ld.append("-ftest-coverage")
|
self.global_flags_ld.append("-ftest-coverage")
|
||||||
|
|
||||||
self.update_folder_tree()
|
self.update_folder_tree()
|
||||||
|
"""
|
||||||
self.folder_bin="/usr/bin"
|
self.folder_bin="/usr/bin"
|
||||||
self.folder_lib="/usr/lib"
|
self.folder_lib="/usr/lib"
|
||||||
self.folder_data="/usr/share"
|
self.folder_data="/usr/share"
|
||||||
self.folder_doc="/usr/share/doc"
|
self.folder_doc="/usr/share/doc"
|
||||||
|
"""
|
||||||
|
self.folder_bin="/bin"
|
||||||
|
self.folder_lib="/lib"
|
||||||
|
self.folder_data="/share"
|
||||||
|
self.folder_doc="/doc"
|
||||||
|
|
||||||
|
|
||||||
self.build_done=[]
|
self.build_done=[]
|
||||||
self.build_tree_done=[]
|
self.build_tree_done=[]
|
||||||
self.module_list=[]
|
self.module_list=[]
|
||||||
|
@ -11,6 +11,7 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import errno
|
import errno
|
||||||
import fnmatch
|
import fnmatch
|
||||||
|
import stat
|
||||||
# Local import
|
# Local import
|
||||||
from . import debug
|
from . import debug
|
||||||
from . import depend
|
from . import depend
|
||||||
@ -96,7 +97,7 @@ def add_prefix(prefix,list):
|
|||||||
result.append(prefix+elem)
|
result.append(prefix+elem)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def copy_file(src, dst, cmd_file=None, force=False):
|
def copy_file(src, dst, cmd_file=None, force=False, executable=False):
|
||||||
if os.path.exists(src) == False:
|
if os.path.exists(src) == False:
|
||||||
debug.error("Request a copy a file that does not existed : '" + src + "'")
|
debug.error("Request a copy a file that does not existed : '" + src + "'")
|
||||||
cmd_line = "copy \"" + src + "\" \"" + dst + "\""
|
cmd_line = "copy \"" + src + "\" \"" + dst + "\""
|
||||||
@ -106,22 +107,33 @@ def copy_file(src, dst, cmd_file=None, force=False):
|
|||||||
debug.print_element("copy file", src, "==>", dst)
|
debug.print_element("copy file", src, "==>", dst)
|
||||||
create_directory_of_file(dst)
|
create_directory_of_file(dst)
|
||||||
shutil.copyfile(src, dst)
|
shutil.copyfile(src, dst)
|
||||||
|
if executable == True:
|
||||||
|
os.chmod(dst, stat.S_IRWXU + stat.S_IRGRP + stat.S_IXGRP + stat.S_IROTH + stat.S_IXOTH);
|
||||||
store_command(cmd_line, cmd_file)
|
store_command(cmd_line, cmd_file)
|
||||||
|
|
||||||
|
|
||||||
def copy_anything(src, dst):
|
def copy_anything(src, dst, recursive = False, executable=False):
|
||||||
|
debug.verbose(" copy anything : '" + str(src) + "'")
|
||||||
|
debug.verbose(" to : '" + str(dst) + "'")
|
||||||
tmpPath = os.path.dirname(os.path.realpath(src))
|
tmpPath = os.path.dirname(os.path.realpath(src))
|
||||||
tmpRule = os.path.basename(src)
|
tmpRule = os.path.basename(src)
|
||||||
|
debug.verbose(" " + str(tmpPath) + ":")
|
||||||
for root, dirnames, filenames in os.walk(tmpPath):
|
for root, dirnames, filenames in os.walk(tmpPath):
|
||||||
debug.verbose(" root='" + str(root) + "' dir='" + str(dirnames) + "' filenames=" + str(filenames))
|
deltaRoot = root[len(tmpPath):]
|
||||||
|
if recursive == False and deltaRoot != "":
|
||||||
|
return
|
||||||
|
debug.verbose(" root='" + str(deltaRoot) + "'") # dir='" + str(dirnames) + "' filenames=" + str(filenames))
|
||||||
tmpList = filenames
|
tmpList = filenames
|
||||||
if len(tmpRule)>0:
|
if len(tmpRule)>0:
|
||||||
tmpList = fnmatch.filter(filenames, tmpRule)
|
tmpList = fnmatch.filter(filenames, tmpRule)
|
||||||
# Import the module :
|
# Import the module :
|
||||||
for cycleFile in tmpList:
|
for cycleFile in tmpList:
|
||||||
#for cycleFile in filenames:
|
#for cycleFile in filenames:
|
||||||
debug.verbose("Might copy : '" + tmpPath+cycleFile + "' ==> '" + dst + "'")
|
debug.verbose(" '" + cycleFile + "'")
|
||||||
copy_file(tmpPath+"/"+cycleFile, dst+"/"+cycleFile)
|
debug.extreme_verbose("Might copy : '" + tmpPath + "/" + deltaRoot + "/" + cycleFile + "' ==> '" + dst + "'")
|
||||||
|
copy_file(tmpPath + "/" + deltaRoot + "/" + cycleFile,
|
||||||
|
dst + "/" + deltaRoot + "/" + cycleFile,
|
||||||
|
executable=True)
|
||||||
|
|
||||||
|
|
||||||
def copy_anything_target(target, src, dst):
|
def copy_anything_target(target, src, dst):
|
||||||
|
@ -14,6 +14,7 @@ import os
|
|||||||
import stat
|
import stat
|
||||||
import re
|
import re
|
||||||
from lutin import host
|
from lutin import host
|
||||||
|
from lutin import multiprocess
|
||||||
|
|
||||||
class Target(target.Target):
|
class Target(target.Target):
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
@ -46,7 +47,13 @@ class Target(target.Target):
|
|||||||
result += elem
|
result += elem
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def make_package(self, pkgName, pkgProperties, basePkgPath):
|
def make_package(self, pkgName, pkgProperties, basePkgPath, type="generic"):
|
||||||
|
if type == "debian":
|
||||||
|
self.make_package_debian(pkgName, pkgProperties, basePkgPath)
|
||||||
|
elif type == "generic":
|
||||||
|
self.make_package_generic(pkgName, pkgProperties, basePkgPath)
|
||||||
|
|
||||||
|
def make_package_debian(self, pkgName, pkgProperties, basePkgPath):
|
||||||
# http://alp.developpez.com/tutoriels/debian/creer-paquet/
|
# http://alp.developpez.com/tutoriels/debian/creer-paquet/
|
||||||
debianPkgName = re.sub("_", "-", pkgName)
|
debianPkgName = re.sub("_", "-", pkgName)
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
@ -139,3 +146,117 @@ class Target(target.Target):
|
|||||||
debug.info("Un-Install package '" + pkgName + "'")
|
debug.info("Un-Install package '" + pkgName + "'")
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
os.system("sudo dpkg -r " + self.get_final_folder() + "/" + pkgName + self.suffix_package)
|
os.system("sudo dpkg -r " + self.get_final_folder() + "/" + pkgName + self.suffix_package)
|
||||||
|
|
||||||
|
"""
|
||||||
|
.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, pkgName, pkgProperties, basePkgPath):
|
||||||
|
debianPkgName = re.sub("_", "-", pkgName)
|
||||||
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
debug.info("Generate generic '" + debianPkgName + "' v"+pkgProperties["VERSION"])
|
||||||
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
targetOutFolder = self.get_staging_folder(pkgName) + "/edn.app/"
|
||||||
|
tools.create_directory_of_file(targetOutFolder)
|
||||||
|
## Create version file
|
||||||
|
tmpFile = open(targetOutFolder + "/version.txt", 'w')
|
||||||
|
tmpFile.write(pkgProperties["VERSION"])
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create maintainer file
|
||||||
|
tmpFile = open(targetOutFolder + "/maintainer.txt", 'w')
|
||||||
|
tmpFile.write(self.generate_list_separate_coma(pkgProperties["MAINTAINER"]))
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create appl_name file
|
||||||
|
tmpFile = open(targetOutFolder + "/appl_name.txt", 'w')
|
||||||
|
tmpFile.write("en_EN:" + pkgProperties["NAME"])
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create appl_description file
|
||||||
|
tmpFile = open(targetOutFolder + "/appl_description.txt", 'w')
|
||||||
|
tmpFile.write("en_EN:" + pkgProperties["DESCRIPTION"])
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create Readme file
|
||||||
|
readmeFileDest = targetOutFolder + "/readme.txt"
|
||||||
|
if os.path.exists(basePkgPath + "/os-Linux/README")==True:
|
||||||
|
tools.copy_file(basePkgPath + "/os-Linux/README", readmeFileDest)
|
||||||
|
elif os.path.exists(basePkgPath + "/README")==True:
|
||||||
|
tools.copy_file(basePkgPath + "/README", readmeFileDest)
|
||||||
|
elif os.path.exists(basePkgPath + "/README.md")==True:
|
||||||
|
tools.copy_file(basePkgPath + "/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 " + pkgName + "\n")
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create licence file
|
||||||
|
licenseFileDest = targetOutFolder + "/license/"+ debianPkgName + ".txt"
|
||||||
|
tools.create_directory_of_file(licenseFileDest)
|
||||||
|
if os.path.exists(basePkgPath + "/license.txt")==True:
|
||||||
|
tools.copy_file(basePkgPath + "/license.txt", licenseFileDest)
|
||||||
|
else:
|
||||||
|
debug.info("no file 'license.txt' ==> generate an empty one")
|
||||||
|
tmpFile = open(licenseFileDest, 'w')
|
||||||
|
tmpFile.write("No license define by the developper for " + pkgName + "\n")
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## Create changeLog file
|
||||||
|
changeLogFileDest = targetOutFolder + "/changelog.txt"
|
||||||
|
if os.path.exists(basePkgPath + "/changelog") == True:
|
||||||
|
tools.copy_file(basePkgPath + "/changelog", changeLogFileDest)
|
||||||
|
else:
|
||||||
|
debug.info("no file 'changelog' ==> generate an empty one")
|
||||||
|
tmpFile = open(changeLogFileDest, 'w')
|
||||||
|
tmpFile.write("No changelog data " + pkgName + "\n")
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
## copy share folder
|
||||||
|
#debug.info("plop:" + self.get_staging_folder(pkgName) + self.folder_data)
|
||||||
|
if os.path.exists(self.get_staging_folder(pkgName) + self.folder_data) == True:
|
||||||
|
tools.copy_anything(self.get_staging_folder(pkgName) + self.folder_data + "/*", targetOutFolder + self.folder_data, recursive=True)
|
||||||
|
|
||||||
|
## Create binary folder:
|
||||||
|
bin_folder = targetOutFolder + self.folder_bin
|
||||||
|
#tools.create_directory_of_file(bin_folder)
|
||||||
|
tools.copy_anything(self.get_staging_folder(pkgName) + self.folder_bin + "/*",
|
||||||
|
bin_folder,
|
||||||
|
executable=True)
|
||||||
|
|
||||||
|
## create the package:
|
||||||
|
debug.debug("package : " + self.get_staging_folder(pkgName) + "/" + debianPkgName + ".app.pkg")
|
||||||
|
os.system("cd " + self.get_staging_folder(pkgName) + " ; tar -czf " + pkgName + ".app.tar.gz " + pkgName + ".app")
|
||||||
|
#multiprocess.run_command("cd " + self.get_staging_folder(pkgName) + " ; tar -czf " + pkgName + ".app.tar.gz " + pkgName + ".app")
|
||||||
|
tools.create_directory_of_file(self.get_final_folder())
|
||||||
|
tools.copy_file(self.get_staging_folder(pkgName) + "/" + pkgName + ".app.tar.gz", self.get_final_folder() + "/" + pkgName + ".app.gpkg")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user