Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bazel cannot find Pinned json file because it assumes there is a Build #242

Closed
KaoruDev opened this issue Sep 12, 2019 · 5 comments · Fixed by #243
Closed

Bazel cannot find Pinned json file because it assumes there is a Build #242

KaoruDev opened this issue Sep 12, 2019 · 5 comments · Fixed by #243

Comments

@KaoruDev
Copy link
Contributor

Problem

When starting up bazel, I see this error:

Unable to load package for //:maven_install.json: BUILD file not found in any of the following directories.
 - /path/to/project

WORKSPACE file

rules_scala_version="acac888c86e79110d1d08ab5578a7d0101c97963" # update this as needed

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "io_bazel_rules_scala",
    strip_prefix = "rules_scala-%s" % rules_scala_version,
    type = "zip",
    url = "https://github.com/bazelbuild/rules_scala/archive/%s.zip" % rules_scala_version,
)

load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
scala_register_toolchains()

load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
scala_repositories()

protobuf_version="09745575a923640154bcf307fba8aedff47f240a"
protobuf_version_sha256="416212e14481cff8fd4849b1c1c1200a7f34808a54377e22d7447efdf54ad758"

http_archive(
    name = "com_google_protobuf",
    url = "https://github.com/protocolbuffers/protobuf/archive/%s.tar.gz" % protobuf_version,
    strip_prefix = "protobuf-%s" % protobuf_version,
    sha256 = protobuf_version_sha256,
)

# bazel-skylib 0.8.0 released 2019.03.20 (https://github.com/bazelbuild/bazel-skylib/releases/tag/0.8.0)
skylib_version = "0.8.0"
http_archive(
    name = "bazel_skylib",
    type = "tar.gz",
    url = "https://github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib.{}.tar.gz".format (skylib_version, skylib_version),
    sha256 = "2ef429f5d7ce7111263289644d233707dba35e39696377ebab8b0bc701f7818e",
)

scala_repositories((
    "2.12.8",
    {
       "scala_compiler": "f34e9119f45abd41e85b9e121ba19dd9288b3b4af7f7047e86dc70236708d170",
       "scala_library": "321fb55685635c931eba4bc0d7668349da3f2c09aee2de93a70566066ff25c28",
       "scala_reflect": "4d6405395c4599ce04cea08ba082339e3e42135de9aae2923c9f5367e957315a"
    }
))

RULES_JVM_EXTERNAL_TAG = "2.7"
RULES_JVM_EXTERNAL_SHA = "f04b1466a00a2845106801e0c5cec96841f49ea4e7d1df88dc8e4bf31523df74"

http_archive(
    name = "rules_jvm_external",
    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
    sha256 = RULES_JVM_EXTERNAL_SHA,
    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)

load("@rules_jvm_external//:defs.bzl", "maven_install")

dropwizards_version = "4.1.0"

maven_install(
    name = "maven",
    artifacts = [
        "ch.qos.logback:logback-classic:1.2.3",
        "ch.qos.logback:logback-core:1.2.3",
        "com.beachape:enumeratum_2.12:1.5.12",
        "com.typesafe:config:1.3.4",
        "io.dropwizard.metrics:metrics-core:%s" % dropwizards_version,
        "io.dropwizard.metrics:metrics-healthchecks:%s" % dropwizards_version,
        "io.dropwizard.metrics:metrics-jvm:%s" % dropwizards_version,
        "io.dropwizard.metrics:metrics-logback:%s" % dropwizards_version,
        "joda-time:joda-time:2.10.1",
        "nl.grons:metrics-scala_2.12:4.0.0",
        "org.clapper:grizzled-slf4j_2.12:1.3.4",
        "org.coursera:metrics-datadog:1.1.14",
        "org.coursera:metrics-datadog:1.1.12",
        "org.hamcrest:hamcrest-all:1.3",
        "org.joda:joda-convert:1.8.1",
        "org.mindrot:jbcrypt:0.4",
        "org.mockito:mockito-core:2.24.0",
        "org.scalatest:scalatest_2.12:3.0.5",
        "org.slf4j:slf4j-api:1.7.26",
        "org.slf4j:jul-to-slf4j:1.7.25",
        "commons-logging:commons-logging:1.2",
        "net.logstash.logback:logstash-logback-encoder:6.1",
    ],
    repositories = [
        "https://central.maven.org/maven2/",
        "https://jcenter.bintray.com/"
    ],
    fetch_sources = True,
    maven_install_json = "//:maven_install.json"
)
load("@maven//:defs.bzl", "pinned_maven_install")
pinned_maven_install()

Bazel Version:

Build label: 0.28.1
Build target: bazel-out/darwin-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Jul 19 15:22:50 2019 (1563549770)
Build timestamp: 1563549770
Build timestamp as int: 1563549770

Workaround

  • moved maven_install.json to external/maven_install.json
  • changed maven_install_json = "//:maven_install.json" to maven_install_json = "maven_install.json"
@KaoruDev
Copy link
Contributor Author

creating an empty BUILD file in the top directory seems to fix this issue too. Not sure if these instructions should be made more clear in the README? If so I'd be happy to open a PR.

@jin
Copy link
Collaborator

jin commented Sep 12, 2019

creating an empty BUILD file in the top directory seems to fix this issue too. Not sure if these instructions should be made more clear in the README? If so I'd be happy to open a PR.

This is the recommended way. We haven't ran into this issue because most projects have a top level BUILD file. Sorry for missing it out on the documentation - happy to take a PR for this!

@jin
Copy link
Collaborator

jin commented Sep 12, 2019

Actually, if this works:

changed maven_install_json = "//:maven_install.json" to maven_install_json = "maven_install.json"

it's a better user experience since it'll work for all projects with or without a top level BUILD file.

@KaoruDev
Copy link
Contributor Author

KaoruDev commented Sep 12, 2019

so maven_install_json = maven_install.json only works if you move maven_install.json to external/maven_install.json

I'm not sure exactly what the external directory is meant to represent.

This is what the doc currently says:

      external/                           <== The directory that remote repositories are
                                              downloaded/symlinked into.

I think just explicitly calling out having a top-level BUILD file may work might be okay for now.

@jin
Copy link
Collaborator

jin commented Sep 12, 2019

so maven_install_json = maven_install.json only works if you move maven_install.json to external/maven_install.json

Ahh, right. The external directory represents a special package in the context of repository rules, like maven_install.

Let's go with the recommendation of the top level BUILD file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants