diff --git a/cfg/nic5-login1/gmsh.profile b/cfg/nic5-login1/gmsh.profile new file mode 100644 index 0000000000000000000000000000000000000000..8d5005823937a3181a5f692953a4feef534efcea --- /dev/null +++ b/cfg/nic5-login1/gmsh.profile @@ -0,0 +1,3 @@ +add2env PATH "$HOME/.local/gmsh/bin" front +add2env LD_LIBRARY_PATH "$HOME/.local/gmsh/lib" +add2env PYTHONPATH "$HOME/.local/gmsh/lib" diff --git a/cfg/nic5-login1/lagamine.profile b/cfg/nic5-login1/lagamine.profile new file mode 100644 index 0000000000000000000000000000000000000000..2cbe904836fd04d4b840050118dd274981595c23 --- /dev/null +++ b/cfg/nic5-login1/lagamine.profile @@ -0,0 +1,3 @@ +add2env LD_LIBRARY_PATH "$HOME/.local/lagamine/lib" +add2env INCLUDE "$HOME/.local/lagamine/include" +add2env LIB "$HOME/.local/lagamine/lib" diff --git a/cfg/nic5-login1/modules.profile b/cfg/nic5-login1/modules.profile new file mode 100644 index 0000000000000000000000000000000000000000..4e41ae91a7d06a7b4c163b5ecc310fd6bf16376b --- /dev/null +++ b/cfg/nic5-login1/modules.profile @@ -0,0 +1,26 @@ +# change module release group rto 2020a (only one that has intel tbb & mkl) +module load releases/2020a + +# load modules from release/2020a group +module load CMake GCC +module load Bison +#module load intel/2020a +module load Python SWIG +#module load matplotlib +#module load Qt5 + +# intel community (copied from warson) +. $HOME/.local/intel/mkl/bin/mklvars.sh intel64 +. $HOME/.local/intel/tbb/bin/tbbvars.sh intel64 + +# +# new intel-cluster-studio +#. /cm/shared/apps/ics/2013sp1/ics/2013.1.046/ictvars.sh intel64 +#. /cm/shared/apps/ics/2013sp1/mkl/bin/mklvars.sh intel64 +#. /cm/shared/apps/ics/2013sp1/tbb/bin/tbbvars.sh intel64 +# +#not in module : +add2env PATH "$HOME/.local/bin" front +# MKL_DEBUG_CPU_TYPE env variable allows good perfs of mkl (< 2020.1/2 ?) on amd procs +export MKL_DEBUG_CPU_TYPE=5 + diff --git a/cfg/nic5-login1/mumps.profile b/cfg/nic5-login1/mumps.profile new file mode 100644 index 0000000000000000000000000000000000000000..565ebbb380631b5d2a2fa1fb7526b540bbcc9158 --- /dev/null +++ b/cfg/nic5-login1/mumps.profile @@ -0,0 +1,3 @@ +add2env LD_LIBRARY_PATH "$HOME/.local/mumps/lib" +add2env LIB "$HOME/.local/mumps/lib" +add2env INCLUDE "$HOME/.local/mumps/include" diff --git a/cfg/nic5-login1/parasolid.profile b/cfg/nic5-login1/parasolid.profile new file mode 100644 index 0000000000000000000000000000000000000000..8c211268618a6004c3c4e1bbc0b4c7ac23b8e8ff --- /dev/null +++ b/cfg/nic5-login1/parasolid.profile @@ -0,0 +1,3 @@ +add2env PATH "$HOME/.local/parasolid/shared_object" +add2env INCLUDE "$HOME/.local/parasolid" +export P_SCHEMA=$HOME/.local/parasolid/schema diff --git a/cfg/nic5-login1/python.profile b/cfg/nic5-login1/python.profile new file mode 100644 index 0000000000000000000000000000000000000000..22db0c6fab235c7ada53dc1b58aa79307cc9fbb4 --- /dev/null +++ b/cfg/nic5-login1/python.profile @@ -0,0 +1,5 @@ +# PYTHONSTARTUP allows to start metafor automatically from python (outside of launch or ...) +#export PYTHONSTARTUP=.pythonrc.py +# PYTHONPATH for locally (user dependant) installed python packages +add2env PYTHONPATH "$HOME/.local/lib/python3.8/site-packages" front + diff --git a/externalProgramPath.py b/externalProgramPath.py index d31dc0c3543bce5abf8490c51ff46f5ff6b5b36a..6b169e8dee301d0a7537919b7b667cd676b0788d 100755 --- a/externalProgramPath.py +++ b/externalProgramPath.py @@ -4,7 +4,7 @@ # Define external program paths according to local configuration from prmClasses import * -import os, os.path, distutils.spawn +import os, os.path, shutil #, distutils.spawn class ExtProgs(PRMSet): def __init__(self, verb=False): @@ -16,8 +16,13 @@ class ExtProgs(PRMSet): def loadPaths(self): home = os.path.expanduser("~") - loc = os.path.abspath('.') - return [home, loc] + #print("sys.path[0] = ", sys.path[0]) + #loc = os.path.abspath('.') non, '.' n'est pas le programDir (et pas évident de le trouver entre version Dev & installed) + # et sys.path[0] est le baseDir (pas le programDir !!!) + #print("home Path = ", home) + #print("local Path = ", loc) + #return [home, loc] + return [home] def savePath(self): home = os.path.expanduser("~") @@ -66,7 +71,9 @@ class ExtProgs(PRMSet): print("\t 3. If %s not in the Script last version, add it program in the Script..."%key) return False - if distutils.spawn.find_executable(os.path.splitext(self.pars[key].val)[0]) : + + #if distutils.spawn.find_executable(os.path.splitext(self.pars[key].val)[0]) : # sous windows ne trouve que les .exe => ne marche pas avec .bat & .cmd + if shutil.which(self.pars[key].val): return True else: print("%s is not found in %s ..."%(key, self.pars[key].val)) diff --git a/externalProgramPathGui.pyw b/externalProgramPathGui.pyw index 9f35f5633301f9e36c3096eb27e86e52f70fdee8..eb7beaf9a0aab098d944416e73ea26162db992d0 100755 --- a/externalProgramPathGui.pyw +++ b/externalProgramPathGui.pyw @@ -95,7 +95,10 @@ class ExtProgsConfGui(QWidget): grplay2.setColumnStretch(2,1) self.mesherGrpBox.setLayout(grplay2) self.sf['MATLAB'] = ExeFileLine(self, grplay2, self.extProgPath.pars['MATLAB'], exeFileType, 0, 0, 4) - self.sf['SCILAB'] = ExeFileLine(self, grplay2, self.extProgPath.pars['SCILAB'], exeFileType, 1, 0, 4) + if isUnix(): + self.sf['SCILAB'] = ExeFileLine(self, grplay2, self.extProgPath.pars['SCILAB'], exeFileType, 1, 0, 4) + else: + self.sf['SCILAB'] = ExeFileLine(self, grplay2, self.extProgPath.pars['SCILAB'], "bat file (*.bat)", 1, 0, 4) self.sf['GNUPLOT'] = ExeFileLine(self, grplay2, self.extProgPath.pars['GNUPLOT'], exeFileType, 2, 0, 4) #Text & image @@ -104,8 +107,8 @@ class ExtProgsConfGui(QWidget): grplay3 = QGridLayout() grplay3.setColumnStretch(2,1) self.mesherGrpBox.setLayout(grplay3) - self.sf['LATEX'] = ExeFileLine(self, grplay3, self.extProgPath.pars['LATEX'], exeFileType, 0, 0, 4) - self.sf['GHOSTSCRIPT'] = ExeFileLine(self, grplay3, self.extProgPath.pars['GHOSTSCRIPT'], exeFileType, 1, 0, 4) + self.sf['LATEX'] = ExeFileLine(self, grplay3, self.extProgPath.pars['LATEX'], exeFileType, 0, 0, 4) + self.sf['GHOSTSCRIPT'] = ExeFileLine(self, grplay3, self.extProgPath.pars['GHOSTSCRIPT'], exeFileType, 1, 0, 4) self.sf['IMAGEMAGICK'] = ExeFileLine(self, grplay3, self.extProgPath.pars['IMAGEMAGICK'], exeFileType, 2, 0, 4) def buildButtonFrame(self, box): @@ -120,9 +123,9 @@ class ExtProgsConfGui(QWidget): butlayout.addWidget(self.saveButton1) self.saveButton1.pressed.connect(self.userSave) - self.saveButton2 = QPushButton(self.tr("All Users Save")) - butlayout.addWidget(self.saveButton2) - self.saveButton2.pressed.connect(self.progSave) + #self.saveButton2 = QPushButton(self.tr("All Users Save")) + #butlayout.addWidget(self.saveButton2) + #self.saveButton2.pressed.connect(self.progSave) self.quitButton = QPushButton(self.tr("Quit")) butlayout.addWidget(self.quitButton) @@ -154,12 +157,12 @@ class ExtProgsConfGui(QWidget): if self.extProgPath.debug : print("Save pressed") self.extProgPath.savePars() - + ''' def progSave(self): if self.extProgPath.debug : print("Save pressed") self.extProgPath.savePars('.') - + ''' def quit(self): if self.extProgPath.debug : print("Quit pressed") diff --git a/mtfLicense/metafor181231.lic b/mtfLicense/metafor181231.lic deleted file mode 100644 index 997a54d9d5d1eaec247af1f315c9f881deb9fb8c..0000000000000000000000000000000000000000 --- a/mtfLicense/metafor181231.lic +++ /dev/null @@ -1 +0,0 @@ -646574612B0A060C031B13305B736D657473666F72390C19042A061F041111052A0611080B070406FE5831657461666A796D65 diff --git a/mtfLicense/nic5.lic b/mtfLicense/nic5.lic new file mode 100644 index 0000000000000000000000000000000000000000..d4fcaca158f001f6ac18df83a8b530b98ef24dfb --- /dev/null +++ b/mtfLicense/nic5.lic @@ -0,0 +1 @@ +646574612B0A060C031B13305B736D657470666F722024372D0F021B1900102D0F0C170316112A666F72D9657461486F726DFC746166B3726D65AF61666F8B6D657481666F72B8657461386F726DFC746166CF726D653A61666F926D6574B4666F7233657461FF6F726DC574616655726D659461666FA76D65743F666F72F4657461F96F726D1774616677726D65B461666F3F6D65747D666F7253657461286F726D7D746166AF726D653961666F6E6D657456666F728B6574617E6F726DA574616622726D656861666F456D6574BF666F7275657461A66F726D2874616673726D654D61666F686D6574D5666F7243657461FF6F726DBA74616687726D65AB61666FC66D65744F666F72F4657461B96F726D96746166BC726D656C61666FB26D65742C666F72716574615C6F726D0B746166DB726D655A61666FEB6D6574BA666F727A6574615D6F726DD174616641726D65ED61666FA96D65746A666F72D2657461D26F726D4B746166F6726D65AF61666F796D65741A666F72D9657461486F726DFC746166B4726D656D61666F8D6D6574D5666F7243657461FF6F726DBE74616676726D657B61666F6A6D6574A1666F72206574617A6F726D5B74616625726D656C61666FB26D65742C666F72716574615F6F726DD774616677726D65B461666F3F6D65747D666F7256657461706F726D7D746166AF726D653961666F6E6D65745F666F721F657461D26F726D4B746166F6726D65AB61666F996D6574C2666F72D9657461486F726DFC746166B0726D659F61666F5D6D6574D5666F7243657461FF6F726DBE74616664726D650761666FC66D65744F666F72F4657461B96F726D82746166F8726D65C061666F5C6D6574F8666F72B66574616C6F726D867461668F726D65A161666F2C6D6574F7666F72F4657461A26F726DD174616641726D65ED61666FA96D65746E666F728E657461126F726DB17461665A726D65B461666F046D65742B666F72D9657461486F726DFC746166B0726D659D61666FAD6D6574D5666F7243657461FF6F726DBA74616686726D65D361666F926D6574B4666F7233657461FF6F726DC4746166F5726D65C061666F5C6D6574F8666F72B1657461BD6F726D3474616677726D65B461666F3F6D65747D666F7255657461C46F726D7D746166AF726D653961666F6E6D65745F666F72036574617E6F726DA574616622726D656861666F456D65748B666F7275657461A66F726D2874616673726D654361666F8C6D657479666F72AD6574612B6F726D797461665A726D65CA61666F6A6D6574A1666F72206574617A6F726D5B74616649726D659461666FA76D65743F666F72FB657461FE6F726D91746166DB726D655A61666FEB6D6574BE666F7287657461216F726D7D746166AF726D653961666F6E6D657459666F72136574617E6F726DA574616622726D656861666F4C6D65746F666F7275657461A66F726D2874616673726D654E61666F086D6574D5666F7243657461FF6F726DBA74616682726D659B61666FC66D65744F666F72F4657461BD6F726D6D74616670726D65C061666F5C6D6574F8666F72B66574616B6F726D1674616677726D65B461666F3F6D65747D666F7255657461006F726D85746166BA726D652A61666FE46D6574FD666F7223657461D26F726D4B746166F6726D65AF61666F636D6574D6666F72D9657461486F726DFC746166B4726D657961666F656D6574D5666F7243657461FF6F726DBE7461667D726D659361666F926D6574B4666F7233657461FF6F726DC174616631726D656C61666FB26D65742C666F72716574615E6F726D1F74616677726D65B461666F3F6D65741D666F7262657461646F726D7D746166AF726D653961666F6E6D657458666F72B3657461D26F726D4B746166F6726D65CB61666FBB6D6574EE666F7275657461A66F726D2874616673726D654361666F846D657479666F72AD6574612B6F726D7974616651726D65FE61666FC66D65744F666F72F4657461BD6F726D6F74616678726D65C061666F5C6D6574F8666F72B66574616A6F726D7674616677726D65B461666F3F6D65747D666F7254657461F86F726D7D746166AF726D653961666F6E6D657458666F729B6574617E6F726DA574616622726D656861666F456D6574FB666F7275657461A66F726D2874616673726D654161666FE86D6574D5666F7243657461FF6F726DBE74616666726D65D761666F6A6D6574A1666F72206574617A6F726D5D7461661D726D656C61666FB26D65742C666F7271657461586F726D5F746166DB726D655A61666FEB6D6574BA666F7278657461816F726D7D746166AF726D653961666F6E6D65745D666F72A5657461D26F726D4B746166F6726D65A861666FA66D6574C4666F7275657461A66F726D2874616673726D654361666FA46D6574D5666F7243657461FF6F726DDA746166A9726D656B61666F6A6D6574A1666F72206574617A6F726D5B74616631726D656C61666FB26D65742C666F7211657461996F726D4F746166DB726D655A61666FEB6D6574BB666F72576574615D6F726D1B766166 diff --git a/postProLoop.py b/postProLoop.py index ac7ec14193d1cadfa96c4112e655104d1285ad9d..d66fdfebe1b97d646e83b7b1d22259670d0e9e16 100755 --- a/postProLoop.py +++ b/postProLoop.py @@ -6,7 +6,7 @@ # Define externals program path according to local configuration # from prmClasses import * -import os, os.path, distutils.spawn, time, sys, re, glob +import os, os.path, shutil, time, sys, re, glob #, distutils.spawn import imp #import importlib import externalProgramPath @@ -143,7 +143,16 @@ class PostProLoop(PRMSet): self.pars['LATEXREQUEST'].enable(self.pars['LATEXRUN'].val==True) - def checkValidity(self, key): + def checkValidity(self, key): + #if distutils.spawn.find_executable(os.path.splitext(self.pars[key].val)[0]): + if shutil.which(self.pars[key].val): + return True + else: + print "%s is not found (%s)...."%self.pars[key].val + print "\t Check installation and accessibility..." + print "\t Use 'externalProgramPathGui' to define the full program path (recommanded)" + print "\t or add %s in your user path (not recommanded)"%key + return False ''' if distutils.spawn.find_executable(os.path.splitext(self.pars[key].val)[0]): return True diff --git a/prmClassesGui.py b/prmClassesGui.py index 3b20bd27509777a2e67127db1ece181439c78ebf..58b4d8d5c7a64b3c8c07226845ae112bc1d785cb 100644 --- a/prmClassesGui.py +++ b/prmClassesGui.py @@ -24,7 +24,7 @@ except: #print "PyQt%d (Qt %s) loaded!" % (foundQt, QT_VERSION_STR) -import distutils.spawn +import shutil #, distutils.spawn from prmClasses import * #======================================================================================== @@ -221,8 +221,9 @@ class ExeFileLine(FileLine): if os.path.isfile(f): # White bg #print "isFile" bgCol = QColor(255, 255, 255) - elif distutils.spawn.find_executable(os.path.splitext(f)[0]): # *.cmd pas reconnu comme exe !!! - #print "find_executable in path" + #elif distutils.spawn.find_executable(os.path.splitext(f)[0]): # *.cmd/*.bat pas reconnu comme exe !!! + elif shutil.which(f): # green bg + print ("found executable in path") bgCol = QColor(0, 255, 0) else: #redBg #print "not found"