aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/builtins/buildenv.hh
blob: 0923c2adb12edfacd36ecd4b13c2924077d4fcd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma once
///@file

#include "derivations.hh"
#include "store-api.hh"

namespace nix {

struct Package {
    Path path;
    bool active;
    int priority;
    Package(const Path & path, bool active, int priority) : path{path}, active{active}, priority{priority} {}
};

class BuildEnvFileConflictError : public Error
{
public:
    const Path fileA;
    const Path fileB;
    int priority;

    BuildEnvFileConflictError(
        const Path fileA,
        const Path fileB,
        int priority
    )
        : Error(
            "Unable to build profile. There is a conflict for the following files:\n"
            "\n"
            "  %1%\n"
            "  %2%",
            fileA,
            fileB
        )
        , fileA(fileA)
        , fileB(fileB)
        , priority(priority)
    {}
};

typedef std::vector<Package> Packages;

void buildProfile(const Path & out, Packages && pkgs);

void builtinBuildenv(const BasicDerivation & drv);

}