70 lines
2.9 KiB
Python
70 lines
2.9 KiB
Python
from .hal_pythonplugin import *
|
|
|
|
try:
|
|
import importlib
|
|
support_aux_apps = True
|
|
except:
|
|
support_aux_apps = False
|
|
print("\n")
|
|
print("Gladevcp: Cannot import importlib")
|
|
print(" Auxiliary Gladevcp apps not available\n")
|
|
|
|
#----------------------------------------------------------------------
|
|
# Support auxiliary gladevcp apps
|
|
import os,sys,glob,subprocess
|
|
|
|
def excluded_filename(fname):
|
|
exclude_list = ["install","setup"]
|
|
for e in exclude_list:
|
|
if e in fname: return True
|
|
return False
|
|
|
|
if support_aux_apps:
|
|
#----------------------------------------------------------------------
|
|
modnames = []
|
|
#----------------------------------------------------------------------
|
|
# Auxiliary gladevcp apps specified by environmental variable
|
|
gladevcp_user_extras = os.getenv('GLADEVCP_EXTRAS')
|
|
if gladevcp_user_extras is not None:
|
|
print("gladevcp: GLADEVCP_EXTRAS:",gladevcp_user_extras)
|
|
for extradir in gladevcp_user_extras.split(":"):
|
|
for fname in glob.glob(extradir + "/*.py"):
|
|
if excluded_filename(fname):
|
|
print("gladevcp: excluded filename:",fname)
|
|
continue
|
|
modname = os.path.basename(fname).split(".")[0]
|
|
if modname in modnames:
|
|
print("gladevcp: rejecting duplicate:",fname)
|
|
continue
|
|
modnames.append(modname)
|
|
sys.path.insert(0,extradir) # prepend
|
|
importlib.import_module(modname)
|
|
print("gladevcp: importing:",fname)
|
|
#----------------------------------------------------------------------
|
|
# Auxiliary gladevcp apps may be installed in a known location
|
|
# location defined by the substitution item LINUXCNC_AUX_GLADEVCP.
|
|
# The location is available from the script linuxcnc_var
|
|
# (this script should always be in PATH for both RIP builds and
|
|
# deb installs of LinuxCNC)
|
|
s = subprocess.Popen(['linuxcnc_var','LINUXCNC_AUX_GLADEVCP']
|
|
,stdout=subprocess.PIPE
|
|
,stderr=subprocess.PIPE
|
|
)
|
|
p,e = s.communicate()
|
|
gladevcp_aux_apps_dir = p.strip().decode() # remove trailing \n
|
|
for auxdir in glob.glob(gladevcp_aux_apps_dir + "/*"):
|
|
print("gladevcp: auxiliary dir:",auxdir)
|
|
for fname in glob.glob(auxdir + "/*.py"):
|
|
if excluded_filename(fname):
|
|
print("gladevcp: excluded filename:",fname)
|
|
continue
|
|
modname = os.path.basename(fname).split(".")[0]
|
|
if modname in modnames:
|
|
print("gladevcp: rejecting duplicate:",fname)
|
|
continue
|
|
modnames.append(modname)
|
|
sys.path.insert(0,auxdir) # prepend
|
|
importlib.import_module(modname)
|
|
print("gladevcp: importing:",fname)
|
|
|
|
#----------------------------------------------------------------------
|