X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Flilylib.py;h=3bdfa1c35cb48a1b5b6c84ca96dac767f821d86e;hb=ccf589356edbab728b502396603d8937638f7d18;hp=9197d01f95af98ebacbd8e6e2b7941038f5ad61e;hpb=a37548f8282019dfb02bca9043e7fbf2a344d560;p=lilypond.git diff --git a/python/lilylib.py b/python/lilylib.py index 9197d01f95..3bdfa1c35c 100644 --- a/python/lilylib.py +++ b/python/lilylib.py @@ -1,17 +1,26 @@ -############################################################### -# lilylib.py -- options and stuff -# -# source file of the GNU LilyPond music typesetter +# This file is part of LilyPond, the GNU music typesetter. # -# (c) 1998--2006 Han-Wen Nienhuys -# Jan Nieuwenhuizen +# Copyright (C) 1998--2010 Han-Wen Nienhuys +# Jan Nieuwenhuizen +# +# LilyPond 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 3 of the License, or +# (at your option) any later version. +# +# LilyPond 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 LilyPond. If not, see . import __main__ import glob import os import re import shutil -import string import sys import optparse @@ -19,38 +28,45 @@ import optparse # Users of python modules should include this snippet # and customize variables below. -# We'll suffer this path init stuff as long as we don't install our -# python packages in /lib/pythonx.y (and don't kludge around -# it as we do with teTeX on Red Hat Linux: set some environment var -# (PYTHONPATH) in profile) - -# If set, LILYPONDPREFIX must take prevalence -# if datadir is not set, we're doing a build and LILYPONDPREFIX - -datadir = '@local_lilypond_datadir@' -if not os.path.isdir (datadir): - datadir = '@lilypond_datadir@' -if os.environ.has_key ('LILYPONDPREFIX') : - datadir = os.environ['LILYPONDPREFIX'] - while datadir[-1] == os.sep: - datadir= datadir[:-1] - -sys.path.insert (0, os.path.join (datadir, 'python')) - - +# Python 2.5 only accepts strings with proper Python internal encoding +# (i.e. ASCII or Unicode) when writing to stdout/stderr, so we must +# use ugettext iso gettext, and encode the string when writing to +# stdout/stderr localedir = '@localedir@' try: import gettext - gettext.bindtextdomain ('lilypond', localedir) - gettext.textdomain ('lilypond') - _ = gettext.gettext + t = gettext.translation ('lilypond', localedir) + _ = t.ugettext except: def _ (s): return s underscore = _ -progress = sys.stderr.write + +# Urg, Python 2.4 does not define stderr/stdout encoding +# Maybe guess encoding from LANG/LC_ALL/LC_CTYPE? + +def encoded_write(f, s): + f.write (s.encode (f.encoding or 'utf_8')) + +# ugh, Python 2.5 optparse requires Unicode strings in some argument +# functions, and refuse them in some other places +def display_encode (s): + return s.encode (sys.stderr.encoding or 'utf_8') + +def stderr_write (s): + encoded_write (sys.stderr, s) + +progress = stderr_write + +def require_python_version (): + if sys.hexversion < 0x02040000: + stderr_write ("Python 2.4 or newer is required to run this program.\n\ +Please upgrade Python from http://python.org/download/, and if you use MacOS X,\n\ +please read 'Setup for MacOS X' in Application Usage.") + os.system ("open http://python.org/download/") + sys.exit (2) # Modified version of the commands.mkarg(x), which always uses # double quotes (since Windows can't handle the single quotes: @@ -130,6 +146,7 @@ def ossystem_system (cmd, log_file=None): + name = command_name (cmd) if be_verbose: show_progress = 1 progress (_ ("Invoking `%s\'") % cmd) @@ -167,7 +184,7 @@ def strip_extension (f, ext): def search_exe_path (name): p = os.environ['PATH'] - exe_paths = string.split (p, ':') + exe_paths = p.split (':') for e in exe_paths: full = os.path.join (e, name) if os.path.exists (full): @@ -199,7 +216,7 @@ class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter): metavar) def format_usage(self, usage): - return _("Usage: %s\n") % usage + return _("Usage: %s") % usage + '\n' def format_description(self, description): return description