From: <pie...@ff...> - 2007-08-30 13:39:58
|
Author: arnonym Date: 2007-08-30 06:39:58 -0700 (Thu, 30 Aug 2007) New Revision: 601 Modified: trunk/libffado/SConstruct trunk/libffado/admin/pkgconfig.py Log: Maybe this time the pkg-flags will get cached and pkg-config isn't called anymore during install / after the first time... Modified: trunk/libffado/SConstruct =================================================================== --- trunk/libffado/SConstruct 2007-08-30 13:38:50 UTC (rev 600) +++ trunk/libffado/SConstruct 2007-08-30 13:39:58 UTC (rev 601) @@ -102,7 +102,7 @@ if not env.GetOption('clean'): conf = Configure( env, - custom_tests={ 'CheckForPKGConfig' : CheckForPKGConfig, 'CheckForPKG' : CheckForPKG, 'CheckForApp' : CheckForApp }, + custom_tests={ 'CheckForPKGConfig' : CheckForPKGConfig, 'CheckForPKG' : CheckForPKG, 'GetPKGFlags' : GetPKGFlags, 'CheckForApp' : CheckForApp }, conf_dir="cache/" + build_base, log_file="cache/" + build_base + 'config.log' ) @@ -111,17 +111,26 @@ Exit( 1 ) allpresent = 1; - allpresent &= conf.CheckForPKGConfig(); - allpresent &= conf.CheckForPKG( 'libraw1394', "1.3.0" ) - allpresent &= conf.CheckForPKG( 'libavc1394', "0.5.3" ) - allpresent &= conf.CheckForPKG( 'libiec61883', "1.1.0" ) - allpresent &= conf.CheckForPKG( 'alsa', "1.0.0" ) - allpresent &= conf.CheckForPKG( 'libxml++-2.6', "2.13.0" ) - allpresent &= conf.CheckForPKG( 'liblo', "0.22" ) - allpresent &= conf.CheckForPKG( 'dbus-1', "1.0" ) allpresent &= conf.CheckHeader( "expat.h" ) allpresent &= conf.CheckLib( 'expat', 'XML_ExpatVersion', '#include <expat.h>' ) + allpresent &= conf.CheckForPKGConfig(); + + pkgs = { + 'libraw1394' : '1.3.0', + 'libavc1394' : '0.5.3', + 'libiec61883' : '1.1.0', + 'alsa' : '1.0.0', + 'libxml++-2.6' : '2.13.0', + 'liblo' : '0.22', + 'dbus-1' : '1.0', + } + for pkg in pkgs: + name2 = pkg.replace("+","").replace(".","").replace("-","").upper() + env['%s_FLAGS' % name2] = conf.GetPKGFlags( pkg, pkgs[pkg] ) + if env['%s_FLAGS'%name2] == 0: + allpresent &= 0 + if not allpresent: print """ (At least) One of the dependencies is missing. I can't go on without it, please Modified: trunk/libffado/admin/pkgconfig.py =================================================================== --- trunk/libffado/admin/pkgconfig.py 2007-08-30 13:38:50 UTC (rev 600) +++ trunk/libffado/admin/pkgconfig.py 2007-08-30 13:39:58 UTC (rev 601) @@ -36,3 +36,28 @@ context.Result( ret ) return ret +# +# Checks for the existance of the package and returns the packages flags. +# +# This should allow caching of the flags so that pkg-config is called only once. +# +def GetPKGFlags( context, name, version="" ): + import os + + if version == "": + context.Message( "Checking for %s... \t" % name ) + ret = context.TryAction( "pkg-config --exists '%s'" % name )[0] + else: + context.Message( "Checking for %s (%s or higher)... \t" % (name,version) ) + ret = context.TryAction( "pkg-config --atleast-version=%s '%s'" % (version,name) )[0] + + if not ret: + context.Result( ret ) + return ret + + out = os.popen2( "pkg-config --cflags --libs %s" % name )[1] + ret = out.read() + + context.Result( True ) + return ret + |