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

Compiles vala files

ext_out = ['.h']
hcode = b"\tdef run(self):\n\t\tcmd = self.env.VALAC + self.env.VALAFLAGS\n\t\tresources = getattr(self, 'vala_exclude', [])\n\t\tcmd.extend([a.abspath() for a in self.inputs if a not in resources])\n\t\tret = self.exec_command(cmd, cwd=self.vala_dir_node.abspath())\n\n\t\tif ret:\n\t\t\treturn ret\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"

Task generator method

Initializes the vala task with the relevant data (acts as a constructor)

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):
                packages      = 'gtk+-2.0',
                target        = 'vala-gtk-example',
                use           = '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
                # thread      = True, # adds --thread, 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

  • 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.

  • 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)

Configuration Method bound to waflib.Configure.ConfigurationContext

Load the gobject and gthread packages if they are missing.


Use the following to enforce minimum vala version:

def configure(conf):
        conf.env.VALA_MINVER = (0, 10, 0)

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


Decorator that registers 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}'
def create_maa_file(self, node):
        self.create_task('mytask', node, node.change_ext('.maa'))
def build(bld):

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

from waflib.TaskGen import taskgen_method
def mymethod(self):
Parameters:func (function) – task generator method to add
Return type:function

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