PodToBUILD icon indicating copy to clipboard operation
PodToBUILD copied to clipboard

Error in join: expected string for sequence element 0, got 'path'

Open sgammon opened this issue 3 years ago • 3 comments

While trying to build an iOS application linked to some pods (non-vendored), I get the following error:

(16:37:49) INFO: Invocation ID: e462672e-427c-4928-8d68-e4763ee2d6ad
(16:37:53) INFO: Repository Logging instantiated at:
  /Volumes/VANTAGE/platform/WORKSPACE:307:19: in <toplevel>
  /private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl:275:14: in new_pod_repository
Repository rule pod_repo_ defined at:
  /private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl:173:28: in <toplevel>
(16:37:53) ERROR: An error occurred during the fetch of repository 'Logging':
   Traceback (most recent call last):
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 105, column 27, in _impl
		_fetch_remote_repo(
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 47, column 25, in _fetch_remote_repo
		fetch_output = _exec(repository_ctx, fetch_cmd)
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 7, column 50, in _exec
		fail("Could not exec command " + " ".join(command))
Error in join: expected string for sequence element 0, got 'path'
(16:37:53) ERROR: Error fetching repository: Traceback (most recent call last):
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 105, column 27, in _impl
		_fetch_remote_repo(
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 47, column 25, in _fetch_remote_repo
		fetch_output = _exec(repository_ctx, fetch_cmd)
	File "/private/var/tmp/_bazel_sam.g/.../external/rules_pods/BazelExtensions/workspace.bzl", line 7, column 50, in _exec
		fail("Could not exec command " + " ".join(command))
Error in join: expected string for sequence element 0, got 'path'

I figured this might be an incompatibility with Bazel 4.0.0, which we recently switched to. I saw the recent commits on master related to Bazel 4 compatibility, but when using master directly, I run into #112.

WORKSPACE:

http_archive(
    name = "rules_pods",
    urls = ["https://github.com/pinterest/PodToBUILD/releases/download/0.25.2-8a5efa0/PodToBUILD.zip"],
    sha256 = "db4256e80fda350bff752f70385f3a332ac8b93d63c3ef677b11dca075dbe1ff",
)
load("@rules_pods//BazelExtensions:workspace.bzl", "new_pod_repository")

new_pod_repository(
  name = "Logging",
  url = "https://github.com/apple/swift-log/archive/173f567a2dfec11d74588eea82cecea555bdc0bc.zip",
  podspec_url = "https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/8/d/b/Logging/1.2.0/Logging.podspec.json",
  generate_module_map = False,
  inhibit_warnings = True,
)

sgammon avatar Apr 12 '21 23:04 sgammon

@dgcoffman i saw you applied the changes that introduced Bazel 4 compatibility. we're on 4.0 and getting this error -- any ideas?

sgammon avatar Apr 21 '21 23:04 sgammon

Not really... the error message looks to me like it's being generated from a failure in the error handling code itself, so who knows what the actual failure was

def _exec(repository_ctx, command):
    if repository_ctx.attr.trace:
        print("__EXEC", command)
    output = repository_ctx.execute(command)
    if output.return_code != 0:
        print("__OUTPUT", output.return_code, output.stdout, output.stderr)
        fail("Could not exec command " + " ".join(command))
    elif repository_ctx.attr.trace:
        print("__OUTPUT", output.return_code, output.stdout, output.stderr)

    return output

dgcoffman avatar Apr 22 '21 00:04 dgcoffman

The examples in this codebase are a good test harness, so if you want to go deep, you can attempt to replicate the failure in one of the examples and then you can debug workspace.bzl.

dgcoffman avatar Apr 22 '21 01:04 dgcoffman