]> SALOME platform Git repositories - modules/yacs.git/commitdiff
Salome HOME
improve application path detection: follow symbolic link
authorCédric Aguerre <cedric.aguerre@edf.fr>
Fri, 4 Apr 2014 15:25:22 +0000 (17:25 +0200)
committerCédric Aguerre <cedric.aguerre@edf.fr>
Fri, 4 Apr 2014 15:25:22 +0000 (17:25 +0200)
bin/appliskel/salome

index 3ec2efe1088fc278ec4ff6765184262ff1332c01..ae57dae12f78c471fa4f96f7d4eaad80e01822ac 100755 (executable)
 import os
 import sys
 
+def __detectAppliPath(fromPath):
+  detection_criterion = "USERS" # the application folder is found if it contains a USERS subfolder
+
+  users_folder = os.path.join(fromPath, detection_criterion)
+  if os.path.isdir(users_folder):
+    return fromPath
+
+  pattern = "/bin/salome/appliskel"
+  if fromPath.endswith(pattern):
+    currentPath = __detectAppliPath(fromPath[:-len(pattern)])
+    if not currentPath is None:
+      return currentPath
+
+  if sys.platform.startswith("linux"):
+    filename = os.path.basename(__file__)
+    link_target = os.readlink(os.path.join(fromPath,filename)) # LINUX ONLY
+    currentPath = os.path.dirname(os.path.abspath(link_target))
+    return __detectAppliPath(currentPath)
+
+  return None
+#
+
 # Preliminary work to initialize path to SALOME Python modules
 def __initialize():
   currentPath = os.path.dirname( os.path.abspath( __file__ ) )
   homePath = os.path.realpath(os.path.expanduser('~'))
-  appliPath = os.path.relpath(currentPath, homePath)
 
-  pattern = "/bin/salome/appliskel"
-  if appliPath.endswith(pattern):
-    appliPath = appliPath[:-len(pattern)]
+  appliPath = __detectAppliPath(currentPath)
+
+  if appliPath is None:
+    print "ERROR: Unable to find application folder"
+    sys.exit(0)
 
+  appliPath = os.path.relpath(appliPath, homePath)
   absoluteAppliPath = os.path.join(homePath, appliPath)
   os.environ['APPLI'] = appliPath # needed to convert .sh environment files
   os.environ['ABSOLUTE_APPLI_PATH'] = absoluteAppliPath