# # Original: daphne:~spd/install/gspn.bugs.txt # List of problems found with greatspn. Some of them are from the earlier motif versions (< 2.1); it seems 2.0.2 is newer than 2.1 and fixes some of these. 1) # This is fixed on 2.0.2 Makefiles depends on GSPN2BINS; if it is not set, it tries to create files under / If you set GSPN2BINS to an absolute path, it seems '../' is prepended, so it fails again. Setting GSPN2BINS=bin it starts working... 2) # This is also fixed with the global install/GREAT_CONFIG file > setenv MAKE /usr/local/GNU/bin/make what if gnu make is not at this location? (I had to do a find . -type f -exec grep GNU {} \; -print to locate all the ocurrences of that line) 3) # This is still a problem. what if you don't have uil? (solved copying UIL to an HP box and 'making' there') I think uil is not present at most systems, so you could consider to distribure the final .uid's too... 4) # This is also fixed with the global install/GREAT_CONFIG file Where do you set the paths for Motif includes and libs? 5) I don't like to see 'Compiling *.c' messages instead of the actual compilation instruction (this is a personal preference, I know.... :) ) 6) # I don't know if this is still a problem Only in SunOS 4.x: If you use -I/usr/5include, assert is not defined (solved compiling with -DNDEBUG) 7) I don't like at all the 'make.cshrc' approach. a) What if the user is using a shell of the bourne family? b) I don't like some script to mess with my cshrc c) mkdir should be 'mkdirhier' or something similar; user may want to use N_DIR=~/.gspn/nets instead, for instance. Anyway, 'make install' in most packages means 'install binaries and documentation under the selected location; not setup my account to use the already installed program Here we use a 'source path-to-gspn/config.csh', you can see it at /usr/local/gspn/greatspn2.1 8) There should be a clear separation between the 'sources' tree and the 'installation directory', so you can install from the sources just the required files and then, remove anything else 9) Location of binary 'rsh' should be a configuration option. 10) # This is still a problem in 2.0.2, specially with some PC X-Servers after a lot of warnings about 'Could not convert font...' it dies in ... start InitPopups X Error of failed request: BadName (named color or font does not exist) Major opcode of failed request: 45 (X_OpenFont) Serial number of failed request: 1831 Current serial number in output stream: 1865 I had to change the Big font in 'fonts.uil': fontBig : font('-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1'); and I had to change some other things in main.c, instead of having multiple "XLoadFont" it's cleaner and nicer a loop with a single XLoadQueryFont and uses "fixed" if the font is not present You can find my modified main.c at /usr/local/gspn/greatspn2.1/greatsrc2.0/main.c 11) When using linux Motif (2.x) there is a problem in toolkit.c, I had to replace MrmOpenHierarchy with MrmOpenHierarchyPerDisplay, using the extern appshell. 12) I had to fix also lots of csh scripts which didn't start with '#!/bin/csh -f' Even with that, they have problems with linux csh, so I changed them. You can find them at /usr/local/gspn/greatspn2.1/ix86_linux_2 13) The sources at gsrc2 rely on char being signed. This is not true on some compilers (IRIX cc, for instance) There are problems too with the size of ints (long vs int) I started fixing some files (and converting them to ansi C) but it was too much work (and you can compile them using extra compiler flags, anyway) The fixed file is gmt_stndrd.c at /usr/local/gspn/greatspn2.1/gsrc2 14) in "command.c" it should use sh instead of rsh when host is localhost. (so you don't need a .rhosts at all) Maybe the full rsh stuff could be a runtime preference, so users could choose to use ssh, for instance. 15) It seems there is something wrong with the 'solution' modules. I'm asuming here that when you launch, for instance, Net->Struct->Minimal Deadlocks. it's the 'deadl' program which makes all the calculations, and GreatSPN2.0 is used only for GUI. Well, while 'deadl' is running, it only gets at most 50% of CPU, and GreatSPN2.0, which by now should be just waiting, eats the other 50%, so you get half of the speed you could get. USER PID %CPU %MEM NI VSZ RSS SHRD TT STAT TIME COMMAND spd 24600 50.9 5.3 0 4788 3396 2256 p1 R 8:04 GreatSPN2.0 spd 24613 48.0 6.5 0 4652 4128 244 p1 R 8:04 /usr/local/great while if you execute deadl from shell: csh /usr/local/greatspn/ix86_linux_2/deadl /home/spd/.gspn/nets/prueba USER PID %CPU %MEM NI VSZ RSS SHRD TT STAT TIME COMMAND spd 24660 99.0 1.7 0 1604 1080 244 p0 R 0:15 /usr/local/great 16) When compiling greatspn on Linux Debian 1.3, it complains about all the gsrc2/*yacc. I had to move the #include "*.c" lines from bottom to top, and declare yyin on their corresponding .c file. 17) The code for using pipes has a side effect on linux (only): If you are running gspn in background, it gets a TTIN signal (procces requires input from tty) and gspn gets frozen till you bring it to foreground. 18) Linux Motif specific problem (not a bug in gspn): In linux you can use two Motif implementations: public domain lesstif, shipped with RedHat 5.1 and the comercial one, rh-motif 2.1. Lesstif 0.85 doesn't know how to deal with UIL so you have to use the comercial Motif; and it has a known bug, which forces you to supply a dummy _Xsetlocale() function; and after that, the file selector box ("open" dialog) doesn't show the filenames (but you still can write them by hand). This is true for RedHat 5.1 (libc5); with Debian 1.3 (libc4) it does work. 19) Problem with colors and text position on non-sun X-Servers: Some x-servers (SGI's and XWin32, for instance) return 0 for BlackPixelOfScreen(); when this happens you use a different set of functions for OR/XOR/CLEAR, but you use always a PlaneMask of "1". This causes all the drawing to be cyan coloured, and (I don't know why) to get the text labels displaced. To fix it I just commented out all the XSetPlaneMask() I found. I didn't understand the reason for XSetForeground(mainDS.display,mainDS.gc,gBlack ^ gWhite); on showgdi.c, so I changed it to XSetForeground(mainDS.display,mainDS.gc,gBlack); 20) Duplicated RemoveInput; with some X-Servers, it dumps-core. In command.c, sometimes the static "IID" gets removed twice (once on InputCB() and once on CheckForDead()) As a quick and dirty workaround, I added a flag so if IID already has been removed, XtRemoveInput is not called again. 21) fix glp_solve for when GSPNLPSOLVE is not defined