blob: add067913f6c637fb61e972170842f2e8f77d19e [file] [log] [blame]
# Copyright 2017 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The Eclipse website provides SHA-512 but Bazel only support SHA256.
# Really Bazel should start supporting all "safe" checksum (and also
# drop support for SHA-1).
SHA256_SUM={
# TODO(dmarting): we only support 4.5.2 right now because we need to
# download all version of eclipse to provide those checksums...
"4.5.2": {
"macosx-cocoa-x86_64": "755f8a75075f6310a8d0453b5766a84aca2fcc687808341b7a657259230b490f",
"linux-gtk-x86_64": "87f82b0c13c245ee20928557dbc4435657d1e029f72d9135683c8d585c69ba8d"
}
}
def _get_file_url(version, platform, t):
drop = "drops"
if int(version.split(".", 1)[0]) >= 4:
drop = "drops4"
short_version = version.split("-", 1)[0]
sha256 = ""
if short_version in SHA256_SUM:
if platform in SHA256_SUM[short_version]:
sha256 = SHA256_SUM[short_version][platform]
filename = "eclipse-SDK-%s-%s.%s" % (short_version, platform, t)
file = "/eclipse/downloads/%s/R-%s/%s" % (
drop,
version,
filename)
# This is a mirror, original base url is http://www.eclipse.org/downloads/download.php?file=
base_url = "https://storage.googleapis.com/bazel-mirror/download.eclipse.org"
return (base_url + file, sha256)
def _eclipse_platform_impl(rctx):
version = rctx.attr.version
os_name = rctx.os.name.lower()
if os_name.startswith("mac os"):
platform = "macosx-cocoa-x86_64"
t = "tar.gz"
elif os_name.startswith("linux"):
platform = "linux-gtk-x86_64"
t = "tar.gz"
else:
fail("Cannot fetch Eclipse for platform %s" % rctx.os.name)
url, sha256 = _get_file_url(version, platform, t)
rctx.download_and_extract(url=url, type=t, sha256=sha256)
rctx.file("BUILD.bazel", """
package(default_visibility = ["//visibility:public"])
filegroup(name = "platform", srcs = glob(["**"], exclude = ["BUILD.bazel", "BUILD"]))
filegroup(name = "launcher", srcs = glob(["**/plugins/org.eclipse.equinox.launcher_*.jar"]))
""")
eclipse_platform = repository_rule(
implementation = _eclipse_platform_impl,
attrs = {
"version": attr.string(mandatory=True),
}, local=False)
"""A repository for downloading the good version eclipse depending on the platform."""