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

List:       kde-commits
Subject:    kdesupport/emerge/bin
From:       Patrick Spendrin <ps_ml () gmx ! de>
Date:       2009-04-30 20:50:53
Message-ID: 1241124653.599365.2516.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 961867 by sengels:

fix package installation:
--update-all will now update all svn packages that are installed
--print-installed shows correctly the KDE packages

 M  +3 -2      base.py  
 M  +39 -10    emerge.py  
 M  +60 -26    utils.py  


--- trunk/kdesupport/emerge/bin/base.py #961866:961867
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # this package contains the base class for all packages
 
 # copyright:
@@ -288,7 +289,7 @@
         """install database"""
         if utils.verbose() > 1:
             print "base manifest called"
-        utils.manifestDir( os.path.join( self.workdir, self.instsrcdir, self.package \
), self.imagedir, self.package, self.version ) +        utils.manifestDir( \
os.path.join( self.workdir, self.instsrcdir, self.package ), self.imagedir, \
self.category, self.package, self.version )  return True
         
     def make_package( self ):
@@ -427,7 +428,7 @@
         else:
             cmd = "-name %s -root %s -version %s -destdir %s" % \
                   ( pkg_name, binpath, pkg_version, dstpath )
-        cmd = "kdewin-packager.exe -debuglibs " + cmd + " -compression 2 "
+        cmd = "kdewin-packager.exe -debuglibs " + cmd + " -notes " + \
"%s/%s:%s:unknown " % ( self.category, self.package, self.version ) + "-compression 2 \
"  
         if( not self.createCombinedPackage ):
             if( self.compiler == "mingw"):
--- trunk/kdesupport/emerge/bin/emerge.py #961866:961867
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # this will emerge some programs...
 
 # copyright:
@@ -33,10 +34,14 @@
                                 manifest directory - it prints out only those
                                 packages that are contained within
                                 --print-installable
---print-installable            This will give you a list of packages that can
+--print-installable             This will give you a list of packages that can
                                 be installed. Currently you don't need to
                                 enter the category and package: only the
                                 package will be enough.
+--update-all                    this option tries to update all installed 
+                                packages that contain one or multiple svn 
+                                targets. This is equivalent to running all
+                                those packages with the flag --update.
 
 Commands (must have a packagename):
 
@@ -192,6 +197,7 @@
 doPretend = False
 stayQuiet = False
 ignoreInstalled = False
+updateAll = False
 opts = ""
 if len( sys.argv ) < 2:
     usage()
@@ -264,6 +270,10 @@
     elif ( i == "--update" ):
         ignoreInstalled = True
         os.environ["EMERGE_NOCLEAN"] = str( True )
+    elif ( i == "--update-all" ):
+        ignoreInstalled = True
+        os.environ["EMERGE_NOCLEAN"] = str( True )
+        updateAll = True
     elif ( i == "--install-deps" ):
         ignoreInstalled = True
         buildAction = "install-deps"
@@ -315,50 +325,69 @@
 
 deplist = []
 packageList = []
+categoryList = []
 
-category = ""
 if packageName:
     if len( packageName.split( "/" ) ) == 1:
         if utils.isCategory( packageName ):
             utils.debug( "isCategory=True", 2 )
             packageList = utils.getAllPackages( packageName )
-            category = packageName
+            categoryList = [ packageName ]
         else:
             if utils.getCategory( packageName ):
-                category = utils.getCategory( packageName )
                 packageList = [ packageName ]
+                categoryList = [ utils.getCategory( packageName ) ]
             else:
                 utils.warning( "unknown category or package: %s" % packageName )
     elif len( packageName.split( "/" ) ) == 2:
         [ cat, pac ] = packageName.split( "/" )
         validPackage = False
         if utils.isCategory( cat ):
-            category = cat
+            categoryList = [ cat ]
         else:
             utils.warning( "unknown category %s; ignoring package %s" % ( cat, \
                packageName ) )
-        if category and utils.isPackage( category, pac ):
+        if len( categoryList ) > 0 and utils.isPackage( categoryList[0], pac ):
             packageList = [ pac ]
-        if len( packageList ):
-            utils.debug( "added package %s/%s" % ( category, pac ), 2 )
+        if len( categoryList ) and len( packageList ):
+            utils.debug( "added package %s/%s" % ( categoryList[0], pac ), 2 )
         else:
             utils.debug( "ignoring package %s" % packageName )
     else:
         utils.error( "unknown packageName" )
+elif updateAll:
+    installedPackages = utils.getInstallables()
+    utils.debug( "Updating, no package spec given", 1 )
+    packageList = []
+    for category, package, version in installedPackages:
+        if utils.isInstalled( category, package, version ) and \
utils.isPackageUpdateable( category, package, version ): +            \
categoryList.append( category ) +            packageList.append( package )
+    utils.debug( "Will update packages: " + str (packageList), 1 )
 
 for entry in packageList:
     utils.debug( "%s" % entry, 1 )
 utils.debug_line( 1 )
 
-for entry in packageList:
+for category, entry in zip (categoryList, packageList):
     utils.solveDependencies( category, entry, "", deplist )
 
 for item in range( len( deplist ) ):
-    if deplist[ item ][ 0 ] == category and deplist[ item ][ 1 ] in packageList:
+    if deplist[ item ][ 0 ] in categoryList and deplist[ item ][ 1 ] in packageList:
         deplist[ item ].append( ignoreInstalled )
     else:
         deplist[ item ].append( False )
+
     utils.debug( "dependency: %s" % deplist[ item ], 1 )
 
+for item in deplist:
+    cat = item[ 0 ]
+    pac = item[ 1 ]
+    ver = item[ 2 ]
+
+    if utils.isInstalled( cat, pac, ver ) and updateAll and not \
utils.isPackageUpdateable( cat, pac, ver ): +        print "remove:", cat, pac, ver
+        deplist.remove( item )
+
 if buildAction == "install-deps":
     # the first dependency is the package itself - ignore it
     # TODO: why are we our own dependency?
--- trunk/kdesupport/emerge/bin/utils.py #961866:961867
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # this file contains some helper functions for emerge
 
 # copyright:
@@ -280,11 +281,27 @@
     for line in f.read().splitlines():
         match = regex.match( line )
         if match:
-            print "found: " + match.group(1)
+            debug( "found: " + match.group(1), 1 )
             ret = match.group(1)
     f.close()
     return ret;
 
+def checkManifestFile( name, category, package, version ):
+    if os.path.isfile( name ):
+        f = open( name, "rb" )
+        header = f.readline()
+        line = f.readline()
+        f.close()
+        if not '/' in line:
+            """ update the file """
+            line = "%s/%s:%s:unknown" % ( package, category, package, version )
+            f = open( name, "wb" )
+            f.write( header )
+            f.write( line )
+        if ( line.startswith( "%s/%s:%s:" % ( category, package, version ) ) ):
+            return True
+    return False
+
 def isInstalled( category, package, version ):
     fileName = os.path.join( getEtcPortageDir(), "installed" )
     if ( not os.path.isfile( fileName ) ):
@@ -301,10 +318,9 @@
 
     if ( not found ):
         """ try to detect packages from the installer """
-        releasepack = os.path.join( os.getenv( "KDEROOT" ), "manifest", package + \
                "-" + version + "-bin.mft" )
-        develpack = os.path.join( os.getenv( "KDEROOT" ), "manifest", package + "-" \
                + version + "-lib.mft" )
-        if( os.path.isfile( releasepack ) or os.path.isfile( develpack ) ):
-            found = True
+        bin = checkManifestFile( os.path.join( os.getenv( "KDEROOT" ), "manifest", \
package + "-" + version + "-bin.ver"), category, package, version ) +        lib = \
checkManifestFile( os.path.join( os.getenv( "KDEROOT" ), "manifest", package + "-" + \
version + "-lib.ver"), category, package, version ) +        found = found or bin or \
lib  
     if ( not found and os.getenv( "EMERGE_VERSIONING" ) == "False" ):
         """ check for any installation """
@@ -418,13 +434,26 @@
     else:
         return
 
+def getDefaultTarget( category, package, version ):
+    """ """
+    debug( "importing file %s" % getFilename( category, package, version ), 1 )
+    mod = __import__( getFilename( category, package, version ) )
+    if hasattr( mod, 'subinfo' ):
+        info = mod.subinfo()
+        return mod.subinfo().defaultTarget
+    else:
+        return None
+
 def getAllTags( category, package, version ):
     """ """
+    debug( "importing file %s" % getFilename( category, package, version ), 1 )
+    mod = __import__( getFilename( category, package, version ) )
     if hasattr( mod, 'subinfo' ):
         info = mod.subinfo()
-        mod = __import__( getFilename( category, package, version ) )
-        info = mod.subinfo()
-        return info.svnTargets
+        tagDict = info.svnTargets
+        tagDict.update( info.targets )
+        debug( tagDict )
+        return tagDict
     else:
         return dict()
 
@@ -579,25 +608,30 @@
 
 def printTargets( category, package, version ):
     """ """
-    debug( "importing file %s" % getFilename( category, package, version ), 1 )
-    mod = __import__( getFilename( category, package, version ) )
-    packageInfo = mod.subinfo()
-    svnTargetsList = packageInfo.svnTargets.keys()
-    if not packageInfo.svnTargets['svnHEAD']:
-        svnTargetsList.remove('svnHEAD')
-    for i in svnTargetsList:
-        if packageInfo.defaultTarget == i:
+    targetsList = getAllTags( category, package, version )
+    defaultTarget = getDefaultTarget( category, package, version )
+    if not targetsList['svnHEAD']:
+        targetsList.remove('svnHEAD')
+    targetsListKeys = targetsList.keys()
+    targetsListKeys.sort()
+    for i in targetsListKeys:
+        if defaultTarget == i:
             print '*',
         else:
             print ' ',
         print i
-    for i in packageInfo.targets.keys():
-        if packageInfo.defaultTarget == i:
-            print '*',
-        else:
-            print ' ',
-        print i
 
+def isPackageUpdateable( category, package, version ):
+    debug( "importing file %s" % getFilename( category, package, version ), 1 )
+    mod = __import__( getFilename( category, package, version ) )
+    if hasattr( mod, 'subinfo' ):
+        info = mod.subinfo()
+        if len( info.svnTargets ) is 1 and not info.svnTargets[ \
info.svnTargets.keys()[0] ]: +            return False
+        return len( info.svnTargets ) > 0
+    else:
+        return False
+
 def printCategoriesPackagesAndVersions(lines, condition):
     """prints a number of 'lines', each consisting of category, package and version \
field"""  def printLine(cat, pack, ver):
@@ -715,7 +749,7 @@
                 os.remove( os.path.join( rootdir, "manifest", file ) )
     return
 
-def manifestDir( srcdir, imagedir, package, version ):
+def manifestDir( srcdir, imagedir, category, package, version ):
     print "manifestDir: %s %s %s %s" % (srcdir, imagedir, package, version)
     """ make the manifest files for an imagedir like the kdewin-packager does """
     debug( "manifestDir called: %s %s" % ( srcdir, imagedir ), 1 )
@@ -807,11 +841,11 @@
     if len(docList) > 0:
         docversion = open( os.path.join( imagedir, "manifest", "%s-%s-doc.ver" % ( \
package, version )), 'wb' )  if len(binList) > 0:
-        binversion.write( "%s %s Binaries\n%s:" % ( package, version, package ) )
+        binversion.write( "%s %s Binaries\n%s/%s:%s:unknown" % ( package, version, \
category, package, version ) )  if len(libList) > 0:
-        libversion.write( "%s %s developer files\n%s:" % ( package, version, package \
) ) +        libversion.write( "%s %s developer files\n%s/%s:%s:unknown" % ( package, \
version, category, package, version ) )  if len(docList) > 0:
-        docversion.write( "%s %s Documentation\n%s:" % ( package, version, package ) \
) +        docversion.write( "%s %s Documentation\n%s/%s:%s:unknown" % ( package, \
version, category, package, version ) )  
 def mergeImageDirToRootDir( imagedir, rootdir ):
     copySrcDirToDestDir( imagedir, rootdir )


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

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