#!/usr/bin/env python # Python version of c0nv1ct's bash keyword script. # Pythonised by Eden # Version 0.5 # # Usage: fixkeyword to unmask ~arch # fixkeyword svn to unmask -9999 (svn) versions # import os import sys keywordsf = '/etc/portage/package.keywords' portagedir = '/usr/portage/' laymandir = '/usr/portage/local/layman/' def chklayman(pkgname): lst = os.listdir(laymandir) print pkgname for line in lst: print line if os.path.isdir(laymandir+line+"/"+pkgname): print 'Package found in '+laymandir+line+'/'+pkgname return 1 def usage(): print "Usage: fixkeyword to unmask ~arch keyword" print "or fixkeyword svn to unmask -9999 (svn) versions" os.exit(1) #check we are root, if not print error and quit if os.getuid() != 0: print os.getuid() print 'You must be root to run this script' sys.exit(1) # check for 32bit or 64bit and set keyword m = os.uname() if m[4] == 'x86_64': KWORD = '~amd64' else: KWORD = '~x86' # Check for arguments supplyed when running the script, if none # Show syntax and quit. if sys.argv[1] == '': usage() elif sys.argv[1] == 'svn' and sys.argv[2] == '': usage() elif sys.argv[1] == 'svn': pkgname = sys.argv[2] svn = sys.argv[1] else: pkgname = sys.argv[1] # make sure tree and package name were specifired f = open(keywordsf, 'a') if pkgname.find('/') != -1: if os.path.isdir(portagedir+pkgname): print 'Fixing ' + KWORD + ' keyword mask for package ' + pkgname f.write(pkgname + " " + KWORD + "\n") elif chklayman(pkgname) == 1: print 'Fixing ' + KWORD + ' keyword mask for package ' + pkgname f.write(pkgname + " " + KWORD + "\n") else: print 'directory doesnt exist' else: usage() f.close()