summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py53
1 files changed, 48 insertions, 5 deletions
diff --git a/setup.py b/setup.py
index eceb705b..6e8c4c4b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2011, 2012 Codethink Limited
+# Copyright (C) 2011, 2012, 2013 Codethink Limited
#
# 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
@@ -23,23 +23,58 @@ from distutils.command.build import build
from distutils.command.clean import clean
import glob
import os
+import os.path
import shutil
import subprocess
+import cliapp
+
import morphlib
-class GenerateManpage(build):
+class GenerateResources(build):
def run(self):
+ if not self.dry_run:
+ self.generate_manpages()
+ self.generate_version()
build.run(self)
- print 'building manpages'
+
+ def generate_manpages(self):
+ self.announce('building manpages')
for x in ['morph']:
with open('%s.1' % x, 'w') as f:
subprocess.check_call(['python', x,
'--generate-manpage=%s.1.in' % x,
'--output=%s.1' % x], stdout=f)
+ def generate_version(self):
+ target_dir = os.path.join(self.build_lib, 'morphlib')
+
+ self.mkpath(target_dir)
+
+ def save_git_info(filename, *args):
+ path = os.path.join(target_dir, filename)
+ command = ['git'] + list(args)
+
+ self.announce('generating %s with %s' %
+ (path, ' '.join(command)))
+
+ with open(os.path.join(target_dir, filename), 'w') as f:
+ p = subprocess.Popen(command,
+ cwd=os.path.dirname(__file__),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ o = p.communicate()
+ if p.returncode:
+ raise subprocess.CalledProcessError(p.returncode, command)
+ f.write(o[0].strip())
+
+ save_git_info('version', 'describe', '--always',
+ '--dirty=-unreproducible')
+ save_git_info('commit', 'rev-parse', 'HEAD^{commit}')
+ save_git_info('tree', 'rev-parse', 'HEAD^{tree}')
+ save_git_info('ref', 'rev-parse', '--symbolic-full-name', 'HEAD')
class Clean(clean):
@@ -104,10 +139,18 @@ FIXME
url='http://www.baserock.org/',
scripts=['morph'],
packages=['morphlib'],
- package_data={'morphlib': ['plugins/*_plugin.py']},
+ package_data={
+ 'morphlib': [
+ 'plugins/*_plugin.py',
+ 'version',
+ 'commit',
+ 'tree',
+ 'ref',
+ ]
+ },
data_files=[('share/man/man1', glob.glob('*.[1-8]'))],
cmdclass={
- 'build': GenerateManpage,
+ 'build': GenerateResources,
'check': Check,
'clean': Clean,
})