Poulp logo

Poulp, the Vala project and packages manager

Poulp is a tool, or a set of tools, created to help you writing great softwares in Vala. It will help you building your projects, installing librairies, linting your code and much more.

Our goal is to provide a simple command line tool to manage your project and its dependencies. To achieve that, every project contains a poulp.toml file, describing your application or library.

If you don't know what is TOML, you can read the specification. But it is really easy to read, so maybe it's not even necessary.

Complete manifest

Here is an example of a complete poulp.toml.

# First we define the valac version(s) targeted
vala-version = ">=0.20.1"

# Basic informations about our app
name = "my-app"
description = "A cool application"

# Use semantic versionning
version = "0.1.0"

# To help find your project
keywords = [ "website", "valse", "cool" ]
license = "LGPL-3.0"

homepage = "https://jean.dupont.fr/myapp.html"
repository = "https://git.dupont.fr/my-app.git"

# Where to report bugs
bugs = {
  email = "jean@dupont.fr",
  url = "git.dupont.fr/jean/my-app/issues"
}

# Dev team members informations.
authors = [
  "Jean Dupont <jean@dupont.fr>",
  "John Doe <john.doe@anon.im>"
]

# The files to compile, supports wildcard (*).
files = [
  "*.vala",
  "models/*.vala",
  "*.gs",
  "*.c"
]

# VAPIs directory.
vapi-dir = "src/vapis/"

# Custom output path, if not specified defaults to `build/$(app-name)`.
output = "custom-build-path/my-app"

# Other arguments to give to valac.
compilerParams = [
  "-o", "$(POULP_NAME)-$(POULP_VERSION)"
]

# If true, we add flags to compile as a library
library = false

# Poulp has support for npm-like scripts.
[scripts]
test = [ "poulp build", "./$(POULP_BUILD_OUPUT)" ]

[dependencies]
gio-2.0 = "*"
valse = "^0.1.2"

[dev-dependencies]
valadate = "^0.1.0"

# You can toggle some features/options of the compiler
[features]
c-warnings = false
vapi-comments = true

If you want to learn more about all this options, check out the documentation on Framagit.

Available commands

You can install additional commands as any other package with poulp install.

Convinced?

Just install it via Flatpak:

echo "See issue #40 on Framagit"

FAQ

How to host a remote repository?

We are working on a web app to manage a repository with a nice UI. But hosting a repository is really easy. You just have to create a packages.json file. Then list your packages like in this example

Why not use waf, meson, CMake & Co?

Poulp is not just a build tool. It also manages your dependencies and let you publish your projects. And even the build command is designed specially for Vala and not as a general build tool, so it fits the developers needs better.