aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/testdata-joblimits/job-limits/job-limits.qbs
blob: 221105a6495c618d67a4875b89459525bd899946 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import qbs.TextFile

Project {
    property int projectJobCount
    property int productJobCount
    property int moduleJobCount
    JobLimit {
        condition: projectJobCount !== -1
        jobPool: "singleton"
        jobCount: projectJobCount
    }
    JobLimit {
        condition: projectJobCount !== -1
        jobPool: "singleton"
        jobCount: 100
    }
    CppApplication {
        name: "tool"
        consoleApplication: true
        cpp.cxxLanguageVersion: "c++14"
        Properties {
            condition: qbs.targetOS.contains("macos")
            cpp.minimumMacosVersion: "10.9"
        }
        files: "main.cpp"
        Group {
            fileTagsFilter: "application"
            fileTags: "tool_tag"
        }
        Export {
            Rule {
                alwaysRun: true
                inputs: "tool_in"
                explicitlyDependsOnFromDependencies: "tool_tag"
                Artifact { filePath: input.completeBaseName + ".out"; fileTags: "tool_out" }
                prepare: {
                    var cmd = new Command(explicitlyDependsOn.tool_tag[0].filePath,
                                          [output.filePath]);
                    cmd.workingDirectory = product.buildDirectory;
                    cmd.description = "Running tool";
                    cmd.jobPool = "singleton";
                    return cmd;
                }
            }
            JobLimit {
                condition: project.moduleJobCount !== -1
                jobPool: "singleton"
                jobCount: project.moduleJobCount
            }
            JobLimit {
                condition: project.moduleJobCount !== -1
                jobPool: "singleton"
                jobCount: 200
            }
        }
    }
    Product {
        name: "p"
        type: "tool_out"
        Depends { name: "tool" }
        Rule {
            multiplex: true
            outputFileTags: "tool_in"
            outputArtifacts: {
                var artifacts = [];
                for (var i = 0; i < 5; ++i)
                    artifacts.push({filePath: "file" + i + ".in", fileTags: "tool_in"});
                return artifacts;
            }
            prepare: {
                var commands = [];
                for (var i = 0; i < outputs.tool_in.length; ++i) {
                    var cmd = new JavaScriptCommand();
                    var output = outputs.tool_in[i];
                    cmd.output = output.filePath;
                    cmd.description = "generating " + output.fileName;
                    cmd.sourceCode = function() {
                        var f = new TextFile(output, TextFile.WriteOnly);
                        f.close();
                    }
                    commands.push(cmd);
                };
                return commands;
            }
        }
        JobLimit {
            condition: project.productJobCount !== -1
            jobPool: "singleton"
            jobCount: project.productJobCount
        }
        JobLimit {
            condition: project.productJobCount !== -1
            jobPool: "singleton"
            jobCount: 300
        }
    }
}