[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.update_folder_tree()
|
||||
"""
|
||||
self.folder_bin="/usr/bin"
|
||||
self.folder_lib="/usr/lib"
|
||||
self.folder_data="/usr/share"
|
||||
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_tree_done=[]
|
||||
self.module_list=[]
|
||||
|
@ -11,6 +11,7 @@ import os
|
||||
import shutil
|
||||
import errno
|
||||
import fnmatch
|
||||
import stat
|
||||
# Local import
|
||||
from . import debug
|
||||
from . import depend
|
||||
@ -96,7 +97,7 @@ def add_prefix(prefix,list):
|
||||
result.append(prefix+elem)
|
||||
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:
|
||||
debug.error("Request a copy a file that does not existed : '" + src + "'")
|
||||
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)
|
||||
create_directory_of_file(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)
|
||||
|
||||
|
||||
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))
|
||||
tmpRule = os.path.basename(src)
|
||||
debug.verbose(" " + str(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
|
||||
if len(tmpRule)>0:
|
||||
tmpList = fnmatch.filter(filenames, tmpRule)
|
||||
# Import the module :
|
||||
for cycleFile in tmpList:
|
||||
#for cycleFile in filenames:
|
||||
debug.verbose("Might copy : '" + tmpPath+cycleFile + "' ==> '" + dst + "'")
|
||||
copy_file(tmpPath+"/"+cycleFile, dst+"/"+cycleFile)
|
||||
debug.verbose(" '" + 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):
|
||||
|
@ -14,6 +14,7 @@ import os
|
||||
import stat
|
||||
import re
|
||||
from lutin import host
|
||||
from lutin import multiprocess
|
||||
|
||||
class Target(target.Target):
|
||||
def __init__(self, config):
|
||||
@ -46,7 +47,13 @@ class Target(target.Target):
|
||||
result += elem
|
||||
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/
|
||||
debianPkgName = re.sub("_", "-", pkgName)
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
@ -139,3 +146,117 @@ class Target(target.Target):
|
||||
debug.info("Un-Install package '" + pkgName + "'")
|
||||
debug.debug("------------------------------------------------------------------------")
|
||||
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