aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stokes <adam.stokes@ubuntu.com>2013-07-26 09:16:44 -0700
committerAdam Stokes <adam.stokes@ubuntu.com>2013-07-26 09:16:44 -0700
commit9c97f8f731aaedd46ecd9c3194c4410b73a3b983 (patch)
tree465fafd9c76e8a6dcae9be4fb0b7801303a33521
parentf499e561043af2f801deb48fdc91d51a29ba22e8 (diff)
parentde0b58ac472837b2e75729e00827117072a83893 (diff)
downloadsos-9c97f8f731aaedd46ecd9c3194c4410b73a3b983.tar.gz
Merge pull request #177 from battlemidget/feature-distutils-3
Add support for distutils
-rw-r--r--.gitignore4
-rw-r--r--.travis.yml8
-rw-r--r--debian/docs1
-rw-r--r--debian/install1
-rw-r--r--debian/pkg.pyinstall1
-rwxr-xr-xdebian/rules15
-rw-r--r--debian/sosreport.links1
-rw-r--r--setup.py70
-rw-r--r--sos/__init__.py34
-rw-r--r--tests/utilities_tests.py2
10 files changed, 127 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index 52a89859..8a5df3a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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):