diff options
author | Adam Stokes <adam.stokes@ubuntu.com> | 2013-07-26 10:48:56 -0400 |
---|---|---|
committer | Adam Stokes <adam.stokes@ubuntu.com> | 2013-07-26 10:48:56 -0400 |
commit | de0b58ac472837b2e75729e00827117072a83893 (patch) | |
tree | 465fafd9c76e8a6dcae9be4fb0b7801303a33521 | |
parent | f499e561043af2f801deb48fdc91d51a29ba22e8 (diff) | |
download | sos-de0b58ac472837b2e75729e00827117072a83893.tar.gz |
Add support for distutils
- We are planning on moving to python distutils for future packaging
however, we still want to keep our current build infrastructure around
until we are able to test the builds overtime. For now distutils will
live alongside the current build process and slowly replace the Makefiles
once deemed fit.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | .travis.yml | 8 | ||||
-rw-r--r-- | debian/docs | 1 | ||||
-rw-r--r-- | debian/install | 1 | ||||
-rw-r--r-- | debian/pkg.pyinstall | 1 | ||||
-rwxr-xr-x | debian/rules | 15 | ||||
-rw-r--r-- | debian/sosreport.links | 1 | ||||
-rw-r--r-- | setup.py | 70 | ||||
-rw-r--r-- | sos/__init__.py | 34 | ||||
-rw-r--r-- | tests/utilities_tests.py | 2 |
10 files changed, 127 insertions, 10 deletions
@@ -7,10 +7,12 @@ tags buildjar/ gpgkeys/rhsupport.* dist-build/* -sos/__init__.py cover/ .coverage *.mo sos.conf.5.gz sosreport.1.gz venv +MANIFEST +build/ +dist/ diff --git a/.travis.yml b/.travis.yml index 5b87103a..5ee289fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,14 @@ language: python python: - 2.7 - - 3.2 - 3.3 - - "pypy" matrix: allow_failures: - - python: 3.2 - python: 3.3 - - python: "pypy" notifications: email: false install: - "pip install nose nose-cov --use-mirrors" - - "DESTDIR=. make install" + - "python setup.py install" script: - - "make test" + - "nosetests -v --with-cover --cover-package=sos --cover-html" diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..475d728a --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +README.md AUTHORS diff --git a/debian/install b/debian/install new file mode 100644 index 00000000..6c41a24d --- /dev/null +++ b/debian/install @@ -0,0 +1 @@ +sos.conf etc/ diff --git a/debian/pkg.pyinstall b/debian/pkg.pyinstall deleted file mode 100644 index 8b68fc88..00000000 --- a/debian/pkg.pyinstall +++ /dev/null @@ -1 +0,0 @@ -sos/* /usr/share/sosreport/ diff --git a/debian/rules b/debian/rules index 15b7f5ec..90637142 100755 --- a/debian/rules +++ b/debian/rules @@ -5,4 +5,17 @@ DH_ALWAYS_EXCLUDE=.git %: dh $@ --with python2 -override_dh_auto_test: +override_dh_auto_install: + python setup.py \ + install \ + --install-lib=usr/share/sosreport/ \ + --install-data=usr/ \ + --install-scripts=usr/share/sosreport/ \ + --root=$(CURDIR)/debian/sosreport/ \ + --no-compile -O0 + +override_dh_clean: + rm -rf build/ + rm -rf dist/ + find . -name '*.pyc' -delete + diff --git a/debian/sosreport.links b/debian/sosreport.links new file mode 100644 index 00000000..04d91625 --- /dev/null +++ b/debian/sosreport.links @@ -0,0 +1 @@ +/usr/share/sosreport/sosreport /usr/bin/sosreport diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..7672a973 --- /dev/null +++ b/setup.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +from distutils.core import setup +from distutils.command.build import build +from distutils.command.install_data import install_data +from distutils.dep_util import newer +from distutils.log import warn, info, error + +import glob +import os +import subprocess + +from sos import __version__ as VERSION + +PO_DIR = 'po' +MO_DIR = os.path.join('build', 'mo') + +class BuildData(build): + def run(self): + build.run(self) + for po in glob.glob(os.path.join(PO_DIR, '*.po')): + lang = os.path.basename(po[:-3]) + mo = os.path.join(MO_DIR, lang, 'sos.mo') + + directory = os.path.dirname(mo) + if not os.path.exists(directory): + os.makedirs(directory) + + if newer(po, mo): + try: + rc = subprocess.call(['msgfmt', '-o', mo, po]) + if rc != 0: + raise Warning("msgfmt returned %d" % (rc,)) + except Exception, e: + error("Failed gettext.") + sys.exit(1) + +class InstallData(install_data): + def run(self): + self.data_files.extend(self._find_mo_files()) + install_data.run(self) + + def _find_mo_files(self): + data_files = [] + for mo in glob.glob(os.path.join(MO_DIR, '*', 'sos.mo')): + lang = os.path.basename(os.path.dirname(mo)) + dest = os.path.join('share', 'locale', lang, 'LC_MESSAGES') + data_files.append((dest, [mo])) + return data_files + +setup(name='sosreport', + version=VERSION, + description="""Set of tools to gather troubleshooting data + from a system Sos is a set of tools that gathers information about system + hardware and configuration. The information can then be used for + diagnostic purposes and debugging. Sos is commonly used to help + support technicians and developers.""", + author='Bryn M. Reeves', + author_email='bmr@redhat.com', + url='https://github.com/sosreport/sosreport', + license="GPLv2+", + scripts=['sosreport'], + data_files=[ + ('share/man/man1', ['man/en/sosreport.1']), + ('share/man/man5', ['man/en/sos.conf.5']), + ], + packages=['sos', 'sos.plugins', 'sos.policies'], + cmdclass={'build': BuildData, 'install_data': InstallData}, + ) + diff --git a/sos/__init__.py b/sos/__init__.py new file mode 100644 index 00000000..e3735a8c --- /dev/null +++ b/sos/__init__.py @@ -0,0 +1,34 @@ +## Copyright 2010 Red Hat, Inc. +## Author: Adam Stokes <astokes@fedoraproject.org> + +## 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +""" +This module houses the i18n setup and message function. The default is to use +gettext to internationalize messages. +""" + +__version__ = "3.0" + +import gettext +gettext_dir = "/usr/share/locale" +gettext_app = "sos" + +gettext.bindtextdomain(gettext_app, gettext_dir) + +def _default(msg): + return gettext.dgettext(gettext_app, msg) + +_sos = _default diff --git a/tests/utilities_tests.py b/tests/utilities_tests.py index 5520bb16..fc9e858f 100644 --- a/tests/utilities_tests.py +++ b/tests/utilities_tests.py @@ -46,7 +46,7 @@ class DirTreeTest(unittest.TestCase): # I'll admit, this a pretty lame test, but it will at least sniff out # some syntax issues t = DirTree(os.path.dirname(sos.__file__)).as_string() - self.assertTrue('Makefile' in t) + self.assertTrue('sos' in t) class ChecksumTest(unittest.TestCase): |