[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