Procházet zdrojové kódy

[core] Fix symlinks in pth manager and check for hue binary before sync'ing

Abraham Elmahrek před 12 roky
rodič
revize
582a8d3af3
2 změnil soubory, kde provedl 14 přidání a 7 odebrání
  1. 7 3
      tools/app_reg/build.py
  2. 7 4
      tools/app_reg/pth.py

+ 7 - 3
tools/app_reg/build.py

@@ -34,7 +34,7 @@ def runcmd(cmdv, additional_env=None):
   env = os.environ.copy()
   if additional_env is not None:
     env.update(additional_env)
-  LOG.debug("Running '%s' with %r" % (' '.join(cmdv), additional_env))
+  LOG.info("Running '%s' with %r" % (' '.join(cmdv), additional_env))
   popen = subprocess.Popen(cmdv, env=env)
   return popen.wait()
 
@@ -53,5 +53,9 @@ def make_syncdb():
   """
   make_syncdb() -> True/False
   """
-  cmdv = [ os.path.join(common.INSTALL_ROOT, 'build', 'env', 'bin', 'hue'), 'syncdb', '--noinput' ]
-  return runcmd(cmdv) == 0
+  status = -1
+  hue_exec = os.path.join(common.INSTALL_ROOT, 'build', 'env', 'bin', 'hue')
+  if os.path.exists(hue_exec):
+    cmdv = [ hue_exec, 'syncdb', '--noinput' ]
+    status = runcmd(cmdv)
+  return status == 0

+ 7 - 4
tools/app_reg/pth.py

@@ -134,12 +134,15 @@ class PthFile(object):
     rel_symlink_path = os.path.relpath(self._path, os.path.dirname(self._symlink_path))
 
     # overwrite symlink if the path it points to is different from desired PTH.
-    if os.path.exists(self._symlink_path) and os.path.realpath(self._symlink_path) != rel_symlink_path:
-      os.remove(self._symlink_path)
+    if os.path.islink(self._symlink_path) and os.readlink(self._symlink_path) != rel_symlink_path:
+      LOG.info('=== Removing symbolic link at %s' % (self._symlink_path))
+      os.unlink(self._symlink_path)
+      LOG.info('=== Removed symbolic link at %s' % (self._symlink_path))
 
-    if not os.path.exists(self._symlink_path):
+    if not os.path.islink(self._symlink_path):
+      LOG.info('=== Creating symbolic link at %s to %s' % (self._symlink_path, rel_symlink_path))
       os.symlink(rel_symlink_path, self._symlink_path)
-      LOG.debug('=== Create symbolic link at %s to %s' % (self._symlink_path, rel_symlink_path))
+      LOG.info('=== Created symbolic link at %s to %s' % (self._symlink_path, rel_symlink_path))
 
   def sync(self, apps):
     """Sync the .pth file with the installed apps"""