This commit is contained in:
Mattias Andrée 2012-08-26 06:02:58 +02:00
parent 488a80a2d5
commit ae2bf97af0

146
setup.py
View file

@ -212,7 +212,125 @@ class Setup():
def build(self, conf): def build(self, conf):
print('\033[1;34m::\033[39mCompiling...\033[21m') print('\033[1;34m::\033[39mCompiling...\033[21m')
pass def compressCommand(ext):
if ext == 'gz': return 'gzip -9 -f'
if ext == 'xz': return 'xz -9e -f'
def compress(source, destination, ext):
print('%s < %s > %s' % (compressCommand(ext), source, destination))
(fileout, filein) = (None, None)
try:
fileout = open(destination, 'w+')
filein = open(source, 'r')
Popen(compressCommand(ext).split(' '), stdout=fileout, stdin=filein).communicate()
finally:
if fileout is not None: fileout.close()
if filein is not None: filein .close()
env = conf['custom-env-python']
if env is None:
(out, err) = Popen(['env', 'python', '--version'], stdout=PIPE, stderr=PIPE).communicate()
out += err
out = out.replace('\n', '')
env = env.split(' ')[1].split('.')[0]
if int(env) < 3: env = 'python3'
else env = 'python'
mane = False
for command in commands:
if conf[command] is not None:
mane = True
break
if mane:
(fileout, filein) = (None, None)
try:
fileout = open('ponysay.install', 'w+')
filein = open('ponysay', 'r')
data = ''.join(filein.readlines())
data = data.replace('#!/usr/bin/env python', '#!/usr/bin/env ' + env)
for sharedir in [item[0] for item in sharedirs]:
data = data.replace('/usr/share/ponysay/' + sharedir, conf[sharedir])
fileout.write(data)
finally:
if fileout is not None: fileout.close()
if filein is not None: filein .close()
for man in manpages:
key = 'man-' + man[0]
section = conf['man-section-ponysay']
if man is manpages[0]: lang = ''
else: lang = '.' + man[0]
if conf[key] is not None:
src = 'manuals/manpage' + lang + '.0'
dest = src + '.install'
(fileout, filein) = (None, None)
try:
fileout = open(dest, 'w+')
filein = open(src, 'r')
data = ''.join(filein.readlines())
data = data.replace('\n.TH PONYSAY 0', '\n.TH PONYSAY ' + conf['man-section-ponysay'])
for section in [item[0] for item in mansections]:
data = data.replace('\n.BR %s (0)' % (section), '\n.BR %s (%s)' % (section, conf['man-section-' + section]))
fileout.write(data)
finally:
if fileout is not None: fileout.close()
if filein is not None: filein .close()
src = dest
ext = conf[key + '-compression']
if ext is not None:
dest = 'manuals/manpage' + lang + '.0.' + ext
compress(src, dest, )
if conf['info'] is not None:
print('makeinfo manuals/ponysay.texinfo')
os.system('makeinfo manuals/ponysay.texinfo')
ext = conf['info-compression']
if ext is not None:
compress('ponysay.info', 'ponysay.info.' + ext, ext)
for shell in [item[0] for item in shells]:
if conf[shell] is not None:
src = 'completion/%s-completion.%s' % (shell, 'sh' if shell == 'bash' else shell)
for command in commands:
if conf[shell] in not None:
dest = src + '.' + shell
(fileout, filein) = (None, None)
try:
fileout = open(dest, 'w+')
filein = open(src, 'r')
data = ''.join(filein.readlines())
data = data.replace('/usr/bin/ponysay', conf[command])
data = data.replace('/ponysay', '\0')
data = data.replace('ponysay', command)
for sharedir in [item[0] for item in sharedirs]:
data = data.replace('/usr/share/ponysay/' + sharedir, conf[sharedir])
data = data.replace('\0', '/ponysay')
fileout.write(data)
finally:
if fileout is not None: fileout.close()
if filein is not None: filein .close()
if conf['quotes'] is not None:
removeLists([], ['quotes'])
os.mkdir('quotes')
file = None
try:
file = open('ponyquotes/ponies', 'r')
ponies = [line.replace('\n', '').split('+') for line in file.readlines()]
for pony in ponies:
print('Generating quote files for ' + pony)
for file in os.listdir('ponyquotes'):
if file.startswith(pony + '.'):
if os.path.isfile('ponyquotes/' + file):
shutil.copy(ponyquotes/ + file, 'quotes/' + '+'.join(ponies) + file[file.find('.'):]
finally:
if file is not None:
file.close()
''' '''
@ -269,13 +387,17 @@ class Setup():
os.system(pair[0]) os.system(pair[0])
for man in manpages: for man in manpages:
key = 'man-' + man[0] key = 'man-' + man[0]
section = conf['man-section-ponysay']
if man is manpages[0]: sub = 'man' + section
else: sub = man[0] + '/man' + section
if man is manpages[0]: lang = ''
else: lang = '.' + man[0]
if conf[key] is not None: if conf[key] is not None:
src = 'manpage.0.' + ('install' if conf[key + '-compression'] is None else conf[key + '-compression']) src = 'manuals/manpage' + lang + '.0.' + ('install' if conf[key + '-compression'] is None else conf[key + '-compression'])
dests = [] dests = []
section = conf['man-section-ponysay']
for command in commands: for command in commands:
if conf[command] is not None: if conf[command] is not None:
dest = '%s/%s.%s%s' % (conf[key], command, section, '' if conf[key + '-compression'] is None else '.' + conf[key + '-compression']) dest = '%s/%s/%s.%s%s' % (conf[key], sub, command, section, '' if conf[key + '-compression'] is None else '.' + conf[key + '-compression'])
dests.append(dest) dests.append(dest)
self.cp(False, src, dests) self.cp(False, src, dests)
for dir in sharefiles: for dir in sharefiles:
@ -315,13 +437,15 @@ class Setup():
files.append(file) files.append(file)
if conf['info-install'] is not None: if conf['info-install'] is not None:
infos.append(file) infos.append(file)
for man in [item[0] for item in manpages]: for man in [item[0] for item in manpages]: ## TODO manpage languages
key = 'man-' + man key = 'man-' + man
section = conf['man-section-ponysay']
if man is manpages[0]: sub = 'man' + section
else: sub = man[0] + '/man' + section
if conf[key] is not None: if conf[key] is not None:
section = conf['man-section-ponysay']
for command in commands: for command in commands:
if conf[command] is not None: if conf[command] is not None:
files.append('%s/%s.%s%s' % (conf[key], command, section, '' if conf[key + '-compression'] is None else '.' + conf[key + '-compression'])) files.append('%s/%s/%s.%s%s' % (conf[key], sub, command, section, '' if conf[key + '-compression'] is None else '.' + conf[key + '-compression']))
for dir in sharefiles: for dir in sharefiles:
if conf[dir[0]] is not None: if conf[dir[0]] is not None:
dirs.append(conf[dir[0]]) dirs.append(conf[dir[0]])
@ -372,7 +496,7 @@ class Setup():
for man in manpages: for man in manpages:
if man is manpages[0]: man = '' if man is manpages[0]: man = ''
else: man = '.' + man[0] else: man = '.' + man[0]
files.append('manuals/manpage.0' + man + '.' + comp) files.append('manuals/manpage' + man + '.0' + comp)
for shell in [item[0] for item in shells]: for shell in [item[0] for item in shells]:
for command in commands for command in commands
files.append('completion/%s-completion.%s.%s' % (shell, 'sh' if shell == 'bash' else shell, command)) files.append('completion/%s-completion.%s.%s' % (shell, 'sh' if shell == 'bash' else shell, command))
@ -506,8 +630,12 @@ class Setup():
if opts['--opt'] is not None: if opts['--opt'] is not None:
if opts['--bin-dir'] is None: opts['--bin-dir'] = ['/opt/ponysay/bin'] if opts['--bin-dir'] is None: opts['--bin-dir'] = ['/opt/ponysay/bin']
if opts['--lib-dir'] is None: opts['--lib-dir'] = ['/opt/ponysay/lib'] if opts['--lib-dir'] is None: opts['--lib-dir'] = ['/opt/ponysay/lib']
if opts['--share-dir'] is None: opts['--share-dir'] = ['/opt/ponysay/share'] if opts['--share-dir'] is None: opts['--share-dir'] = ['/usr/share']
if opts['--with-shared-cache'] is None: opts['--with-shared-cache'] = ['/var/opt/ponysay/cache'] if opts['--with-shared-cache'] is None: opts['--with-shared-cache'] = ['/var/opt/ponysay/cache']
for sharedir in sharedirs:
conf[sharedir[0]] = '/opt/ponysay/share/' + sharedir[0]
for sharefile in sharefiles:
conf[sharefile[0]] = '/opt/ponysay/share/' + sharefile[1]
for dir in ['bin', 'lib', 'share']: for dir in ['bin', 'lib', 'share']:
if opts['--' + dir + '-dir'] is not None: if opts['--' + dir + '-dir'] is not None: