Date: Friday, March 15, 2013 @ 06:00:17 Author: heftig Revision: 180034
marginally tested python3 patch, but better than nothing Added: unoconv/trunk/python3.patch Modified: unoconv/trunk/PKGBUILD ---------------+ PKGBUILD | 15 -- python3.patch | 358 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 364 insertions(+), 9 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-03-15 02:22:37 UTC (rev 180033) +++ PKGBUILD 2013-03-15 05:00:17 UTC (rev 180034) @@ -5,22 +5,19 @@ pkgname=unoconv pkgver=0.6 -pkgrel=2 +pkgrel=3 pkgdesc="Libreoffice-based document converter" -depends=('python2' 'libreoffice-common') +depends=('python' 'libreoffice-common') makedepends=('asciidoc') arch=('any') license=('GPL2') url="http://dag.wieers.com/home-made/unoconv" -source=("$url/$pkgname-$pkgver.tar.gz") -sha256sums=('790e614b8615217ef4588b187f0018b526ec2bb480c6b9b2ffb9b82f48da73d4') +source=("$url/$pkgname-$pkgver.tar.gz" python3.patch) +sha256sums=('790e614b8615217ef4588b187f0018b526ec2bb480c6b9b2ffb9b82f48da73d4' + '424c371768442951e9fa0d5fccd91f78d5da808fecf047b54862e322484f45d7') -build() { - cd $pkgname-$pkgver - sed -i '1s/python$/&2/' unoconv -} - package() { cd $pkgname-$pkgver make DESTDIR="$pkgdir" install + patch "$pkgdir/usr/bin/unoconv" "$srcdir/python3.patch" } Added: python3.patch =================================================================== --- python3.patch (rev 0) +++ python3.patch 2013-03-15 05:00:17 UTC (rev 180034) @@ -0,0 +1,358 @@ +--- /usr/bin/unoconv 2012-10-02 00:57:35.000000000 +0200 ++++ unoconv 2013-03-13 22:04:42.584278253 +0100 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + ### 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 +@@ -14,6 +14,7 @@ + ### Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + ### Copyright 2007-2010 Dag Wieers <d...@wieers.com> + ++from __future__ import print_function + from distutils.version import LooseVersion + import getopt + import glob +@@ -233,18 +234,18 @@ + + def debug_office(): + if 'URE_BOOTSTRAP' in os.environ: +- print >>sys.stderr, 'URE_BOOTSTRAP=%s' % os.environ['URE_BOOTSTRAP'] ++ print('URE_BOOTSTRAP=%s' % os.environ['URE_BOOTSTRAP'], file=sys.stderr) + if 'UNO_PATH' in os.environ: +- print >>sys.stderr, 'UNO_PATH=%s' % os.environ['UNO_PATH'] ++ print('UNO_PATH=%s' % os.environ['UNO_PATH'], file=sys.stderr) + if 'UNO_TYPES' in os.environ: +- print >>sys.stderr, 'UNO_TYPES=%s' % os.environ['UNO_TYPES'] +- print 'PATH=%s' % os.environ['PATH'] ++ print('UNO_TYPES=%s' % os.environ['UNO_TYPES'], file=sys.stderr) ++ print('PATH=%s' % os.environ['PATH']) + if 'PYTHONHOME' in os.environ: +- print >>sys.stderr, 'PYTHONHOME=%s' % os.environ['PYTHONHOME'] ++ print('PYTHONHOME=%s' % os.environ['PYTHONHOME'], file=sys.stderr) + if 'PYTHONPATH' in os.environ: +- print >>sys.stderr, 'PYTHONPATH=%s' % os.environ['PYTHONPATH'] ++ print('PYTHONPATH=%s' % os.environ['PYTHONPATH'], file=sys.stderr) + if 'LD_LIBRARY_PATH' in os.environ: +- print >>sys.stderr, 'LD_LIBRARY_PATH=%s' % os.environ['LD_LIBRARY_PATH'] ++ print('LD_LIBRARY_PATH=%s' % os.environ['LD_LIBRARY_PATH'], file=sys.stderr) + + def python_switch(office): + if office.pythonhome: +@@ -335,11 +336,11 @@ + return ret + + def display(self, doctype): +- print >>sys.stderr, "The following list of %s formats are currently available:\n" % doctype ++ print("The following list of %s formats are currently available:\n" % doctype, file=sys.stderr) + for fmt in self.list: + if fmt.doctype == doctype: +- print >>sys.stderr, " %-8s - %s" % (fmt.name, fmt) +- print >>sys.stderr ++ print(" %-8s - %s" % (fmt.name, fmt), file=sys.stderr) ++ print(file=sys.stderr) + + fmts = FmtList() + +@@ -530,14 +531,14 @@ + 'outputpath', 'password=', 'pipe=', 'port=', 'server=', + 'timeout=', 'show', 'stdout', 'template', 'verbose', + 'version'] ) +- except getopt.error, exc: +- print 'unoconv: %s, try unoconv -h for a list of all the options' % str(exc) ++ except getopt.error as exc: ++ print('unoconv: %s, try unoconv -h for a list of all the options' % str(exc)) + sys.exit(255) + + for opt, arg in opts: + if opt in ['-h', '--help']: + self.usage() +- print ++ print() + self.help() + sys.exit(1) + elif opt in ['-c', '--connection']: +@@ -562,7 +563,7 @@ + except ValueError: + self.exportfilter.append( PropertyValue( name, 0, value, 0 ) ) + else: +- print >>sys.stderr, 'Warning: Option %s cannot be parsed, ignoring.' % arg ++ print('Warning: Option %s cannot be parsed, ignoring.' % arg, file=sys.stderr) + elif opt in ['-f', '--format']: + self.format = arg + elif opt in ['-i', '--import']: +@@ -581,7 +582,7 @@ + except ValueError: + self.importfilter.append( PropertyValue( name, 0, value, 0 ) ) + else: +- print >>sys.stderr, 'Warning: Option %s cannot be parsed, ignoring.' % arg ++ print('Warning: Option %s cannot be parsed, ignoring.' % arg, file=sys.stderr) + elif opt in ['-l', '--listener']: + self.listener = True + elif opt in ['-n', '--no-launch']: +@@ -589,7 +590,7 @@ + elif opt in ['-o', '--output']: + self.output = arg + elif opt in ['--outputpath']: +- print >>sys.stderr, 'Warning: This option is deprecated by --output.' ++ print('Warning: This option is deprecated by --output.', file=sys.stderr) + self.output = arg + elif opt in ['--password']: + self.password = arg +@@ -615,13 +616,13 @@ + + ### Enable verbosity + if self.verbose >= 2: +- print >>sys.stderr, 'Verbosity set to level %d' % self.verbose ++ print('Verbosity set to level %d' % self.verbose, file=sys.stderr) + + self.filenames = args + + if not self.listener and not self.showlist and self.doctype != 'list' and not self.filenames: +- print >>sys.stderr, 'unoconv: you have to provide a filename as argument' +- print >>sys.stderr, 'Try `unoconv -h\' for more information.' ++ print('unoconv: you have to provide a filename as argument', file=sys.stderr) ++ print('Try `unoconv -h\' for more information.', file=sys.stderr) + sys.exit(255) + + ### Set connection string +@@ -659,21 +660,21 @@ + ### Get office product information + product = uno.getComponentContext().ServiceManager.createInstance("com.sun.star.configuration.ConfigurationProvider").createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", UnoProps(nodepath="/org.openoffice.Setup/Product")) + +- print 'unoconv %s' % VERSION +- print 'Written by Dag Wieers <d...@wieers.com>' +- print 'Homepage at http://dag.wieers.com/home-made/unoconv/' +- print +- print 'platform %s/%s' % (os.name, sys.platform) +- print 'python %s' % sys.version +- print product.ooName, product.ooSetupVersion +-# print +-# print 'build revision $Rev$' ++ print('unoconv %s' % VERSION) ++ print('Written by Dag Wieers <d...@wieers.com>') ++ print('Homepage at http://dag.wieers.com/home-made/unoconv/') ++ print() ++ print('platform %s/%s' % (os.name, sys.platform)) ++ print('python %s' % sys.version) ++ print(product.ooName, product.ooSetupVersion) ++# print() ++# print('build revision $Rev$' + + def usage(self): +- print >>sys.stderr, 'usage: unoconv [options] file [file2 ..]' ++ print('usage: unoconv [options] file [file2 ..]', file=sys.stderr) + + def help(self): +- print >>sys.stderr, '''Convert from and to any format supported by LibreOffice ++ print('''Convert from and to any format supported by LibreOffice + + unoconv options: + -c, --connection=string use a custom connection string +@@ -698,7 +699,7 @@ + -t, --template=file import the styles from template (.ott) + -T, --timeout=secs timeout after secs if connection to listener fails + -v, --verbose be more and more verbose (-vvv for debugging) +-''' ++''', file=sys.stderr) + + class Convertor: + def __init__(self): +@@ -714,7 +715,7 @@ + info(3, 'Connection type: %s' % op.connection) + try: + unocontext = resolver.resolve("uno:%s" % op.connection) +- except NoConnectException, e: ++ except NoConnectException as e: + # info(3, "Existing listener not found.\n%s" % e) + info(3, "Existing listener not found.") + +@@ -749,7 +750,7 @@ + raise + else: + error("Failed to connect to %s (pid=%s) in %d seconds.\n%s" % (office.binary, ooproc.pid, op.timeout, e)) +- except Exception, e: ++ except Exception as e: + raise + error("Launch of %s failed.\n%s" % (office.binary, e)) + +@@ -792,16 +793,16 @@ + break + else: + outputfmt = outputfmt[0] +- # print >>sys.stderr, 'unoconv: format `%s\' is part of multiple doctypes %s, selecting `%s\'.' % (format, [fmt.doctype for fmt in outputfmt], outputfmt[0].doctype) ++ # print 'unoconv: format `%s\' is part of multiple doctypes %s, selecting `%s\'.' % (format, [fmt.doctype for fmt in outputfmt], outputfmt[0].doctype, file=sys.stderr) + else: + outputfmt = outputfmt[0] + + ### No format found, throw error + if not outputfmt: + if doctype: +- print >>sys.stderr, 'unoconv: format [%s/%s] is not known to unoconv.' % (op.doctype, op.format) ++ print('unoconv: format [%s/%s] is not known to unoconv.' % (op.doctype, op.format), file=sys.stderr) + else: +- print >>sys.stderr, 'unoconv: format [%s] is not known to unoconv.' % op.format ++ print('unoconv: format [%s] is not known to unoconv.' % op.format, file=sys.stderr) + die(1) + + return outputfmt +@@ -813,10 +814,10 @@ + outputfmt = self.getformat(inputfn) + + if op.verbose > 0: +- print >>sys.stderr, 'Input file:', inputfn ++ print('Input file:', inputfn, file=sys.stderr) + + if not os.path.exists(inputfn): +- print >>sys.stderr, 'unoconv: file `%s\' does not exist.' % inputfn ++ print('unoconv: file `%s\' does not exist.' % inputfn, file=sys.stderr) + exitcode = 1 + + try: +@@ -854,7 +855,7 @@ + templateurl = unohelper.absolutize(self.cwd, unohelper.systemPathToFileUrl(op.template)) + document.StyleFamilies.loadStylesFromURL(templateurl, templateprops) + else: +- print >>sys.stderr, 'unoconv: template file `%s\' does not exist.' % op.template ++ print('unoconv: template file `%s\' does not exist.' % op.template, file=sys.stderr) + exitcode = 1 + + ### Update document links +@@ -924,40 +925,40 @@ + + try: + document.storeToURL(outputurl, tuple(outputprops) ) +- except IOException, e: ++ except IOException as e: + raise UnoException("Unable to store document to %s (ErrCode %d)\n\nProperties: %s" % (outputurl, e.ErrCode, outputprops), None) + + phase = "dispose" + document.dispose() + document.close(True) + +- except SystemError, e: ++ except SystemError as e: + error("unoconv: SystemError during %s phase:\n%s" % (phase, e)) + exitcode = 1 + +- except RuntimeException, e: ++ except RuntimeException as e: + error("unoconv: RuntimeException during %s phase:\nOffice probably died. %s" % (phase, e)) + exitcode = 6 + +- except DisposedException, e: ++ except DisposedException as e: + error("unoconv: DisposedException during %s phase:\nOffice probably died. %s" % (phase, e)) + exitcode = 7 + +- except IllegalArgumentException, e: ++ except IllegalArgumentException as e: + error("UNO IllegalArgument during %s phase:\nSource file cannot be read. %s" % (phase, e)) + exitcode = 8 + +- except IOException, e: ++ except IOException as e: + # for attr in dir(e): print '%s: %s', (attr, getattr(e, attr)) + error("unoconv: IOException during %s phase:\n%s" % (phase, e.Message)) + exitcode = 3 + +- except CannotConvertException, e: ++ except CannotConvertException as e: + # for attr in dir(e): print '%s: %s', (attr, getattr(e, attr)) + error("unoconv: CannotConvertException during %s phase:\n%s" % (phase, e.Message)) + exitcode = 4 + +- except UnoException, e: ++ except UnoException as e: + if hasattr(e, 'ErrCode'): + error("unoconv: UnoException during %s phase in %s (ErrCode %d)" % (phase, repr(e.__class__), e.ErrCode)) + exitcode = e.ErrCode +@@ -982,7 +983,7 @@ + product = self.svcmgr.createInstance("com.sun.star.configuration.ConfigurationProvider").createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", UnoProps(nodepath="/org.openoffice.Setup/Product")) + try: + unocontext = resolver.resolve("uno:%s" % op.connection) +- except NoConnectException, e: ++ except NoConnectException as e: + pass + else: + info(1, "Existing %s listener found, nothing to do." % product.ooName) +@@ -991,25 +992,25 @@ + subprocess.call([office.binary, "-headless", "-invisible", "-nocrashreport", "-nodefault", "-nologo", "-nofirststartwizard", "-norestore", "-accept=%s" % op.connection], env=os.environ) + else: + subprocess.call([office.binary, "--headless", "--invisible", "--nocrashreport", "--nodefault", "--nologo", "--nofirststartwizard", "--norestore", "--accept=%s" % op.connection], env=os.environ) +- except Exception, e: ++ except Exception as e: + error("Launch of %s failed.\n%s" % (office.binary, e)) + else: + info(1, "Existing %s listener found, nothing to do." % product.ooName) + + def error(msg): + "Output error message" +- print >>sys.stderr, msg ++ print(msg, file=sys.stderr) + + def info(level, msg): + "Output info message" + if 'op' not in globals(): + pass + elif op.verbose >= 3 and level >= 3: +- print >>sys.stderr, "DEBUG:", msg ++ print("DEBUG:", msg, file=sys.stderr) + elif not op.stdout and level <= op.verbose: +- print >>sys.stdout, msg ++ print(msg, file=sys.stdout) + elif level <= op.verbose: +- print >>sys.stderr, msg ++ print(msg, file=sys.stderr) + + def die(ret, msg=None): + "Print optional error and exit with errorcode" +@@ -1031,7 +1032,7 @@ + subprocess.Popen([office.binary, "--headless", "--invisible", "--nocrashreport", "--nodefault", "--nofirststartwizard", "--nologo", "--norestore", "--unaccept=%s" % op.connection], env=os.environ) + ooproc.wait() + info(2, '%s listener successfully disabled.' % product.ooName) +- except Exception, e: ++ except Exception as e: + error("Terminate using %s failed.\n%s" % (office.binary, e)) + + ### If there is no GUI attached to the instance, terminate instance +@@ -1080,7 +1081,7 @@ + for inputfn in op.filenames: + convertor.convert(inputfn) + +- except NoConnectException, e: ++ except NoConnectException as e: + error("unoconv: could not find an existing connection to LibreOffice at %s:%s." % (op.server, op.port)) + if op.connection: + info(0, "Please start an LibreOffice instance on server '%s' by doing:\n\n unoconv --listener --server %s --port %s\n\nor alternatively:\n\n soffice -nologo -nodefault -accept=\"%s\"" % (op.server, op.server, op.port, op.connection)) +@@ -1110,14 +1111,14 @@ + break + except: + # debug_office() +- print >>sys.stderr, "unoconv: Cannot find a suitable pyuno library and python binary combination in %s" % of +- print >>sys.stderr, "ERROR:", sys.exc_info()[1] +- print >>sys.stderr ++ print("unoconv: Cannot find a suitable pyuno library and python binary combination in %s" % of, file=sys.stderr) ++ print("ERROR:", sys.exc_info()[1], file=sys.stderr) ++ print(file=sys.stderr) + else: + # debug_office() +- print >>sys.stderr, "unoconv: Cannot find a suitable office installation on your system." +- print >>sys.stderr, "ERROR: Please locate your office installation and send your feedback to:" +- print >>sys.stderr, " http://github.com/dagwieers/unoconv/issues" ++ print("unoconv: Cannot find a suitable office installation on your system.", file=sys.stderr) ++ print("ERROR: Please locate your office installation and send your feedback to:", file=sys.stderr) ++ print(" http://github.com/dagwieers/unoconv/issues", file=sys.stderr) + sys.exit(1) + + ### Now that we have found a working pyuno library, let's import some classes +@@ -1160,6 +1161,6 @@ + + try: + main() +- except KeyboardInterrupt, e: ++ except KeyboardInterrupt as e: + die(6, 'Exiting on user request') + die(exitcode) +