python: Add setuptools for Python lib for PyPI.
authorTerry Wilson <twilson@redhat.com>
Fri, 10 Apr 2015 19:57:00 +0000 (14:57 -0500)
committerBen Pfaff <blp@nicira.com>
Tue, 14 Apr 2015 16:28:57 +0000 (09:28 -0700)
This adds very basic support for setuptools so that the OVS Python
lib can be added to PyPI.

This currently uses the Open vSwitch version number and the
generated dirs.py, though there is no real reason to tie the
Python libraries releases or version numbers to the main project's.

Signed-off-by: Terry Wilson <twilson@redhat.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
Acked-by: Kyle Mestery <mestery@mestery.com>
[blp@nicira.com adjusted automake.mk]
Signed-off-by: Ben Pfaff <blp@nicira.com>
python/.gitignore [new file with mode: 0644]
python/README.rst [new file with mode: 0644]
python/automake.mk
python/setup.py [new file with mode: 0644]

diff --git a/python/.gitignore b/python/.gitignore
new file mode 100644 (file)
index 0000000..60ace6f
--- /dev/null
@@ -0,0 +1,2 @@
+dist/
+*.egg-info
diff --git a/python/README.rst b/python/README.rst
new file mode 100644 (file)
index 0000000..4f4742c
--- /dev/null
@@ -0,0 +1 @@
+Python library for working with Open vSwitch
index f6ab606..3a7f040 100644 (file)
@@ -41,6 +41,11 @@ EXTRA_DIST += \
        python/build/__init__.py \
        python/build/nroff.py
 
+# PyPI support.
+EXTRA_DIST += \
+       python/README.rst \
+       python/setup.py
+
 PYFILES = $(ovs_pyfiles) python/ovs/dirs.py $(ovstest_pyfiles)
 EXTRA_DIST += $(PYFILES)
 PYCOV_CLEAN_FILES += $(PYFILES:.py=.py,cover)
@@ -62,6 +67,12 @@ ovs-install-data-local:
        $(MKDIR_P) $(DESTDIR)$(pkgdatadir)/python/ovs
        $(INSTALL_DATA) python/ovs/dirs.py.tmp $(DESTDIR)$(pkgdatadir)/python/ovs/dirs.py
        rm python/ovs/dirs.py.tmp
+
+python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
+       (cd python/ && $(PYTHON) setup.py sdist)
+
+pypi-upload: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
+       (cd python/ && $(PYTHON) setup.py sdist upload)
 else
 ovs-install-data-local:
        @:
diff --git a/python/setup.py b/python/setup.py
new file mode 100644 (file)
index 0000000..889d215
--- /dev/null
@@ -0,0 +1,46 @@
+# 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.
+
+from __future__ import print_function
+import sys
+
+import setuptools
+
+VERSION = "unknown"
+
+try:
+    # Try to set the version from the generated ovs/version.py
+    execfile("ovs/version.py")
+except IOError:
+    print("Ensure version.py is created by running make python/ovs/version.py",
+          file=sys.stderr)
+    sys.exit(-1)
+
+
+setuptools.setup(
+    name='ovs',
+    description='Open vSwitch library',
+    version=VERSION,
+    url='http://www.openvswitch.org/',
+    author='Open vSwitch',
+    author_email='dev@openvswitch.org',
+    packages=['ovs', 'ovs.db', 'ovs.unixctl'],
+    keywords=['openvswitch', 'ovs', 'OVSDB'],
+    license='Apache 2.0',
+    classifiers=[
+        'Development Status :: 5 - Production/Stable',
+        'Topic :: Database :: Front-Ends',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+        'Topic :: System :: Networking',
+        'License :: OSI Approved :: Apache Software License'
+    ]
+)