diff --git a/BUILD b/BUILD index a0f291f7be..4f2bc28722 100644 --- a/BUILD +++ b/BUILD @@ -472,8 +472,6 @@ java_library( # Python support ################################################################################ -# Requires: six for python 2/3 compatibility. `pip install six` - # Hack: # protoc generated files contain imports like: # "from google.protobuf.xxx import yyy" @@ -485,10 +483,13 @@ java_library( # that depend on the target. # # If you use python protobuf as a third_party library in your bazel managed -# project, please import the whole package to //google/protobuf in your +# project: +# 1) Please import the whole package to //google/protobuf in your # project. Otherwise, bazel disallows generated files out of the current # package, thus we won't be able to copy protobuf runtime files into # //google/protobuf/. +# 2) The runtime also requires "six" for Python2/3 compatibility, please see the +# WORKSPACE file and bind "six" to your workspace as well. internal_copied_filegroup( name = "python_srcs", srcs = glob( @@ -510,6 +511,7 @@ py_proto_library( include = "src", protoc = ":protoc", py_extra_srcs = [":python_srcs"], + py_libs = ["//external:six"], visibility = ["//visibility:public"], ) @@ -534,7 +536,10 @@ py_proto_library( py_proto_library( name = "python_specific_test_protos", - srcs = glob(["python/google/protobuf/internal/*.proto"]), + srcs = glob([ + "python/google/protobuf/internal/*.proto", + "python/google/protobuf/internal/import_test_package/*.proto", + ]), include = "python", protoc = ":protoc", deps = [":python_common_test_protos"], @@ -552,6 +557,9 @@ py_library( internal_protobuf_py_tests( name = "python_tests_batch", + data = glob([ + "src/google/protobuf/**/*", + ]), modules = [ "descriptor_database_test", "descriptor_pool_test", @@ -559,13 +567,13 @@ internal_protobuf_py_tests( "generator_test", "json_format_test", "message_factory_test", - # "message_test", # failed due to testdata path + "message_test", "proto_builder_test", - # "reflection_test", # failed due to testdata path + "reflection_test", "service_reflection_test", "symbol_database_test", "text_encoding_test", - # "text_format_test", # failed due to testdata path + "text_format_test", "unknown_fields_test", "wire_format_test", ], diff --git a/WORKSPACE b/WORKSPACE index f72f239a06..c3f18cc7b7 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -5,6 +5,13 @@ new_http_archive( build_file = "gmock.BUILD", ) +new_http_archive( + name = "six_archive", + url = "https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55", + sha256 = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a", + build_file = "six.BUILD", +) + bind( name = "gtest", actual = "@gmock_archive//:gtest", @@ -14,3 +21,8 @@ bind( name = "gtest_main", actual = "@gmock_archive//:gtest_main", ) + +bind( + name = "six", + actual = "@six_archive//:six", +) diff --git a/six.BUILD b/six.BUILD new file mode 100644 index 0000000000..55c53a4231 --- /dev/null +++ b/six.BUILD @@ -0,0 +1,12 @@ +genrule( + name = "copy_six", + srcs = ["six-1.10.0/six.py"], + outs = ["six.py"], + cmd = "cp $< $(@)", +) + +py_library( + name = "six", + srcs = ["six.py"], + visibility = ["//visibility:public"], +)