[Pkg-libvirt-commits] [libguestfs] 13/78: python: Add a Python setup.py script.

Hilko Bengen bengen at moszumanska.debian.org
Fri May 9 12:55:36 UTC 2014


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to branch experimental
in repository libguestfs.

commit fcbfc4775fa2a44020974073594a745ca420d614
Author: Richard W.M. Jones <rjones at redhat.com>
Date:   Sat Mar 29 16:07:21 2014 +0000

    python: Add a Python setup.py script.
    
    This is not used by libguestfs right now, but it does allow you to
    build a python "distribution" of libguestfs, like this:
    
      make -C python sdist
    
    The distribution tarball will be in python/dist/
    
    You can copy the distribution tarball somewhere, unpack it, and use
    regular 'python setup.py' commands such as:
    
      python setup.py build
      python setup.py install [--prefix=...]
      python setup.py --name
    
    In future we hope to be able to upload the distribution tarball to
    PyPi, but licensing issues prevent this at present.
---
 .gitignore         | 10 +++++++++
 Makefile.am        |  1 +
 configure.ac       |  1 +
 python/MANIFEST.in | 22 +++++++++++++++++++
 python/Makefile.am | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
 python/README.txt  |  4 ++++
 python/setup.py.in | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 158 insertions(+)

diff --git a/.gitignore b/.gitignore
index 0231a04..4351e09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -377,13 +377,23 @@ Makefile.in
 /podwrapper.pl
 /po/*.gmo
 /python/bindtests.py
+/python/build
+/python/config.h
+/python/dist
 /python/examples/guestfs-python.3
 /python/examples/stamp-guestfs-python.pod
 /python/guestfs.py
 /python/guestfs-py.c
 /python/guestfs.pyc
 /python/guestfs.pyo
+/python/guestfs-internal-all.h
+/python/guestfs-internal-frontend-cleanups.h
+/python/guestfs-internal-frontend.h
+/python/MANIFEST
 /python/__pycache__
+/python/setup.py
+/python/stamp-extra-files
+/python/utils.c
 /qemu-wrapper.sh
 /rescue/stamp-virt-rescue.pod
 /rescue/virt-rescue
diff --git a/Makefile.am b/Makefile.am
index e9b3b43..479aef0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -316,6 +316,7 @@ all-local:
 	find $(DIST_SUBDIRS) -name '*.c' -o -name '*.pl' -o -name '*.pm' | \
 	grep -v -E '^(examples|gnulib|perl/(blib|examples)|po-docs|tests)/' | \
 	grep -v -E '/((guestfs|rc)_protocol\.c)$$' | \
+	grep -v -E '^python/utils.c$$' | \
 	LC_ALL=C sort > po/POTFILES
 	cd $(srcdir); \
 	find builder mllib resize sparsify sysprep -name '*.ml' | \
diff --git a/configure.ac b/configure.ac
index 7e1c068..da661c3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1661,6 +1661,7 @@ AC_CONFIG_FILES([Makefile
                  po/Makefile
                  python/Makefile
                  python/examples/Makefile
+                 python/setup.py
                  rescue/Makefile
                  resize/Makefile
                  ruby/Makefile
diff --git a/python/MANIFEST.in b/python/MANIFEST.in
new file mode 100644
index 0000000..afbc5b2
--- /dev/null
+++ b/python/MANIFEST.in
@@ -0,0 +1,22 @@
+# libguestfs Python bindings
+# Copyright (C) 2009-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+include guestfs-py.h
+include config.h
+include guestfs-internal-all.h
+include guestfs-internal-frontend-cleanups.h
+include guestfs-internal-frontend.h
diff --git a/python/Makefile.am b/python/Makefile.am
index 64907bf..025007b 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -24,12 +24,16 @@ generator_built = \
 
 EXTRA_DIST = \
 	$(generator_built) \
+	MANIFEST.in \
+	setup.py.in \
 	run-bindtests \
 	run-python-tests \
 	t/*.py
 
 if HAVE_PYTHON
 
+# Build the library.
+
 pythondir = $(PYTHON_INSTALLDIR)
 
 python_DATA = guestfs.py
@@ -55,6 +59,47 @@ libguestfsmod_la_LIBADD = \
 
 libguestfsmod_la_LDFLAGS = -avoid-version -shared -module -shrext $(PYTHON_EXT_SUFFIX)
 
+# Currently we don't use setup.py to build the Python library for
+# distribution with libguestfs (although maybe we should in future).
+# For now, these are some rules which use setup.py to make a source
+# distribution for pip, and a few other bits.
+
+sdist: setup.py stamp-extra-files
+	$(PYTHON) setup.py $@
+
+setup-build: setup.py stamp-extra-files
+	$(PYTHON) setup.py build
+
+setup-install: setup.py stamp-extra-files
+	$(PYTHON) setup.py install $(SETUP_INSTALL_ARGS)
+
+# Python's crappy MANIFEST file cannot graft single files, so we have
+# to hard-link any extra files we need into the local directory.
+stamp-extra-files: \
+	  config.h \
+	  guestfs-internal-all.h \
+	  guestfs-internal-frontend-cleanups.h \
+	  guestfs-internal-frontend.h \
+	  utils.c
+	touch $@
+
+config.h:
+	ln ../config.h $@
+
+guestfs-internal-all.h:
+	ln $(top_srcdir)/src/guestfs-internal-all.h $@
+
+guestfs-internal-frontend-cleanups.h:
+	ln $(top_srcdir)/src/guestfs-internal-frontend-cleanups.h $@
+
+guestfs-internal-frontend.h:
+	ln $(top_srcdir)/src/guestfs-internal-frontend.h $@
+
+utils.c:
+	ln $(top_srcdir)/src/utils.c $@
+
+# Tests.
+
 TESTS_ENVIRONMENT = $(top_builddir)/run --test
 
 TESTS = run-bindtests
@@ -64,3 +109,16 @@ TESTS += run-python-tests
 endif ENABLE_APPLIANCE
 
 endif HAVE_PYTHON
+
+# Extra clean.
+CLEANFILES = \
+	*~ examples/*~ t/*~ \
+	config.h \
+	guestfs-internal-all.h \
+	guestfs-internal-frontend-cleanups.h \
+	guestfs-internal-frontend.h \
+	stamp-extra-files \
+	utils.c
+
+clean-local:
+	rm -rf build dist
diff --git a/python/README.txt b/python/README.txt
new file mode 100644
index 0000000..e990875
--- /dev/null
+++ b/python/README.txt
@@ -0,0 +1,4 @@
+libguestfs is a library and set of tools for accessing and modifying
+virtual machine (VM) disk images.
+
+This package contains the Python bindings for libguestfs.
diff --git a/python/setup.py.in b/python/setup.py.in
new file mode 100644
index 0000000..65cd1ab
--- /dev/null
+++ b/python/setup.py.in
@@ -0,0 +1,62 @@
+# libguestfs Python bindings -*- python -*-
+# @configure_input@
+# Copyright (C) 2009-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from distutils.core import setup, Extension
+
+setup (name='guestfs',
+       version='@PACKAGE_VERSION@',
+
+       description='access and modify virtual machine disk images',
+       long_description="""
+libguestfs is a library and set of tools for accessing and modifying
+virtual machine (VM) disk images.
+
+This package contains the Python bindings for libguestfs.
+""",
+
+       author='The @PACKAGE_NAME@ team',
+       author_email='libguestfs at redhat.com',
+       url='http://libguestfs.org',
+
+       license='LGPLv2+',
+
+       classifiers=[
+           'Development Status :: 5 - Production/Stable',
+           'Environment :: Console',
+           'Intended Audience :: Developers',
+           'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
+           'Operating System :: POSIX :: Linux',
+           'Programming Language :: C',
+           'Programming Language :: Python :: 2',
+           'Programming Language :: Python :: 3',
+           'Programming Language :: Python :: Implementation :: CPython',
+           'Topic :: Utilities',
+       ],
+
+       py_modules=['guestfs'],
+       ext_modules=[
+           Extension (
+               'libguestfsmod',
+               ['guestfs-py-byhand.c', 'guestfs-py.c', 'utils.c'],
+
+               include_dirs=['.', '../src'],
+               libraries=['guestfs'],
+               define_macros=[('GUESTFS_PRIVATE', '1')],
+           )
+       ]
+   )

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git



More information about the Pkg-libvirt-commits mailing list