vala

At this point, vala is still unstable, so do not expect this tool to be too stable either (apis, etc)

class waflib.Tools.vala.valac(*k, **kw)[source]

Bases: waflib.Task.Task

Task to compile vala files.

vars = ['VALAC', 'VALAC_VERSION', 'VALAFLAGS']
ext_out = ['.h']
__doc__ = '\n\tTask to compile vala files.\n\t'
__module__ = 'waflib.Tools.vala'
hcode = "\tdef run(self):\n\t\tcmd = [self.env['VALAC']] + self.env['VALAFLAGS']\n\t\tcmd.extend([a.abspath() for a in self.inputs])\n\t\tret = self.exec_command(cmd, cwd=self.outputs[0].parent.abspath())\n\n\t\tif ret:\n\t\t\treturn ret\n\n\t\tfor x in self.outputs:\n\t\t\tif id(x.parent) != id(self.outputs[0].parent):\n\t\t\t\tshutil.move(self.outputs[0].parent.abspath() + os.sep + x.name, x.abspath())\n\n\t\tif self.generator.dump_deps_node:\n\t\t\tself.generator.dump_deps_node.write('\\n'.join(self.generator.packages))\n\n\t\treturn ret\n"
waflib.Tools.vala.vala_file(self, node)[source]

Compile a vala file and bind the task to self.valatask. If an existing vala task is already set, add the node to its inputs. The typical example is:

def build(bld):
        bld.program(
                packages      = 'gtk+-2.0',
                target        = 'vala-gtk-example',
                uselib        = 'GTK GLIB',
                source        = 'vala-gtk-example.vala foo.vala',
                vala_defines  = ['DEBUG'] # adds --define=<xyz> values to the command-line

                # the following arguments are for libraries
                #gir          = 'hello-1.0',
                #gir_path     = '/tmp',
                #vapi_path = '/tmp',
                #pkg_name = 'hello'
                # disable installing of gir, vapi and header
                #install_binding = False

                # profile     = 'xyz' # adds --profile=<xyz> to enable profiling
                # threading   = True, # add --threading, except if profile is on or not on 'gobject'
                # vala_target_glib = 'xyz' # adds --target-glib=<xyz>, can be given through the command-line option --vala-target-glib=<xyz>
        )
Parameters:node (waflib.Node.Node) – vala file
waflib.Tools.vala.find_valac(self, valac_name, min_version)[source]

Configuration Method bound to waflib.Configure.ConfigurationContext

Find the valac program, and execute it to store the version number in conf.env.VALAC_VERSION

Parameters:
  • valac_name (string or list of string) – program name
  • min_version (tuple of int) – minimum version acceptable
waflib.Tools.vala.check_vala(self, min_version=(0, 8, 0), branch=None)[source]

Configuration Method bound to waflib.Configure.ConfigurationContext

Check if vala compiler from a given branch exists of at least a given version.

Parameters:
  • min_version (tuple) – minimum version acceptable (0.8.0)
  • branch (tuple of int) – first part of the version number, in case a snapshot is used (0, 8)
waflib.Tools.vala.check_vala_deps(self)[source]

Configuration Method bound to waflib.Configure.ConfigurationContext

Load the gobject and gthread packages if they are missing.

waflib.Tools.vala.configure(self)[source]

Use the following to enforce minimum vala version:

def configure(conf):
        conf.load('vala', funs='')
        conf.check_vala(min_version=(0,10,0))
waflib.Tools.vala.conf(f)

Decorator: attach new configuration functions to waflib.Build.BuildContext and waflib.Configure.ConfigurationContext. The methods bound will accept a parameter named ‘mandatory’ to disable the configuration errors:

def configure(conf):
        conf.find_program('abc', mandatory=False)
Parameters:f (function) – method to bind
waflib.Tools.vala.taskgen_method(func)

Decorator: register a method as a task generator method. The function must accept a task generator as first parameter:

from waflib.TaskGen import taskgen_method
@taskgen_method
def mymethod(self):
        pass
Parameters:func (function) – task generator method to add
Return type:function
waflib.Tools.vala.extension(*k)

Decorator: register a task generator method which will be invoked during the processing of source files for the extension given:

from waflib import Task
class mytask(Task):
        run_str = 'cp ${SRC} ${TGT}'
@extension('.moo')
def create_maa_file(self, node):
        self.create_task('mytask', node, node.change_ext('.maa'))
def build(bld):
        bld(source='foo.moo')
waflib.Tools.vala.options(opt)[source]

Load the waflib.Tools.gnu_dirs tool and add the --vala-target-glib command-line option

Previous topic

dbus

Next topic

glib2

This Page