Skip to content
Esben Haabendal edited this page Sep 15, 2016 · 1 revision

Fetching sourc files (ingredients) should not be handled by a docker container task.

Instead, all tasks can have ingredients added to them.

Each ingredient is seen as a separate thing, and the idea is to normally add just one ingredient to the first task in the recipe.

Fx. adding a git checkout to /xd/src, either from local recipe git repository, or from a remote git repository. Or adding a (remote url) tarball.

When adding an ingredient, a target path must be specified, so that for special cases it will be possible to combine multiple ingredients in one recipe.

Patch files will not be handled specially. The idea is to recommend that whenever it is necessary to patch an upstream project, a separate git repository is created, and the patches then be carried there as git commits, and the ingredients is then just that git repository instead of the upstream. This leverages git for managing "patch stacks", and makes it more visible to upstream and other people not using XD-Build what has been changed.

There must be a mechanism to specify the addition of an ingredient to a task.

Processing of the ingredients can hopefully be parallelized easily by the use of the multiprocessing Python module.

A dedicated fetch queue should be managed, and should be loosely coupled to the task queue. If multiple tasks needs the same source, only a single entry in the fetch queue should exist. And for each entry in the task queue, there should be references to the entries in the fetch queue that it depends on (if any). This way, the fetching can be parallelized and processed in parallel with the parallelized task queue. And by applying some kind of weighting algorithm, it should be possible to arrange it so that fetching is done in an efficient order for keeping the build queue active as much as possible.

Clone this wiki locally