[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [emerge] bin/Packager: add missing fragment packager
From:       Patrick Spendrin <ps_ml () gmx ! de>
Date:       2015-09-23 22:11:07
Message-ID: E1ZesFn-0008Cy-WE () scm ! kde ! org
[Download RAW message or body]

Git commit eab6458cf066b149957feb8fd568f0fa342423b2 by Patrick Spendrin.
Committed on 23/09/2015 at 22:10.
Pushed by sengels into branch 'master'.

add missing fragment packager

A  +86   -0    bin/Packager/MSIFragmentPackager.py

http://commits.kde.org/emerge/eab6458cf066b149957feb8fd568f0fa342423b2

diff --git a/bin/Packager/MSIFragmentPackager.py \
b/bin/Packager/MSIFragmentPackager.py new file mode 100644
index 0000000..71d74db
--- /dev/null
+++ b/bin/Packager/MSIFragmentPackager.py
@@ -0,0 +1,86 @@
+#
+# copyright (c) 2015 Patrick Spendrin <ps_ml@gmx.de>
+#
+
+import portage
+from xml.dom.minidom import Document
+import hashlib
+import uuid
+#import re
+
+from Packager.PackagerBase import *
+
+def getUniqueIdString( fileName, root ):
+    m = hashlib.md5()
+    m.update( os.path.join( root, fileName ).encode( "latin-1" ) )
+    return "file_" + m.hexdigest()
+
+def getUniqueDirectoryId( relDirName ):
+    m = hashlib.md5()
+    m.update( os.path.join( relDirName ).encode( "latin-1" ) )
+    return "dir_" + m.hexdigest()
+
+class MSIFragmentPackager( PackagerBase ):
+    uniqueFileIds = dict()
+    uniqueDirectoryRefs = dict()
+    checkDirDict = dict()
+
+    __beginString = re.compile( r"(^[^A-Za-z_])" )
+    __invalidChars = re.compile( r"[^A-Za-z0-9_.]" )
+
+    def __init__( self, initialized = False ):
+        if not initialized: PackagerBase.__init__( self )
+        utils.debug( "MSIFragmentPackager __init__", 2 )
+        self.outfile = os.path.join( self.packageDestinationDir(), "%s.wxs" % \
self.package ) +        self.objfile = self.outfile.replace( "wxs", "wix" ) + "obj"
+
+
+    def generateFragment( self ):
+        wxs = Document()
+        wix = wxs.createElement( "Wix" )
+        wix.setAttribute( "xmlns", "http://schemas.microsoft.com/wix/2006/wi" )
+        wxs.appendChild( wix )
+        fragmentElement = wxs.createElement( "Fragment" )
+        componentGroup = wxs.createElement( "ComponentGroup" )
+        componentGroup.setAttribute( "Id", "%sComponentGroup" % \
self.package.replace( '-', '_' ) ) +        wix.appendChild( fragmentElement )
+        fragmentElement.appendChild( componentGroup )
+
+        for root, dirs, files in os.walk( self.imageDir() ):
+            if root == self.imageDir(): continue
+
+            relDir = os.path.relpath( root, self.imageDir() )
+            dirId = getUniqueDirectoryId( relDir )
+
+            # components could be used to create updateable packages according to \
current +            # emerge packaging
+            for _f in files:
+                if _f.endswith( ".pdb" ) or _f.endswith( ".ilk" ): continue
+
+                _fileId = getUniqueIdString( _f, root )
+                currentComponent = wxs.createElement( "Component" )
+                currentComponent.setAttribute( "Id", _fileId )
+                currentComponent.setAttribute( "Directory", dirId )
+                currentComponent.setAttribute( "Guid", str( uuid.uuid4() ) )
+                componentGroup.appendChild( currentComponent )
+
+                currentFile = wxs.createElement( "File" )
+                currentFile.setAttribute( "Id", _fileId )
+                currentFile.setAttribute( "KeyPath", "yes" )
+                currentFile.setAttribute( "Source", os.path.join( \
"$(var.%sImageDir)" % self.package, relDir, _f ) ) +                \
currentComponent.appendChild( currentFile ) +
+        #out = open( self.outfile, 'w' )
+        #wxs.writexml( out, "", "    ", "\n", encoding = "utf-8" )
+        #out.close()
+
+        #utils.system( "candle -o %s -d%sImageDir=%s %s" % ( self.objfile, \
self.package, self.imageDir(), self.outfile ) ) +
+
+    def createPackage( self ):
+        result = True
+        self.generateFragment()
+        return result
+
+    def make_package( self ):
+        return self.createPackage()


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic