[tex-live] Package preparation question (directory structure)
Urs Liska
ul at openlilylib.org
Mon Sep 9 01:15:56 CEST 2013
Am 08.09.2013 00:25, schrieb Karl Berry:
> will have a 'lily-' prefix which is less ugly than lgl- and should
> definitely be sufficient with regard to unique file-names.
>
> Unless there are other Lilypond-related packages (not in TeX) which use
> such names ... That's why the ugly lgl- came to mind.
I think (speaking as a LilyPond power-user (not -developer)) I will take
this responsibility, except there are severe objections now.
>
> Exactly, this is 'import'ed by the other scripts. I do not see why
> this complicates things,
>
> Because the gen*Command scripts will be in the bin/ directory, but
> lilyglyphs_common.py should not be, since it's not meant to be invoked
> directly. PATH directories should not be cluttered with
> non-user-level-executables.
>
> ...
>
> I think the most reliable way to find it is by running something like
> (sh-ish syntax for example):
> com=`kpsewhich --progname=lilyglyphs --format=texmfscripts lilyglyphs_common.py`
> And then read in $com. I don't know how hard or easy that may be in the
> Python world.
I had suspected that kind of thing should _not_ be too hard in the
Python world, and it seems I was right :-)
Although I probably wouldn't have easily found out about the exact
kpsewhich call.
import os, sys
# import common library, depending on its location
scr_path, scr_name = os.path.split(sys.argv[0])
if not 'lilyglyphs_common.py' in os.listdir(scr_path):
# the library is not in the same dir as the script
# so we assume we're in a TeX installation.
try:
# use TeX's kpsewhich tool to locate the library file
# in the TeX installation
import subprocess
lib = subprocess.check_output(["kpsewhich",
"--progname=lilyglyphs",
"--format=texmfscripts",
"lilyglyphs_common.py"])
except:
print '\nCommon library \"lilyglyphs_common.py\" not found.'
print 'Please refer to the manual for possible solutions.'
sys.exit(2)
# add the found path to Python's search path
sys.path.append(os.path.split(lib)[0])
import lilyglyphs_common
What I did to verify is:
- rename the lib in my project folder (so it isn't found by default)
- copy it to texmf-dist/scripts/lilyglyphs/lilyglyphs_common.py in my
TeXLive installation (Linux)
- run texhash
- run the above code
I don't have the means right now to do more thorough tests but AFAICS
this should work.
Do you think the issue is general enough to justify a self-answered
question on stackoverflow to help someone running into a similar situation?
I can't believe this might have been the last real obstacle (apart from
several minor TODOs).
Best and thank you for your assistance
Urs
>
> Hope this helps,
> karl
More information about the tex-live
mailing list