================================ utilitymethods:source=20100804-1 cvc rdiff utilitymethods -1 /weasel.rpath.org@wgl:3-devel/20100804-1 ================================ 20100804-1 Filip Brcic (brcha@xxxxxxxxxxxx) Wed Aug 4 14:34:02 2010 Several utility methods, based on portage\'s methods utilitymethods.recipe: new --- /dev/null +++ utilitymethods.recipe @@ -0,0 +112 @@ +# +# Copyright (c) 2010 Weasel GNU/Linux [Filip Brcic (brcha@xxxxxxxxxxxx)] +# Distributed under the terms of the GNU General Public License v3 +# + +import datetime + +class UtilityMethods(PackageRecipe): + """ Set of utility functions to ease package writting + These functions are based on Gentoo portage standard functions + """ + name = 'utilitymethods' + version = datetime.date.today().strftime("%Y%m%d") + + def use(r, name): + return r.useq(name) + + def usev(r, name): + """ Return flag name if it is enabled or empty string elseway """ + if r.useq(name): + return name + return '' + + def useq(r, name): + """ Checks if name is a valid Use/Flag/ArchFlag and returns it's value """ + if hasattr(Flags, name): + return getattr(Flags, name) + if hasattr(Use, name): + return getattr(Use, name) + if Arch.x86: + if hasattr(Arch.x86, name): + return getattr(Arch.x86, name) + elif Arch.x86_64: + if hasattr(Arch.x86_64, name): + return getattr(Arch.x86_64, name) + # If value is not returned by now, flag probably doesn't exist, so + # assume it has value False, and print message on terminal + print 'WARNING: Flag "%s" doesn\'t exist!' % name + return False + + def has_version(r, name): + """ Return true if given package is installed """ + try: + loadInstalled(name) + return True + except: + return False + + def use_with(r, name, withname=None, withvalue=None): + """ Return --with-name or --without-name depending on flag value """ + if withname is None: + withname = name + if withvalue is not None: + withvalue = '=' + str(withvalue) # str(string) = string, so changes nothing + + if r.useq(name): + return ' --with-' + withname + withvalue + ' ' + else: + return ' --without-' + withname + ' ' + + def use_with_only(r, name, withname=None, withvalue=None): + """ Return --with-name only if flag is true """ + if r.useq(name): + return r.use_with(name, withname, withvalue) + else: + return '' + + def use_without(r, name, withname=None): + """ Return --without-name only if flag is false """ + if not r.useq(name): + return r.use_with(name, withname) + else: + return '' + + def use_enable(r, name, enablename=None, enablevalue=None): + """ Return --enable-name or --disable-name depending on flag value """ + if enablename is None: + enablename = name + if enablevalue is not None: + enablevalue = '=' + str(enablevalue) # str(string) = string, so changes nothing + + if r.useq(name): + return ' --enable-' + enablename + enablevalue + ' ' + else: + return ' --disable-' + enablename + ' ' + + def use_enable_only(r, name, enablename=None, enablevalue=None): + """ Return --enable-name if name flag is true """ + if r.useq(name): + return r.use_enable(name, enablename, enablevalue) + else: + return '' + + def use_disable(r, name, enablename=None): + """ Return --disable-name if name flag is false """ + if not r.useq(name): + return r.use_enable(name, enablename) + else: + return '' + + def keepdir(r, name): + """ Creates and excludes from deletion the named directory """ + r.MakeDirs(name) + r.ExcludeDirectories(exceptions=name) + + def update_gnuconfig(r, dir='.'): + """ Updates config.sub and config.guess files """ + r.Run('find . -name config.guess -exec cp -f %(datadir)s/gnuconfig/config.guess \{\} \;', + dir=dir) + r.Run('find . -name config.sub -exec cp -f %(datadir)s/gnuconfig/config.guess \{\} \;', + dir=dir) + Committed by: brcha