Documentation for Contributors to Vala
Submitting Bug Reports
Vala uses Bugzilla.
Patches should be attached to a bug report in bugzilla. Patches should include one or more test cases.
Once your patch is accepted and if you have commit access then use git-bz, the Bugzilla subcommand for git. This tool automatically includes the Bugzilla reference in the commit message. See git-bz(1) Manual Page.
The Vala repository carries a number of bindings to libraries. The bindings are written in one of three ways:
Generated using vapigen from a GIR (GObject Introspection Repository) file
Generated using vapigen from a deprecated GIDL file
To update a binding the first thing to do is find how the binding is written. From the Vala source tree:
cd vapi make binding-name-x.y
If there is no make target then the VAPI is written manually. For example make glib-2.0 has no target. If the VAPI is generated using files from the ./metadata/ directory then the VAPI is generated from a GIR file. For example make gstreamer-1.0 is generated from a GIR file. If the VAPI is generated using files from the ./packages/ directory then the VAPI is generated from a GIDL file. For example make gtk+-3.0 is currently generated from a GIDL file.
Patches should be submitted through bugzilla as a git formatted patch, e.g. use git format-patch HEAD^1 Patches for generated bindings should also include the changes to the VAPI itself. The Vala repository keeps the generated VAPIs in version control as well as the metadata.
Writing a VAPI Without Using GObject Introspection - detailed guide on writing a VAPI manually
Generating a VAPI with GObject Introspection - details on generating a VAPI using vapigen
Developing the Compiler
Using --enable-coverage will include debugging symbols in the Vala compiler:
make distclean ./autogen.sh --enable-coverage
This will enable Vala source files with line numbers to be shown when using gdb to generate a backtrace after a segmentation fault.
You can also change GLib criticals and warnings to generate a segmentation fault to enable a backtrace. This is done with the G_DEBUG environment variable:
G_DEBUG=fatal-criticals gdb --args my_valac_version my_test_program.vala
See Running and debugging GLib Applications for more information on G_DEBUG.
The Build Server
Vala maintainers make use of a Buildbot server to build a selection of projects written in Vala with a version of Vala from the main GNOME git repository. Of main interest to contributors is the vala-staging builder and also the vala-master builder. Builds from these servers include log files from STDIO for each build. This helps identify any problems with a patch that was committed to Vala.