def compileall(): """Compile all CL procedures & packages""" # start the timer t0 = time.time() # now do the IRAF startup from pyraf import iraf, cl2py, clcache, irafglobals from pyraf.iraftask import IrafCLTask, IrafPkg # close the old code cache and reopen without system cache cl2py.codeCache.close() del clcache.codeCache userCacheDir = os.path.join(irafglobals.userIrafHome, 'pyraf') if not os.path.exists(userCacheDir): try: os.mkdir(userCacheDir) print 'Created directory %s for cache' % userCacheDir except OSError: print 'Could not create directory %s' % userCacheDir dbfile = 'clcache' clcache.codeCache = clcache._CodeCache( [os.path.join(userCacheDir, dbfile)]) cl2py.codeCache = clcache.codeCache iraf.setVerbose() pkgs_tried = {} tasks_tried = {} npkg_total = 0 ntask_total = 0 ntask_failed = 0 # main loop -- keep loading packages as long as there are # new ones to try, and after loading each package look for # and initialize any CL tasks npass = 0 pkg_list = iraf.getPkgList() keepGoing = 1 while keepGoing and (npkg_total < len(pkg_list)): npass = npass + 1 pkg_list.sort() npkg_new = 0 printcenter("pass %d: %d packages (%d new)" % (npass, len(pkg_list), len(pkg_list) - npkg_total), char="=") for pkg in pkg_list: if not pkgs_tried.has_key(pkg): pkgs_tried[pkg] = 1 npkg_new = npkg_new + 1 printcenter(pkg) if pkg in ["newimred", "digiphotx"]: print """ Working around bugs in newimred, digiphotx. They screw up subsequent loading of imred/digiphot tasks. (It happens in IRAF too.)""" sys.stdout.flush() else: try: # redirect stdin in case the package tries to # prompt for parameters (this aborts but keeps # going) iraf.load(pkg, kw={'Stdin': 'dev$null'}) except KeyboardInterrupt: print 'Interrupt' sys.stdout.flush() keepGoing = 0 break except Exception, e: sys.stdout.flush() traceback.print_exc() if isinstance(e, MemoryError): keepGoing = 0 break print "...continuing...\n" sys.stdout.flush() # load tasks after each package task_list = iraf.getTaskList() task_list.sort() for taskname in task_list: if not tasks_tried.has_key(taskname): tasks_tried[taskname] = 1 taskobj = iraf.getTask(taskname) if isinstance(taskobj, IrafCLTask) and \ not isinstance(taskobj,IrafPkg): ntask_total = ntask_total + 1 print "%d: %s" % (ntask_total, taskname) sys.stdout.flush() try: taskobj.initTask() except KeyboardInterrupt: print 'Interrupt' sys.stdout.flush() keepGoing = 0 break except Exception, e: sys.stdout.flush() traceback.print_exc(10) if isinstance(e, MemoryError): keepGoing = 0 break print "...continuing...\n" sys.stdout.flush() ntask_failed = ntask_failed + 1 if not keepGoing: break
# Autogenerate module documentation in *modules* directory for all modules listed in *modules.lst* print "Automatica2014generating API documentation for modules in 'modules.lst'." # Remove old versions if os.path.exists('modules'): shutil.rmtree('modules') os.mkdir('modules') modstubs.autogen('modules.lst', 'modules') # Autogenerate rst from IRAF help files print "Automatically converting IRAF help file documentation for tasks listed in 'tasks.lst'." iraf.load('pysalt') pysalt_list = [] for i in iraf.getTaskList(): i = i.split('.') if i[0].count('pysalt') and len(i) > 1: try: iraf.load(i[1]) pysalt_list.append(i[1]) except: pass tasks = [] for i in iraf.getTaskList(): i = i.split('.') if i[0] in pysalt_list and len(i) > 1: tasks.append('%s/doc/%s.hlp' % (i[0], i[1])) #with open('tasks.lst') as f:
def compileall(): """Compile all CL procedures & packages""" # start the timer t0 = time.time() # now do the IRAF startup from pyraf import iraf, cl2py from pyraf.iraftask import IrafCLTask, IrafPkg iraf.setVerbose() pkgs_tried = {} tasks_tried = {} npkg_total = 0 ntask_total = 0 ntask_failed = 0 # main loop -- keep loading packages as long as there are # new ones to try, and after loading each package look for # and initialize any CL tasks npass = 0 pkg_list = iraf.getPkgList() keepGoing = 1 while keepGoing and (npkg_total<len(pkg_list)): npass = npass + 1 pkg_list.sort() npkg_new = 0 printcenter("pass %d: %d packages (%d new)" % (npass,len(pkg_list),len(pkg_list)-npkg_total), char="=") for pkg in pkg_list: if not pkgs_tried.has_key(pkg): pkgs_tried[pkg] = 1 npkg_new = npkg_new+1 printcenter(pkg) if pkg in ["newimred","digiphotx"]: print """ Working around bugs in newimred, digiphotx. They screw up subsequent loading of imred/digiphot tasks. (It happens in IRAF too.)""" sys.stdout.flush() else: try: # redirect stdin in case the package tries to # prompt for parameters (this aborts but keeps # going) iraf.load(pkg,kw={'Stdin': 'dev$null'}) except KeyboardInterrupt: print 'Interrupt' sys.stdout.flush() keepGoing = 0 break except Exception, e: sys.stdout.flush() traceback.print_exc() if isinstance(e,MemoryError): keepGoing = 0 break print "...continuing...\n" sys.stdout.flush() # load tasks after each package task_list = iraf.getTaskList() task_list.sort() for taskname in task_list: if not tasks_tried.has_key(taskname): tasks_tried[taskname] = 1 taskobj = iraf.getTask(taskname) if isinstance(taskobj, IrafCLTask) and \ not isinstance(taskobj,IrafPkg): ntask_total = ntask_total+1 print "%d: %s" % (ntask_total, taskname) sys.stdout.flush() try: taskobj.initTask() except KeyboardInterrupt: print 'Interrupt' sys.stdout.flush() keepGoing = 0 break except Exception, e: sys.stdout.flush() traceback.print_exc(10) if isinstance(e,MemoryError): keepGoing = 0 break print "...continuing...\n" sys.stdout.flush() ntask_failed = ntask_failed+1 if not keepGoing: break
# Autogenerate module documentation in *modules* directory for all modules listed in *modules.lst* print "Automatica2014generating API documentation for modules in 'modules.lst'." # Remove old versions if os.path.exists('modules'): shutil.rmtree('modules') os.mkdir('modules') modstubs.autogen('modules.lst','modules') # Autogenerate rst from IRAF help files print "Automatically converting IRAF help file documentation for tasks listed in 'tasks.lst'." iraf.load('pysalt') pysalt_list = [] for i in iraf.getTaskList(): i = i.split('.') if i[0].count('pysalt') and len(i)>1: try: iraf.load(i[1]) pysalt_list.append(i[1]) except: pass tasks=[] for i in iraf.getTaskList(): i = i.split('.') if i[0] in pysalt_list and len(i)>1: tasks.append('%s/doc/%s.hlp' % (i[0], i[1]))