Version 9 (modified by tnagy, on 02/21/16 at 21:48:02) (diff) |
---|
Google Summer of Code
Table of Contents
General
- Getting Started - Getting started with Waf
- GSoC 2016 Tracker - Submit a proposal to Waf
Project Ideas
C-based dependency scanner
The purpose is to write a dependency scanner for C-like languages with a focus on performance and in a way that is re-usable outside the scope of Waf:
- C, C++ and Fortran support
- Language versions (c89, c99, c++-11)
- Distribution of a python module usable by Waf but also as a standalone library and as an application
- Writing a testsuite will be needed for the project
Built-in Packaging
This project involves adding support to Waf for built-in packages:
- OS X
.pkg
and.app
- Windows
.msi
- Enhanced source tarballs
- This involves adding support for distributing generated files with the tarball. A good example is including the
.c
and.h
files from a Bison.y
file. This would remove the dependency on Bison for tarballs and allow for better release testing.
- This involves adding support for distributing generated files with the tarball. A good example is including the
- Python
.egg
- Also include support for testing software within a virtualenv.
Unit Tests For waflib
Currently the core of Waf, waflib
has no unit tests.
The goal of this project is to create a set of tests that can be shipped with waf built-in. When a user of waf wants to build they should be able to run waf test-internal
and have it check the state of Waf on that platform.
This has the benefit of ensuring builds are repeatable and successful on the platform the developer or user is running on. Some projects may want to enable this by default when building from a tarball for enhanced security.
Profiling / Debug Support
This project involves adding built-in support for gprof, gcov, valgrind or other development tools. A general all-purpose library should be created to easily insert other tools as necessary.
Waf should collect build information during the build process for dumping and parsing later on.
A new command waf bug
would be added to dump current build information in a format suitable for attaching and pasting into a bug report for an online bug tracker.
This would also involve creating a new internal JSON log format to dump compile commands, compiler output and internal state that can be captured raw or pretty-printed into HTML or Text for gleaning information about the build.
Your Own Project
You are more than welcome to suggest your own project. It is important to keep in mind several points before submitting a project:
- The project must be useful for waf and the community as a whole.
- Documentation for the Waf Book must be provided.
- Plan for the project to end at least 1.5 weeks for integration of code into Waf.
- Break the project into as many insular milestones as possible. After each of these is completed work will be integrated into Waf. It is OK if your project will only be usable at the end of GSoC. In this case make 1.5 weeks available at the end of the project.
- Demonstrated knowledge of the work you are trying to complete must exist prior to starting the project. For example if you wish to improve Haskell support you must have working knowledge of Haskell.
When in doubt please contact the project we will help guide you through this process.