[DEV] create a basic bundle for windows
This commit is contained in:
parent
50103d4c74
commit
a40a25dba5
@ -56,10 +56,13 @@ def file_size(path):
|
|||||||
statinfo = os.stat(path)
|
statinfo = os.stat(path)
|
||||||
return statinfo.st_size
|
return statinfo.st_size
|
||||||
|
|
||||||
def file_read_data(path):
|
def file_read_data(path, binary=False):
|
||||||
if not os.path.isfile(path):
|
if not os.path.isfile(path):
|
||||||
return ""
|
return ""
|
||||||
file = open(path, "r")
|
if binary == True:
|
||||||
|
file = open(path, "rb")
|
||||||
|
else:
|
||||||
|
file = open(path, "r")
|
||||||
data_file = file.read()
|
data_file = file.read()
|
||||||
file.close()
|
file.close()
|
||||||
return data_file
|
return data_file
|
||||||
|
39
lutinZip.py
Normal file
39
lutinZip.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
##
|
||||||
|
## @author Edouard DUPIN
|
||||||
|
##
|
||||||
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||||
|
##
|
||||||
|
## @license APACHE v2.0 (see license file)
|
||||||
|
##
|
||||||
|
import lutinDebug as debug
|
||||||
|
import lutinTools as tools
|
||||||
|
import platform
|
||||||
|
import os
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
|
||||||
|
def create_zip(path, outputFile):
|
||||||
|
debug.debug("Create Zip : '" + outputFile + "'")
|
||||||
|
debug.debug(" from '" + path + "'")
|
||||||
|
basePathlen = len(path)
|
||||||
|
zf = zipfile.ZipFile(outputFile, mode='w')
|
||||||
|
for root, dirnames, filenames in os.walk(path):
|
||||||
|
# List all files :
|
||||||
|
for filename in filenames:
|
||||||
|
file = os.path.join(root, filename)
|
||||||
|
debug.verbose(" ADD zip = " + str(file))
|
||||||
|
zf.write(file, file[basePathlen:])
|
||||||
|
zf.close()
|
||||||
|
|
||||||
|
"""
|
||||||
|
print('creating archive')
|
||||||
|
zf = zipfile.ZipFile('zipfile_write.zip', mode='w')
|
||||||
|
try:
|
||||||
|
print('adding README.md')
|
||||||
|
zf.write('README.md')
|
||||||
|
finally:
|
||||||
|
print('closing')
|
||||||
|
zf.close()
|
||||||
|
"""
|
||||||
|
|
@ -9,11 +9,12 @@
|
|||||||
|
|
||||||
import lutinDebug as debug
|
import lutinDebug as debug
|
||||||
import lutinTarget
|
import lutinTarget
|
||||||
import lutinTools
|
import lutinTools as tools
|
||||||
import lutinHost
|
import lutinHost
|
||||||
import os
|
import os
|
||||||
import stat
|
import stat
|
||||||
import sys
|
import sys
|
||||||
|
import lutinZip as zip
|
||||||
|
|
||||||
class Target(lutinTarget.Target):
|
class Target(lutinTarget.Target):
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
@ -67,7 +68,38 @@ class Target(lutinTarget.Target):
|
|||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.info("Generate package '" + pkgName + "'")
|
debug.info("Generate package '" + pkgName + "'")
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
debug.warning(" ==> TODO")
|
debug.print_element("zip", "data.zip", "<==", "data/*")
|
||||||
|
zipPath = self.get_staging_folder(pkgName) + "/data.zip"
|
||||||
|
zip.create_zip(self.get_staging_folder_data(pkgName), zipPath)
|
||||||
|
|
||||||
|
binPath = self.get_staging_folder(pkgName) + "/" + self.folder_bin + "/" + pkgName + self.suffix_binary
|
||||||
|
binSize = tools.file_size(binPath)
|
||||||
|
debug.info("binarysize : " + str(binSize/1024) + " ko ==> " + str(binSize) + " octets")
|
||||||
|
|
||||||
|
#now we create a simple bundle binary ==> all file is stored in one file ...
|
||||||
|
self.get_staging_folder(pkgName)
|
||||||
|
finalBin = self.get_final_folder() + "/" + pkgName + self.suffix_binary
|
||||||
|
tools.create_directory_of_file(finalBin);
|
||||||
|
debug.print_element("pkg", finalBin, "<==", pkgName + self.suffix_binary)
|
||||||
|
tmpFile = open(finalBin, 'wb')
|
||||||
|
dataExecutable = tools.file_read_data(binPath, binary=True)
|
||||||
|
tmpFile.write(dataExecutable)
|
||||||
|
residualToAllign = len(dataExecutable) - int(len(dataExecutable)/32)*32
|
||||||
|
for iii in range(1,residualToAllign):
|
||||||
|
tmpFile.write(b'j');
|
||||||
|
positionOfZip = len(dataExecutable) + residualToAllign;
|
||||||
|
|
||||||
|
debug.print_element("pkg", finalBin, "<==", "data.zip")
|
||||||
|
dataData = tools.file_read_data(zipPath, binary=True)
|
||||||
|
tmpFile.write(dataData)
|
||||||
|
tmpLen = len(dataData) + positionOfZip
|
||||||
|
residualToAllign = tmpLen - int(tmpLen/32)*32
|
||||||
|
for iii in range(1,residualToAllign):
|
||||||
|
tmpFile.write(b'j');
|
||||||
|
tmpFile.write(bin(positionOfZip))
|
||||||
|
tmpFile.flush()
|
||||||
|
tmpFile.close()
|
||||||
|
debug.info("zip position=" + str(positionOfZip))
|
||||||
|
|
||||||
def install_package(self, pkgName):
|
def install_package(self, pkgName):
|
||||||
debug.debug("------------------------------------------------------------------------")
|
debug.debug("------------------------------------------------------------------------")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user