aboutsummaryrefslogtreecommitdiffhomepage
path: root/python/setup.py
diff options
context:
space:
mode:
authorGravatar Dan O'Reilly <oreilldf@gmail.com>2015-08-12 23:57:46 -0400
committerGravatar Dan O'Reilly <oreilldf@gmail.com>2015-08-12 23:57:46 -0400
commite47cdd5a559f488ba52756927ce68f4cf93874fa (patch)
tree8ce2723e822808baf58e96f569c86035717ea351 /python/setup.py
parentdaeaa6a28b81195f24d89222e649d79c9555af8b (diff)
parent38a56ee4b19d72c2e9d81a08b018704d1addf561 (diff)
Merge remote-tracking branch 'upstream/master' into py2_py3_straddle
Conflicts: python/google/protobuf/descriptor_pool.py python/google/protobuf/internal/api_implementation_default_test.py python/google/protobuf/internal/cpp_message.py python/google/protobuf/internal/descriptor_database_test.py python/google/protobuf/internal/descriptor_pool_test.py python/google/protobuf/internal/descriptor_python_test.py python/google/protobuf/internal/descriptor_test.py python/google/protobuf/internal/generator_test.py python/google/protobuf/internal/message_factory_python_test.py python/google/protobuf/internal/message_factory_test.py python/google/protobuf/internal/message_test.py python/google/protobuf/internal/proto_builder_test.py python/google/protobuf/internal/python_message.py python/google/protobuf/internal/reflection_test.py python/google/protobuf/internal/service_reflection_test.py python/google/protobuf/internal/symbol_database_test.py python/google/protobuf/internal/text_encoding_test.py python/google/protobuf/internal/text_format_test.py python/google/protobuf/internal/unknown_fields_test.py python/google/protobuf/internal/wire_format_test.py python/google/protobuf/pyext/descriptor_cpp2_test.py python/google/protobuf/pyext/message_factory_cpp2_test.py python/google/protobuf/pyext/reflection_cpp2_generated_test.py python/setup.py ruby/lib/google/protobuf/message_exts.rb
Diffstat (limited to 'python/setup.py')
-rwxr-xr-xpython/setup.py127
1 files changed, 73 insertions, 54 deletions
diff --git a/python/setup.py b/python/setup.py
index 32176ae6..ba0dac2c 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -1,9 +1,10 @@
-#! /usr/bin/python
+#! /usr/bin/env python
#
# See README for usage instructions.
-import sys
+import glob
import os
import subprocess
+import sys
# We must use setuptools, not distutils, because we need to use the
# namespace_packages option for the "google" package.
@@ -17,19 +18,20 @@ except ImportError:
except ImportError:
sys.stderr.write(
"Could not import setuptools; make sure you have setuptools or "
- "ez_setup installed.\n")
+ "ez_setup installed.\n"
+ )
raise
+
from distutils.command.clean import clean as _clean
-if sys.version_info[0] >= 3:
- # Python 3
- from distutils.command.build_py import build_py_2to3 as _build_py
+
+if sys.version_info[0] == 3:
+ # Python 3
+ from distutils.command.build_py import build_py_2to3 as _build_py
else:
- # Python 2
- from distutils.command.build_py import build_py as _build_py
+ # Python 2
+ from distutils.command.build_py import build_py as _build_py
from distutils.spawn import find_executable
-maintainer_email = "protobuf@googlegroups.com"
-
# Find the Protocol Compiler.
if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):
protoc = os.environ['PROTOC']
@@ -44,23 +46,38 @@ elif os.path.exists("../vsprojects/Release/protoc.exe"):
else:
protoc = find_executable("protoc")
-def generate_proto(source):
+
+def GetVersion():
+ """Gets the version from google/protobuf/__init__.py
+
+ Do not import google.protobuf.__init__ directly, because an installed
+ protobuf library may be loaded instead."""
+
+ with open(os.path.join('google', 'protobuf', '__init__.py')) as version_file:
+ exec(version_file.read(), globals())
+ return __version__
+
+
+def generate_proto(source, require = True):
"""Invokes the Protocol Compiler to generate a _pb2.py from the given
.proto file. Does nothing if the output already exists and is newer than
the input."""
+ if not require and not os.path.exists(source):
+ return
+
output = source.replace(".proto", "_pb2.py").replace("../src/", "")
if (not os.path.exists(output) or
(os.path.exists(source) and
os.path.getmtime(source) > os.path.getmtime(output))):
- print ("Generating %s..." % output)
+ print("Generating %s..." % output)
if not os.path.exists(source):
sys.stderr.write("Can't find required file: %s\n" % source)
sys.exit(-1)
- if protoc == None:
+ if protoc is None:
sys.stderr.write(
"protoc is not installed nor found in ../src. Please compile it "
"or install the binary package.\n")
@@ -142,45 +159,47 @@ if __name__ == '__main__':
if cpp_impl in sys.argv:
sys.argv.remove(cpp_impl)
# C++ implementation extension
- ext_module_list.append(Extension(
- "google.protobuf.pyext._message",
- [ "google/protobuf/pyext/descriptor.cc",
- "google/protobuf/pyext/message.cc",
- "google/protobuf/pyext/extension_dict.cc",
- "google/protobuf/pyext/repeated_scalar_container.cc",
- "google/protobuf/pyext/repeated_composite_container.cc" ],
- define_macros=[('GOOGLE_PROTOBUF_HAS_ONEOF', '1')],
- include_dirs = [ ".", "..", "../src"],
- libraries = [ "protobuf" ],
- library_dirs = [ '../src/.libs' ],
- ))
-
- setup(name = 'protobuf',
- version = '3.0.0-pre',
- description = 'Protocol Buffers',
- long_description =
- "Protocol Buffers are Google's data interchange format.",
- url = 'https://developers.google.com/protocol-buffers/',
- maintainer = maintainer_email,
- maintainer_email = 'protobuf@googlegroups.com',
- license = 'New BSD License',
- classifiers=[
- "Programming Language :: Python",
- "Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.6",
- "Programming Language :: Python :: 2.7",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.3",
- "Programming Language :: Python :: 3.4",
- ],
- namespace_packages = [ 'google' ],
- packages = find_packages(
- exclude=[
- "import_test_package",
- ]),
- test_suite = 'setup.MakeTestSuite',
- google_test_dir = "google/protobuf/internal",
- cmdclass = { 'clean': clean, 'build_py': build_py },
- install_requires = ['setuptools', 'six'],
- ext_modules = ext_module_list,
+ ext_module_list.append(
+ Extension(
+ "google.protobuf.pyext._message",
+ glob.glob('google/protobuf/pyext/*.cc'),
+ define_macros=[('GOOGLE_PROTOBUF_HAS_ONEOF', '1')],
+ include_dirs=[".", "../src"],
+ libraries=['protobuf'],
+ library_dirs=['../src/.libs'],
)
+ )
+ os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'cpp'
+
+ setup(
+ name='protobuf',
+ version=GetVersion(),
+ description='Protocol Buffers',
+ long_description="Protocol Buffers are Google's data interchange format",
+ url='https://developers.google.com/protocol-buffers/',
+ maintainer='protobuf@googlegroups.com',
+ maintainer_email='protobuf@googlegroups.com',
+ license='New BSD License',
+ classifiers=[
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.6",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4",
+ ],
+ namespace_packages=['google'],
+ packages=find_packages(
+ exclude=[
+ 'import_test_package',
+ ],
+ ),
+ test_suite='google.protobuf.internal',
+ cmdclass={
+ 'clean': clean,
+ 'build_py': build_py,
+ },
+ install_requires=['setuptools', 'six'],
+ ext_modules=ext_module_list,
+ )