// 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}-without-jdk-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": [
                "--copt=-w",
                "--host_copt=-w",
                // TODO(pcloudy):
                // Remove it after wrapper-less CROSSTOOL becomes default
                "--action_env=NO_MSVC_WRAPPER=1",
            ]
        }
    }
]
