rendered paste body#!/usr/bin/env python# Python version of c0nv1ct's bash keyword script.# Pythonised by Eden# Version 0.5## Usage: fixkeyword <tree-name/package> to unmask ~arch# fixkeyword svn <tree-name/package> to unmask -9999 (svn) versions# import osimport syskeywordsf = '/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 <tree-name/package> to unmask ~arch keyword" print "or fixkeyword svn <tree-name/package> to unmask -9999 (svn) versions" os.exit(1) #check we are root, if not print error and quitif 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 keywordm = 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 <tree/packagename>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()