The AutoLISP Packager README by Reini Urban Free evaluation alpha version 0.78, expires 4.August 2000 Description: The Packager is an AutoLISP application to manage multiple lisp source files and functions with unknown or complicated function dependencies. It consists of - the Packager, - the Source Code Analyzer, and - the Dependency Browser to view and click through the functions, files and their dependencies. It maintains a closed function/library set for deploying applications, compresses the library size by omitting not needed code and helps you in detecting holes in inter-file or inter-function dependencies. It lets you interactively view the function dependence tree for any functions or files. The Packager itself couldn't have been written without using itself. There's also a valuable tool to help in the creation of stdlib based applications. The typical code reduction is 30-50% per project. The typical error detection is 2 per project. Loading: The easiest would be to MENULOAD the PACKAGER.MNU and configure the paths in PACKAGER.MNL. Either work without standalone by arxload'ing the packager.arx or use the VLIDE and load just the packager.vlx. Within the VLIDE there are more options available, like reading/creating/compiling projects, reading .mkp or .prv application makefiles and directly editing the sources from the dialogs. Installation: Please think of adding the necessary lines from my sample acad.lsp to your acad.lsp: ;;; Add something like this to your acad.lsp ;;; The module path is a list of paths where lisp's and dcl's ;;; are searched by the packager and other stdlib based applications ;;; here is also the PACKAGE.DB created. (setq *MODULE-PATH* '("L:/SRC/STDLIB/")) (setq *al-ver* (ver) *al_ver* (_ver)) Load the Packager menu, either with MENULOAD or by loading PACKAGER.MNL In R14 load the ARX (standalone) or the VLX (with the VLIDE). The VLX has the advantage to enable direct edit (not in AutoCAD 2000 yet). In AutoCAD 2000 load PACKAGER15.VLX Binaries: PACKAGER.ARX for R14 standalone PACKAGER.VLX for R14 Visual Lisp IDE (not included in minor upgrades) PACKAGER15.VLX for AutoCAD 2000 Copy the DCL and the HLP to a directory in your Acad Library Path if you decide not to install it in the Acad Library Path. For now you have to do that by hand. Known problems: - The DCL based GUI is not threaded, no breaks or focus changes are possible, no modeless dialogs. A VB ActiveX Server for the GUI is in development. Certain sub dialogs should be mode-less. Windows should be splitted, for the results. - Loading the arx or vlx without a pre-defined *MODULE-PATH* will prompt you with an dialog to enter valid module paths. - The database PACKAGE.DB is always created and searched in the STDLIB path. This is usually the first entry in the *MODULE-PATH* if no STDLIB is found. - The VLX creates the resource DCL's in a directory which may not be in the Acad Library Path. Therefore the DCL will not be found. Copy the DCL to a directory in your Acad Library Path if this will happen. Workarounds? We would need a function to determine the full path of the actual VLX. (vl-list-loaded-vlx) just returns the appname symbol. In R14 it was possible with (arx). - Not all dependencies are correctly resolved yet. Therefore not all needed functions will be detected and copied. Missed are so far dynamically defined LOAD or REQUIRE arguments, dynamically defined functions definitions or names, and dynamically defined action tile callbacks. For certain user-defined functions it fails to detect functional arguments. - Possible incorrect order of precedence on double definitions: Please take care that the PACKAGE.DB definitions are in the desired order of precedence on possible double functions definitions. The Packager cannot yet takes care of the dynamic loading order of the application. It uses just the first found entry in the PACKAGE.DB database. Use stdlib versions in the Packaer-Options dialog. Or use the command DB-ORDER to manage the correct order. The command STDLIB-DB is defined to parse the STDLIB.PRJ file and create the entries in the correct order. Define your application sources in the same order of precedence as you would load them. - BROWSEFUNC: The first text-based input prompt is awful and will be replaced by something more intelligent, DCL based. - The analyzer sometimes leaves sometimes this: "|; ;;; with " on top-level. This should cause no harm but will be fixed. - The compile and project managment dialog is not ready yet. It may sometimes even cause and endless loop which can only be stopped by killing acad.exe in the taskmanager. This seems to be fixed now. - Working with the stdlib v0.3020 showed that still a few functions are not detected but a lot of other useless lines are copied instead. This will be optimized in future versions of the stdlib and the packager. But packaging to a library and manually editing then always will lead to the required result. Such as compiling the packager, which is probably the first major stdlib application. - EDIT button in VLIDE: The focus should go to the VLIDE, the dialog must be unloaded. So far you can only browse and have to step back to acad, and press three times escape to be able to edit the source file in VLISP. - Versions for ViLL or R13/R12 only on request. - Decreased performance with packaging special STDLIB versions. 0.66-0.70 are 10x slower in resolving than 0.65 0.70: 280 sec for PACKAGER.LSP with PACKALIB R14. 0.75: Option "Closed world" *PACKOPT-CLOSED* dramatically improved performance again. - Error with vlisp/STANDALONE.LSP not found, when a complete stdlib prj is packaged. This is solved by using the "Closed world" option. Future: - The detailed What-If analysis functionality in BROWSE is missing in this preview. - The Treeshaker functionality is missing in this preview. - STDLIB-PRJ is not yet functional. - Simple shortcuts to the most needed analysis calls are still missing. Also detailed variable analysis as in PEI-FINDVARS, try this instead. ACL has this: who-binds find bindings of a variable who-calls find callers of a function who-references find references to a variable who-sets find setters of a variable who-uses find references, bindings and settings of a variable Brief Revision History: 0.78 2000/06/05 14:11:29 rurban expires 4.Aug 2000 0.77 19-May-00 analyse only lisp src files (extensions: LSP LLB MNL) fixed PKG-HELP to jump to the topics 0.76 27-Apr-00 detect quoted FUNARGS in APPLY, MAPCAR, VL-SORT and such. e.g. in (mapcar 'x-of pts) X-OF went undetected, only (mapcar (function x-of) pts) was okay before. STD-FILE-BACKUP problem with open library file should be fixed (however the warning still shows up) improved DEFAULT-LIB: problems with strcase'd filenames fixed 0.75 10-Apr-00 *STDLIB-VERSION* >0.4009 fixed stdlib options in C:-PACKAGER added Option *PACKOPT-CLOSED* (Closed world) which dramatically improved preformance 0.74 6-Apr-00 added A2000 support renamed "Load all" button to "Analyse all" *STDLIB-VERSION* 0.4009 fixed dcl problem on PKGORDER move changed timebomb to 5.June 2000 0.73 9/10/99 sorry, no new features Todo: who-binds find bindings of a variable who-calls find callers of a function who-references find references to a variable who-sets find setters of a variable who-uses find references, bindings and settings of a variable *STDLIB-VERSION* 0.4002 *STDLIB-DATE* 19990901.1557 changed timebomb to 9.Nov 99 0.72 6/26/99 sorry, no new features changed timebomb to 26.August 99 0.71 06.06.99 fixed YESNO dialog PKG-ABOUT: white boxes 0.70 4/25/99 some R2000 VLX workarounds, compiled with not-drop DCL => pkg-help fixed nasty bugs with vl-symbol-name and strings changed timebomb to 24.June 99 changed menu id's to be ADN compliant fixed error with non LSP files in projects 0.69 3/26/99 fixed std-ordered-union better Help and Edit buttons 0.68 3/14/99 MNU: PKG-ABOUT under HELP flyout PKG-ABOUT: more statistics printed, nice animation PKG-HELP: doesn't need the .HLP in the path anymore Store/read the last projects and module-paths for later sessions. Express tools acet-ui-pickdir support Planned: STDLIB-PRJ => builds a VLISP project skeleton 0.67 3/8/99 bugfix: lost files after "Force" Browse supports stdlib versions added "Ignore" button 0.66 3/7/99 analyser: finds FUNCTION func (std-toupper bug) print all not analyzable dynamic functions finds STD-LOAD fixed ACTION_TILE analyser added "Load All" button fixed library extension PRJ => LSP store package options in library Resolving 10x slower fixed "Compile" button 0.65 3/5/99 new option dialog added: stdlib package versions improved: packager, top-level clicks and double-clicks, default libname 0.64 3/5/99 put onto the web 0.6 2/21/99 PACKAGE.DB format v1.2 (added :LOADED) 0.51 2/19/99 PACKAGE.DB format v1.1 0.5 2/17/99 first successful PACKALIB.LSP --- Reini Urban 19-Jun-00 Copyright (c) 1999,2000 by Reini Urban. All rights reserved. http://xarch.tu-graz.ac.at/autocad/lsp_tools/#Packager see also http://xarch.tu-graz.ac.at/autocad/stdlib/ Local variables: Mode: Text End: