// Configure the nodes to bootstrap bazel on. Possible parameters are:
//   - archive: list of file to archive as a map of target, new name. %{release_name} string will
//     be replaced by the release name. An empty list means we do not archive anything
//     (for non release build).
//   - stash: list of artifacts to stash (to be released / push but no need to keep it forever)
//   - targets: list of targets to build, in addition to //src:bazel.
[
    {
        "node": "linux-x86_64",
        "variation": "",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": "bazel",
                "bazel-bin/scripts/packages/with-jdk/install.sh": "bazel-%{release_name}-installer.sh",
                "bazel-bin/scripts/packages/without-jdk/install.sh": "bazel-%{release_name}-without-jdk-installer.sh",
                "bazel-bin/scripts/packages/debian/bazel-debian.deb": "bazel_%{release_name}.deb",
                "bazel-genfiles/bazel-distfile.zip": "bazel-%{release_name}-dist.zip"
            },
            "stash": {
                "bazel-genfiles/scripts/packages/README.md": "README.md",
                "bazel-genfiles/scripts/packages/debian/bazel.dsc": "bazel.dsc",
                "bazel-genfiles/scripts/packages/debian/bazel.tar.gz": "bazel.tar.gz",
                "bazel-genfiles/site/jekyll-tree.tar": "docs.bazel.build.tar",
                "bazel-bin/src/tools/benchmark/webapp/site.tar": "perf.bazel.build.tar.nobuild"
            },
            "targets": [
                "//scripts/packages",
                "//site:jekyll-tree",
                "//src/tools/benchmark/webapp:site"
            ]
        }
    },
    { "variation": "", "node": "ubuntu_16.04-x86_64" },
    {
        "variation": "",
        "node": "freebsd-11",
        "parameters": {"archive": {"bazel-bin/src/bazel": "bazel"}}
    },
    {
        "variation": "",
        "node": "freebsd-12",
        "parameters": {"archive": {"bazel-bin/src/bazel": "bazel"}}
    },
    {
        "variation": "",
        "node": "darwin-x86_64",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": "bazel",
                "bazel-bin/scripts/packages/with-jdk/install.sh": "bazel-%{release_name}-installer.sh",
                "bazel-bin/scripts/packages/without-jdk/install.sh": "bazel-%{release_name}-installer.sh"
            },
            "targets": [
                "//scripts/packages"
            ],
            // TODO(dmarting): Do we still needs that? this could be done as an external repo
            // instead.
            "opts": ["--define IPHONE_SDK=1"]
        }
    },
    // TODO(dmarting): windows build zip with "zip -j", add it to //packages
    {
        "variation": "",
        "node": "windows-x86_64",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": ["bazel.exe", "bazel-%{release_name}.exe"]
            },
            "opts": [
                "--cpu=x64_windows_msys",
                "--host_cpu=x64_windows_msys"
            ]
        }
    },
    // TODO(dmarting): This should be a variation, not a node name
    {
        "variation": "",
        "node": "windows-msvc-x86_64",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": ["bazel.exe", "bazel-msvc-%{release_name}.exe"]
            },
            "opts": [
                "--cpu=x64_windows_msvc",
                "--copt=/w"
            ]
        }
    },
    {
        "node": "linux-x86_64",
        "variation": "-jdk7",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": "bazel",
                "bazel-bin/scripts/packages/without-jdk/install.sh": "bazel-%{release_name}-installer.sh",
                "bazel-bin/scripts/packages/debian/bazel-debian.deb": "bazel_%{release_name}.deb"
            },
            "stash": {
                "bazel-genfiles/scripts/packages/debian/bazel.dsc": "bazel.dsc",
                "bazel-genfiles/scripts/packages/debian/bazel.tar.gz": "bazel.tar.gz"
            },
            "targets": [
                "//scripts/packages",
                "//site:jekyll-tree",
                "//src/tools/benchmark/webapp:site"
            ],
            "opts": ["--define JAVA_VERSION=1.7"]
        }
    },
    { "variation": "-jdk7", "node": "ubuntu_16.04-x86_64" },
    {
        "variation": "-jdk7",
        "node": "darwin-x86_64",
        "parameters": {
            "archive": {
                "bazel-bin/src/bazel": "bazel",
                "bazel-bin/scripts/packages/without-jdk/install.sh": "bazel-%{release_name}-installer.sh"
            },
            "targets": [
                "//scripts/packages"
            ],
            "opts": ["--define JAVA_VERSION=1.7"]
        }
    }
]
