]> git.lyx.org Git - lyx.git/commitdiff
Allow lyxpak to work when LyX is run in place.
authorRichard Heck <rgheck@comcast.net>
Fri, 4 Feb 2011 20:33:52 +0000 (20:33 +0000)
committerRichard Heck <rgheck@comcast.net>
Fri, 4 Feb 2011 20:33:52 +0000 (20:33 +0000)
Note that this should also make lyx2lyx detection a lot easier than
it was before.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37498 a592a061-630c-0410-9148-cb99ea01b6c8

development/tools/lyxpak.py

index 27a7a6e4fe2b9641974d6e26bf9c18e271b36b10..b8e6a59e6eee67baad77e4cddfddb10f759f6dd7 100755 (executable)
@@ -205,29 +205,38 @@ def main(argv):
     # Try to find the location of the lyx2lyx script
     global lyx2lyx
     if lyx2lyx == None:
-        lyx_exe, full_path = find_exe(["lyxc", "lyx"], extlist, path)
-        if lyx_exe == None:
-            error('Cannot find the LyX executable in the path.')
-        cmd_status, cmd_stdout = run_cmd("%s -version 2>&1" % lyx_exe)
-        if cmd_status != None:
-            error('Cannot query LyX about the lyx2lyx script.')
-        re_msvc = re.compile(r'^(\s*)(Host type:)(\s+)(win32)$')
-        re_sysdir = re.compile(r'^(\s*)(LyX files dir:)(\s+)(\S+)$')
-        lines = cmd_stdout.splitlines()
-        for line in lines:
-            match = re_msvc.match(line)
-            if match:
-                # The LyX executable was built with MSVC, so the
-                # "LyX files dir:" line is unusable
-                basedir = os.path.dirname(os.path.dirname(full_path))
-                lyx2lyx = os.path.join(basedir, 'Resources', 'lyx2lyx', 'lyx2lyx')
-                break
-            match = re_sysdir.match(line)
-            if match:
-                lyx2lyx = os.path.join(match.group(4), 'lyx2lyx', 'lyx2lyx')
-                break
-        if not os.access(lyx2lyx, os.X_OK):
-            error('Unable to find the lyx2lyx script.')
+        # first we will see if the script is roughly where we are
+        # i.e., we will assume we are in $SOMEDIR/scripts and look
+        # for $SOMEDIR/lyx2lyx/lyx2lyx.
+        ourpath = os.path.dirname(abspath(argv[0]))
+        (upone, discard) = os.path.split(ourpath)
+        tryit = os.path.join(upone, "lyx2lyx", "lyx2lyx")
+        if os.path.exists(tryit):
+            lyx2lyx = tryit
+        else:
+          lyx_exe, full_path = find_exe(["lyxc", "lyx"], extlist, path)
+          if lyx_exe == None:
+              error('Cannot find the LyX executable in the path.')
+          cmd_status, cmd_stdout = run_cmd("%s -version 2>&1" % lyx_exe)
+          if cmd_status != None:
+              error('Cannot query LyX about the lyx2lyx script.')
+          re_msvc = re.compile(r'^(\s*)(Host type:)(\s+)(win32)$')
+          re_sysdir = re.compile(r'^(\s*)(LyX files dir:)(\s+)(\S+)$')
+          lines = cmd_stdout.splitlines()
+          for line in lines:
+              match = re_msvc.match(line)
+              if match:
+                  # The LyX executable was built with MSVC, so the
+                  # "LyX files dir:" line is unusable
+                  basedir = os.path.dirname(os.path.dirname(full_path))
+                  lyx2lyx = os.path.join(basedir, 'Resources', 'lyx2lyx', 'lyx2lyx')
+                  break
+              match = re_sysdir.match(line)
+              if match:
+                  lyx2lyx = os.path.join(match.group(4), 'lyx2lyx', 'lyx2lyx')
+                  break
+          if not os.access(lyx2lyx, os.X_OK):
+              error('Unable to find the lyx2lyx script.')
 
     # Initialize the list with the specified LyX file and recursively
     # gather all required files (also from child documents).