Date: Friday, June 12, 2020 @ 20:04:24
  Author: jelle
Revision: 389059

Port lilyglyphs print statements to python3 to remove the python2 optdependency

Added:
  texlive-music/trunk/python3-compat.patch
Modified:
  texlive-music/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   16 +-
 python3-compat.patch |  309 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 319 insertions(+), 6 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2020-06-12 18:21:12 UTC (rev 389058)
+++ PKGBUILD    2020-06-12 20:04:24 UTC (rev 389059)
@@ -4,18 +4,20 @@
 pkgname=texlive-music
 pkgver=2020.54758
 _revnr=${pkgver#2020.}
-pkgrel=1
+pkgrel=2
 pkgdesc="TeX Live - Music typesetting packages"
 license=('GPL')
 arch=(any)
 depends=('texlive-core')
-optdepends=('python2: for scripts from the lilyglyphs packages')
+optdepends=('python: for scripts from the lilyglyphs packages'
+            'fontforge: for scripts from the lilyglyphs packages')
 groups=('texlive-most')
 url='http://tug.org/texlive/'
-source=("https://sources.archlinux.org/other/texlive/$pkgname-$pkgver-src.zip"; 
"$pkgname.maps")
+source=("https://sources.archlinux.org/other/texlive/$pkgname-$pkgver-src.zip"; 
"$pkgname.maps" python3-compat.patch)
 options=('!emptydirs')
 sha256sums=('47f418d851a0f838c08be406135ef338533e32cf0bc9c4ffefeaa0139973e8f1'
-            '0b3cc045390e756eb9243c0acc99a48a9c02ddab4764f4a00f8c3170660f017f')
+            '0b3cc045390e756eb9243c0acc99a48a9c02ddab4764f4a00f8c3170660f017f'
+            'f439a94c93eca9fa7e1e52b9d1f6af2abb963b33978bdea4b6f893cd97562392')
 
 build() {
    for p in *.tar.xz; do
@@ -22,6 +24,10 @@
           bsdtar -xf $p
    done
    rm -rf {tlpkg,doc,source} || true
+
+   # Update print statements to Python 3
+   cd texmf-dist
+   patch -Np1 -i ${srcdir}/python3-compat.patch
 }
 
 package() {
@@ -42,8 +48,6 @@
    if [[ -d "$pkgdir"/usr/share/texmf-dist/scripts ]]; then
      find "$pkgdir"/usr/share/texmf-dist/scripts -type f -exec chmod a+x '{}' 
\;
    fi
-   # fix python2 command name in scripts.
-   sed -i 's/env python/env python2/' 
"$pkgdir"/usr/share/texmf-dist/scripts/lilyglyphs/*.py
    # script symlinks
    install -m755 -d "$pkgdir"/usr/bin
    ln -s /usr/share/texmf-dist/scripts/lilyglyphs/lily-glyph-commands.py 
"$pkgdir"/usr/bin/lily-glyph-commands

Added: python3-compat.patch
===================================================================
--- python3-compat.patch                                (rev 0)
+++ python3-compat.patch        2020-06-12 20:04:24 UTC (rev 389059)
@@ -0,0 +1,309 @@
+diff -aur texmf-dist/scripts/lilyglyphs/lily-glyph-commands.py 
texmf-dist.new/scripts/lilyglyphs/lily-glyph-commands.py
+--- texmf-dist/scripts/lilyglyphs/lily-glyph-commands.py       2013-10-03 
00:18:36.000000000 +0200
++++ texmf-dist.new/scripts/lilyglyphs/lily-glyph-commands.py   2020-06-12 
21:28:27.383263794 +0200
+@@ -80,10 +80,10 @@
+         if not len(line):
+             # skip if cmd and glyph haven't been filled both
+             if not (entry['cmd'] and entry['element']):
+-                print 'Skip malformed entry \'' + entry['cmd'] + '\'. Please 
check input file'
++                print('Skip malformed entry \'' + entry['cmd'] + '\'. Please 
check input file')
+                 reset_entry()
+             else:
+-                print 'Read entry \'' + entry['cmd'] + '\''
++                print('Read entry \'' + entry['cmd'] + '\'')
+                 lg.in_cmds[entry['cmd']] = {}
+                 lg.in_cmds[entry['cmd']]['element'] = entry['element']
+                 lg.in_cmds[entry['cmd']]['type'] = entry['type']
+@@ -110,13 +110,13 @@
+ 
+     
+ def usage():
+-    print 'genGlyphCommands.py'
+-    print 'is part of the lilyglyphs package'
+-    print ''
+-    print 'Usage:'
+-    print 'Pass the name (without path) of an input definitions file'
+-    print '(this has to be located in the /stash_new_commands directory.'
+-    print 'Please refer to the manual (documentation/lilyglyphs.pdf).'
++    print('genGlyphCommands.py')
++    print('is part of the lilyglyphs package')
++    print('')
++    print('Usage:')
++    print('Pass the name (without path) of an input definitions file')
++    print('(this has to be located in the /stash_new_commands directory.')
++    print('Please refer to the manual (documentation/lilyglyphs.pdf).')
+ 
+ # ####################################
+ # Finally launch the program
+diff -aur texmf-dist/scripts/lilyglyphs/lilyglyphs_common.py 
texmf-dist.new/scripts/lilyglyphs/lilyglyphs_common.py
+--- texmf-dist/scripts/lilyglyphs/lilyglyphs_common.py 2014-03-12 
23:37:31.000000000 +0100
++++ texmf-dist.new/scripts/lilyglyphs/lilyglyphs_common.py     2020-06-12 
21:27:46.323032709 +0200
+@@ -232,7 +232,7 @@
+     """Removes unneccessary files from LilyPond compilation,
+     rename and remove the preview PDF files to the right directory."""
+ 
+-    print 'Clean up directories'
++    print('Clean up directories')
+     
+     # iterate through dir_lysrc
+     os.chdir(dir_lysrc)
+@@ -255,7 +255,7 @@
+     
+ def compile_lily_files():
+     """Compiles LilyPond files to """
+-    print 'Compile with LilyPond:'
++    print('Compile with LilyPond:')
+     for file in lily_files:
+         args = []
+         args.append("lilypond")
+@@ -265,7 +265,7 @@
+         args.append("-dno-point-and-click")
+         args.append(os.path.join(dir_lysrc, file + ".ly"))
+         subprocess.call(args)
+-        print ''
++        print('')
+ 
+ def generate_latex_commands():
+     """Generates the templates for the commands in a new LaTeX file.
+@@ -308,12 +308,12 @@
+     
+     in_file = os.path.normpath(in_file)
+ 
+-    print 'Read input file ' + in_file
++    print('Read input file ' + in_file)
+     
+     # check for existence of input file
+     if not os.path.exists(in_file):
+-                    print 'File ' + in_file + ' not found.'
+-                    print 'Please specify an input file'
++                    print('File ' + in_file + ' not found.')
++                    print('Please specify an input file')
+                     sys.exit(2)
+ 
+     fin = open(in_file,  'r')
+@@ -336,7 +336,7 @@
+     fout.write(latexfile_start_comment.replace('SCRIPT_NAME', script_name()))
+ 
+     # write out command definitions
+-    sorted_cmds = sorted(latex_cmds.iterkeys())
++    sorted_cmds = sorted(latex_cmds.keys())
+     for cmd_name in sorted_cmds:
+         for line in latex_cmds[cmd_name]['cmd']:
+             fout.write(line)
+diff -aur texmf-dist/scripts/lilyglyphs/lily-image-commands.py 
texmf-dist.new/scripts/lilyglyphs/lily-image-commands.py
+--- texmf-dist/scripts/lilyglyphs/lily-image-commands.py       2013-10-03 
00:18:36.000000000 +0200
++++ texmf-dist.new/scripts/lilyglyphs/lily-image-commands.py   2020-06-12 
21:28:21.669897962 +0200
+@@ -63,35 +63,35 @@
+ 
+ def main():
+     """Do the actual work of the script"""
+-    print ''
+-    print 'buildglyphimages.py,'
+-    print 'Part of lilyglyphs.'
+-    print ''
++    print('')
++    print('buildglyphimages.py,')
++    print('Part of lilyglyphs.')
++    print('')
+     
+     # set CWD and ensure the necessary subdirs are present
+     check_paths()
+-    print ''
++    print('')
+ 
+     # load and parse input file
+     lg.read_input_file(in_file)
+     read_entries()
+-    print ''
++    print('')
+ 
+     # generate LilyPond source files for each command
+     # and compile them
+     write_lily_src_files()
+-    print ''
++    print('')
+     lg.compile_lily_files()
+-    print ''
++    print('')
+     
+     # remove intermediate files and move pdfs to pdf directory
+     lg.cleanup_lily_files()
+-    print ''
++    print('')
+     
+     # generate latex commands and example code
+     # and write them to the output file
+     lg.generate_latex_commands()
+-    print ''
++    print('')
+     write_latex_file()
+ 
+     
+@@ -127,11 +127,11 @@
+ 
+ def read_entries():
+     """Parses the input source file and extracts glyph entries"""
+-    print 'Read entries of LilyPond commands:'
++    print('Read entries of LilyPond commands:')
+     for i in range(len(lg.definitions_file)):
+         if '%%lilyglyphs' in lg.definitions_file[i]:
+             i = read_entry(i)
+-    print lg.lily_files
++    print(lg.lily_files)
+ 
+ def read_entry(i):
+     """Reads a single glyph entry from the input file and stores it
+@@ -165,11 +165,11 @@
+     # read command name
+     line = lg.definitions_file[i].strip()
+     cmd_name = line[: line.find('=') - 1]
+-    print '- ' + cmd_name,
++    print('- ' + cmd_name, end=' ')
+     if is_protected:
+-        print '(protected and skipped)'
++        print('(protected and skipped)')
+     else:
+-        print '' #(for line break only)
++        print('') #(for line break only)
+ 
+     # read actual command until we find a line the begins with a closing 
curly bracket
+     i += 1
+@@ -193,7 +193,7 @@
+ 
+ 
+ def usage():
+-    print """buildglyphimages. Part of the lilyglyphs package.
++    print("""buildglyphimages. Part of the lilyglyphs package.
+     Parses a template file, creates
+     single .ly files from it, uses LilyPond to create single glyph
+     pdf files and set up template files to be used in LaTeX.
+@@ -204,7 +204,7 @@
+     For detailed instructions refer to the manual.
+     Usage:
+     buildglyphimages.py in-file-name.
+-    """
++    """)
+ 
+ def write_file_info(name, fout):
+     """Formats file specific information for the lilyPond source file"""
+@@ -225,22 +225,22 @@
+ 
+ def write_latex_file():
+     """Composes LaTeX file and writes it to disk"""
+-    print 'Generate LaTeX file'
+-    print lg.dir_cmd, in_basename
++    print('Generate LaTeX file')
++    print(lg.dir_cmd, in_basename)
+     lg.write_latex_file(os.path.join(os.getcwd(), lg.dir_cmd,  in_basename + 
'.tex'))
+ 
+ def write_lily_src_files():
+     """Generates one .ly file for each found new command"""
+     skip_cmds = []
+-    print 'Write .ly files for each entry:'
++    print('Write .ly files for each entry:')
+     for cmd_name in lg.in_cmds:
+-        print '- ' + cmd_name
++        print('- ' + cmd_name)
+         gen_src_name = os.path.join(lg.dir_lysrc, cmd_filename(cmd_name) + 
'.ly')
+         # handle existing commands
+         if os.path.exists(gen_src_name):
+             action = ''
+             while not (action == 'Y' or action == 'N'):
+-                action = raw_input('already present. Overwrite (y/n)? ')
++                action = input('already present. Overwrite (y/n)? ')
+                 action = action.upper()
+             if action == 'N':
+                 skip_cmds.append(cmd_name)
+@@ -281,7 +281,7 @@
+         fout.close()
+     
+     # remove skipped commands from in_cmds
+-    print skip_cmds
++    print(skip_cmds)
+     for cmd_name in skip_cmds:
+         del lg.in_cmds[cmd_name]
+         lg.lily_files.remove(cmd_filename(cmd_name))
+@@ -314,7 +314,7 @@
+     in_path, in_filename = os.path.split(in_file)
+     in_path = os.path.normpath(in_path)
+     if not (('lilyglyphs' in in_path) and (in_path.endswith('definitions'))):
+-        print 'File in the wrong location: ' + in_path
++        print('File in the wrong location: ' + in_path)
+         usage()
+         sys.exit(2)
+     in_basename, in_ext = os.path.splitext(in_filename)
+diff -aur texmf-dist/scripts/lilyglyphs/lily-rebuild-pdfs.py 
texmf-dist.new/scripts/lilyglyphs/lily-rebuild-pdfs.py
+--- texmf-dist/scripts/lilyglyphs/lily-rebuild-pdfs.py 2013-10-03 
00:18:36.000000000 +0200
++++ texmf-dist.new/scripts/lilyglyphs/lily-rebuild-pdfs.py     2020-06-12 
21:28:27.446597488 +0200
+@@ -54,9 +54,9 @@
+ 
+ def main():
+     """Main walk through the program"""
+-    print 'rebuild-pdfs.py'
+-    print 'regenerate all pdf images that are not present (anymore)'
+-    print ''
++    print('rebuild-pdfs.py')
++    print('regenerate all pdf images that are not present (anymore)')
++    print('')
+     
+     # Check if we are in a legal CWD and ensure a PDF subdir is present
+     check_paths()
+@@ -66,14 +66,14 @@
+ 
+     # is there anything to be done at all?
+     if len(src_files) == 0:
+-        print ''
+-        print 'No image files missing, nothing to be done.'
+-        print 'If you want to re-create pdfs, then delete them first'
++        print('')
++        print('No image files missing, nothing to be done.')
++        print('If you want to re-create pdfs, then delete them first')
+         sys.exit(0)
+-    print ''
+-    print 'Found ' + str(len(src_files)) + ' missing file(s).'
++    print('')
++    print('Found ' + str(len(src_files)) + ' missing file(s).')
+     for cmd in src_files:
+-        print '- ' + cmd
++        print('- ' + cmd)
+ 
+     # compile all LilyPond files without matching pdf
+     lg.lily_files = src_files
+@@ -86,7 +86,7 @@
+     """Compares the list of LilyPond source and resulting PDF files.
+        Returns a list of LilyPond source file basenames 
+        which don't have a corresponding PDF file"""
+-    print 'Reading file lists, counting missing pdf files'
++    print('Reading file lists, counting missing pdf files')
+     
+     # read existing .pdf files in lg.dir_pdfs
+     img_files = []
+@@ -114,21 +114,21 @@
+     """Checks if we're in the right CWD
+        and makes sure that there is a pdf output directory available"""
+ 
+-    print 'Checking directories ...'
++    print('Checking directories ...')
+     
+     # check the presence of the necessary subdirectories
+     ls = os.listdir('.')
+     if not 'generated_src' in ls:
+-        print 'No LilyPond source files directory found.'
+-        print 'Sorry, there is something wrong :-('
+-        print 'Current working directory is: ' + os.getcwd()
+-        print 'Please consult the manual.'
++        print('No LilyPond source files directory found.')
++        print('Sorry, there is something wrong :-(')
++        print('Current working directory is: ' + os.getcwd())
++        print('Please consult the manual.')
+         sys.exit(2)
+     if not 'pdfs' in ls:
+         os.mkdir('pdfs')
+     
+-    print '... done'
+-    print ''
++    print('... done')
++    print('')
+ 
+ 
+ # ####################################

Reply via email to