From e65c9ecb9196607534ae924939ff69a3cdfc9ea0 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 1 Nov 2012 10:12:24 -0700 Subject: [PATCH 01/54] * If a bash shell check if interactive or not for alias/functions * Fix the flags with regards to recursive load/unload * Fix perl.pm init file typo (bug 3497092) --- NEWS | 6 ++- init/perl.pm.in | 2 +- modules_def.h | 1 + .../modules.50-cmds/121-prereq-module.exp | 2 +- utility.c | 45 +++++++++++++++++-- 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index e9f0e75c2..57ee63e2c 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,11 @@ **************************** Release 3.2 ****************************** Modules 3.2.10 + * Fixed the module switch with custom delimiters (Tyson Whitehead) + * If a bash shell check if interactive or not for alias/functions + * Fix the flags with regards to recursive load/unload + * Fix perl.pm init file typo (bug 3497092) + * Moved from cvs to git * Fix the module swap with the --delim option (Tyson Whitehead) Modules 3.2.9 @@ -18,7 +23,6 @@ Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) * Optionally use Tcl memory check routines for malloc/realloc. * Fixed the "module purge" memory corruption (Poor Yorick) * Added support for Ruby (Tammo Tjarks) - * Fix the flags with regards to recursive load/unload Modules 3.2.8 Oct 1, 2010 R.K. Owen (rk@owen.sj.ca.us) diff --git a/init/perl.pm.in b/init/perl.pm.in index e835af9dd..44fc5b120 100644 --- a/init/perl.pm.in +++ b/init/perl.pm.in @@ -2,7 +2,7 @@ @VERSIONING@ $ENV{"MODULE_VERSION_STACK"}="@VERSION@"; @VERSIONING@ $ENV{"MODULE_VERSION"}="@VERSION@"; @VERSIONING@} else { -@VERSIONING@ $ENV{"MODULE_VERSION_STACK"}=$ENV{"$MODULE_VERSION"}; +@VERSIONING@ $ENV{"MODULE_VERSION_STACK"}=$ENV{"MODULE_VERSION"}; @VERSIONING@} sub module { diff --git a/modules_def.h b/modules_def.h index cea21ad75..6d175dccf 100644 --- a/modules_def.h +++ b/modules_def.h @@ -752,6 +752,7 @@ extern EM_RetVal ReturnValue( Tcl_Interp*, int); extern void OutputExit(); extern char *EMGetEnv(Tcl_Interp *, char const *); extern char *EMSetEnv(Tcl_Interp *, char const *, char const *); +extern int is_interactive(void); #ifndef HAVE_STRDUP # undef strdup diff --git a/testsuite/modules.50-cmds/121-prereq-module.exp b/testsuite/modules.50-cmds/121-prereq-module.exp index 02010d50a..50f017f23 100644 --- a/testsuite/modules.50-cmds/121-prereq-module.exp +++ b/testsuite/modules.50-cmds/121-prereq-module.exp @@ -53,7 +53,7 @@ set ts_csh "setenv testsuite yes ;" # Error messages # -set err_prereq "$error_msgs: Module '$module' depends on one of the module\\(s\\) 'trace/load_ovr trace/load_onoff trace/load_on trace/load_all2 trace/load_all1 trace/disptrac trace/disp_onoff trace/dilo_onoff trace/colon trace/all_on trace/all_off trace/CVS'\n" +set err_prereq "$error_msgs: Module '$module' depends on one of the module\\(s\\) 'trace/load_ovr trace/load_onoff trace/load_on trace/load_all2 trace/load_all1 trace/disptrac trace/disp_onoff trace/dilo_onoff trace/colon trace/all_on trace/all_off'\n" set err_exec "$error_msgs: Tcl command execution failed: prereq\ttrace\n" # diff --git a/utility.c b/utility.c index 641a756d5..ba7c445ab 100644 --- a/utility.c +++ b/utility.c @@ -1422,7 +1422,7 @@ static int output_set_alias( const char *alias, ** Shells supporting extended bourne shell syntax .... **/ if( (!strcmp( shell_name, "sh") && bourne_alias) - || !strcmp( shell_name, "bash") + || (!strcmp( shell_name, "bash") && is_interactive()) || !strcmp( shell_name, "zsh" ) || !strcmp( shell_name, "ksh")) { /** @@ -1471,8 +1471,8 @@ static int output_set_alias( const char *alias, fprintf( aliasfile, "'%c", alias_separator); - } else if( !strcmp( shell_name, "sh") - && bourne_funcs) { + } else if( ((!strcmp( shell_name, "sh")) && bourne_funcs) + || (!strcmp( shell_name, "bash") && !is_interactive())) { /** ** The bourne shell itself ** need to write a function unless this sh doesn't support @@ -3215,3 +3215,42 @@ char * EMSetEnv( Tcl_Interp *interp, return value; } /** End of 'EMSetEnv' **/ + +/*++++ + ** ** Function-Header ***************************************************** ** + ** ** + ** Function: is_interactive ** + ** ** + ** Description: Test whether an interactive shell or not ** + ** (for bash) ** + ** ** + ** first edition: 2012/05/21 R.K.Owen ** + ** ** + ** Parameters: none ** + ** ** + ** Result: int return 1 if true, else 0 ** + ** ** + ** ************************************************************************ ** + ++++*/ +int is_interactive(void) { + + static int saved = -1; + FILE *tty = (FILE *) NULL; + + if (saved < 0) { + /* try /dev/tty */ + if (!(tty = fopen("/dev/tty","w"))) { + saved = 0; /* no tty - hence non-interactive */ + } else if (isatty(fileno(stdin)) || isatty(fileno(stdout)) + || isatty(fileno(stderr))) { + /* at least one of stdin/out/err is a tty */ + saved = 1; + } else { + saved = 0; + } + if (tty) fclose(tty); + } + + return saved; + +} /** End of 'is_interactive' **/ From ef9da4809bdd9671889b2be0198c143fffb54cd4 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 1 Nov 2012 14:46:48 -0700 Subject: [PATCH 02/54] Trying out the git version of $Id:$ --- .gitattributes | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..43e1da845 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.c ident +*.am ident +*.ac ident From 0ba09fc3a094b8e272bef33b0dadcdeec783d7c2 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 1 Nov 2012 14:56:16 -0700 Subject: [PATCH 03/54] Trying the git version of $Id$ --- Makefile.am | 2 +- ModuleCmd_Avail.c | 2 +- ModuleCmd_Clear.c | 2 +- ModuleCmd_Display.c | 2 +- ModuleCmd_Help.c | 2 +- ModuleCmd_Init.c | 2 +- ModuleCmd_List.c | 2 +- ModuleCmd_Load.c | 2 +- ModuleCmd_Purge.c | 2 +- ModuleCmd_Refresh.c | 2 +- ModuleCmd_Switch.c | 2 +- ModuleCmd_Update.c | 2 +- ModuleCmd_Use.c | 2 +- ModuleCmd_Whatis.c | 2 +- cmdAlias.c | 2 +- cmdConflict.c | 2 +- cmdInfo.c | 2 +- cmdIsLoaded.c | 2 +- cmdLog.c | 2 +- cmdMisc.c | 2 +- cmdModule.c | 2 +- cmdPath.c | 2 +- cmdSetenv.c | 2 +- cmdTrace.c | 2 +- cmdUlvl.c | 2 +- cmdUname.c | 2 +- cmdVerbose.c | 2 +- cmdVersion.c | 2 +- cmdWhatis.c | 2 +- cmdXResource.c | 2 +- configure.ac | 2 +- error.c | 2 +- etc/Makefile.am | 2 +- ext/Makefile.am | 2 +- getopt.c | 2 +- init.c | 2 +- init/Makefile.am | 2 +- locate_module.c | 2 +- main.c | 2 +- modulefiles/Makefile.am | 2 +- utility.c | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Makefile.am b/Makefile.am index ccf3b4b4c..4b2c7f8d9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ ########################################################################### ## ## File: ./Makefile.am -## Versions: $Id: Makefile.am,v 1.21.6.2 2011/10/17 17:16:50 rkowen Exp $ +## Versions: $Id$ ## Created: 2002/06/14 ## ########################################################################### diff --git a/ModuleCmd_Avail.c b/ModuleCmd_Avail.c index 24903d405..ffa4db6c7 100644 --- a/ModuleCmd_Avail.c +++ b/ModuleCmd_Avail.c @@ -34,7 +34,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Avail.c,v 1.10.20.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Clear.c b/ModuleCmd_Clear.c index 0f2ae4ea2..9b86fc201 100644 --- a/ModuleCmd_Clear.c +++ b/ModuleCmd_Clear.c @@ -27,7 +27,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Clear.c,v 1.3.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Display.c b/ModuleCmd_Display.c index 3b0c35acb..8bb7d4e6c 100644 --- a/ModuleCmd_Display.c +++ b/ModuleCmd_Display.c @@ -27,7 +27,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Display.c,v 1.4.22.2 2011/10/03 19:31:52 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Help.c b/ModuleCmd_Help.c index e31eb10ce..2e5b66b49 100644 --- a/ModuleCmd_Help.c +++ b/ModuleCmd_Help.c @@ -29,7 +29,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Help.c,v 1.6.20.2 2011/10/03 19:31:52 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Init.c b/ModuleCmd_Init.c index 13729d75a..b0be2396a 100644 --- a/ModuleCmd_Init.c +++ b/ModuleCmd_Init.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Init.c,v 1.7.20.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_List.c b/ModuleCmd_List.c index ac99765b0..f5f07d5ab 100644 --- a/ModuleCmd_List.c +++ b/ModuleCmd_List.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_List.c,v 1.5.18.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Load.c b/ModuleCmd_Load.c index a227b5224..a760a2092 100644 --- a/ModuleCmd_Load.c +++ b/ModuleCmd_Load.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Load.c,v 1.8.4.4 2012/05/17 20:54:39 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Purge.c b/ModuleCmd_Purge.c index c765bc272..7c14ae7dd 100644 --- a/ModuleCmd_Purge.c +++ b/ModuleCmd_Purge.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Purge.c,v 1.3.22.4 2011/11/28 21:13:15 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Refresh.c b/ModuleCmd_Refresh.c index b13709209..bccace37c 100644 --- a/ModuleCmd_Refresh.c +++ b/ModuleCmd_Refresh.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Refresh.c,v 1.3.18.2 2011/10/03 19:31:52 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Switch.c b/ModuleCmd_Switch.c index 2b07f63dc..191c04c20 100644 --- a/ModuleCmd_Switch.c +++ b/ModuleCmd_Switch.c @@ -27,7 +27,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Switch.c,v 1.7.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Update.c b/ModuleCmd_Update.c index bb818a571..1286756fe 100644 --- a/ModuleCmd_Update.c +++ b/ModuleCmd_Update.c @@ -25,7 +25,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Update.c,v 1.6.18.5 2011/11/28 21:13:15 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Use.c b/ModuleCmd_Use.c index ed7c95419..af24837bb 100644 --- a/ModuleCmd_Use.c +++ b/ModuleCmd_Use.c @@ -29,7 +29,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Use.c,v 1.6.20.4 2011/11/28 21:13:15 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/ModuleCmd_Whatis.c b/ModuleCmd_Whatis.c index fdc6f7e53..4a401d29f 100644 --- a/ModuleCmd_Whatis.c +++ b/ModuleCmd_Whatis.c @@ -23,7 +23,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: ModuleCmd_Whatis.c,v 1.5.18.3 2011/11/29 15:48:58 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdAlias.c b/cmdAlias.c index 1511ceebc..592c3a52c 100644 --- a/cmdAlias.c +++ b/cmdAlias.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdAlias.c,v 1.4.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdConflict.c b/cmdConflict.c index eb3073365..729617d8b 100644 --- a/cmdConflict.c +++ b/cmdConflict.c @@ -27,7 +27,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdConflict.c,v 1.9.20.2 2011/10/06 21:33:39 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdInfo.c b/cmdInfo.c index 4294c2feb..451d72155 100644 --- a/cmdInfo.c +++ b/cmdInfo.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdInfo.c,v 1.8.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdIsLoaded.c b/cmdIsLoaded.c index 9a8da2c04..97f15a6c3 100644 --- a/cmdIsLoaded.c +++ b/cmdIsLoaded.c @@ -23,7 +23,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdIsLoaded.c,v 1.6.20.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdLog.c b/cmdLog.c index 4d3265d74..30369a283 100644 --- a/cmdLog.c +++ b/cmdLog.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdLog.c,v 1.5.18.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdMisc.c b/cmdMisc.c index c38eef877..2f8da0847 100644 --- a/cmdMisc.c +++ b/cmdMisc.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdMisc.c,v 1.4.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdModule.c b/cmdModule.c index 283981b73..429749ba5 100644 --- a/cmdModule.c +++ b/cmdModule.c @@ -31,7 +31,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdModule.c,v 1.11.6.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdPath.c b/cmdPath.c index 26cd6b3ae..7ef002d33 100644 --- a/cmdPath.c +++ b/cmdPath.c @@ -30,7 +30,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdPath.c,v 1.10.4.5 2011/11/28 21:13:15 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdSetenv.c b/cmdSetenv.c index a2f3bc5e2..c7add002b 100644 --- a/cmdSetenv.c +++ b/cmdSetenv.c @@ -30,7 +30,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdSetenv.c,v 1.6.22.4 2011/11/28 21:13:15 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdTrace.c b/cmdTrace.c index edf89bc9e..2564a650f 100644 --- a/cmdTrace.c +++ b/cmdTrace.c @@ -29,7 +29,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdTrace.c,v 1.8.20.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdUlvl.c b/cmdUlvl.c index 2aa78ec5e..258acbcbc 100644 --- a/cmdUlvl.c +++ b/cmdUlvl.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdUlvl.c,v 1.6.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdUname.c b/cmdUname.c index 744771902..986c78c90 100644 --- a/cmdUname.c +++ b/cmdUname.c @@ -29,7 +29,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdUname.c,v 1.3.20.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdVerbose.c b/cmdVerbose.c index ad137e581..3c6341f35 100644 --- a/cmdVerbose.c +++ b/cmdVerbose.c @@ -26,7 +26,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdVerbose.c,v 1.4.22.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdVersion.c b/cmdVersion.c index 6c09722f5..438a5547e 100644 --- a/cmdVersion.c +++ b/cmdVersion.c @@ -47,7 +47,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdVersion.c,v 1.9.20.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdWhatis.c b/cmdWhatis.c index ff899f54b..5baa4abe5 100644 --- a/cmdWhatis.c +++ b/cmdWhatis.c @@ -28,7 +28,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdWhatis.c,v 1.4.20.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/cmdXResource.c b/cmdXResource.c index 18ccce272..8574b47ac 100644 --- a/cmdXResource.c +++ b/cmdXResource.c @@ -40,7 +40,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: cmdXResource.c,v 1.7.20.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/configure.ac b/configure.ac index 9c1274a2c..ed9cdf94e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl dnl File: configure.in -dnl Revision: $Id: configure.ac,v 1.20.18.2 2012/04/11 16:54:30 rkowen Exp $ +dnl Revision: $Id$ dnl Created: 1994/06/18 dnl Author: Leif Hedstrom dnl Martin S. Utesch diff --git a/error.c b/error.c index f7ae31bae..9f494464b 100644 --- a/error.c +++ b/error.c @@ -30,7 +30,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: error.c,v 1.8.4.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/etc/Makefile.am b/etc/Makefile.am index 869c34087..997b2f717 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -1,7 +1,7 @@ ########################################################################### ## ## File: etc/Makefile.am -## Versions: $Id: Makefile.am,v 1.3 2005/12/05 16:38:08 rkowen Exp $ +## Versions: $Id$ ## Created: 2002/06/14 ## ########################################################################### diff --git a/ext/Makefile.am b/ext/Makefile.am index a4663467c..5904800a4 100644 --- a/ext/Makefile.am +++ b/ext/Makefile.am @@ -1,7 +1,7 @@ ########################################################################### ## ## File: ext/Makefile.am -## Versions: $Id: Makefile.am,v 1.3 2005/12/05 16:38:08 rkowen Exp $ +## Versions: $Id$ ## Created: 2002/06/14 ## ########################################################################### diff --git a/getopt.c b/getopt.c index ec3c57ffe..70c17cc67 100644 --- a/getopt.c +++ b/getopt.c @@ -51,7 +51,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: getopt.c,v 1.3 2005/11/29 04:26:30 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/init.c b/init.c index fbce8e24a..11ddb35d2 100644 --- a/init.c +++ b/init.c @@ -38,7 +38,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: init.c,v 1.9.4.4 2011/11/11 15:04:03 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/init/Makefile.am b/init/Makefile.am index ac2927499..755c5416d 100644 --- a/init/Makefile.am +++ b/init/Makefile.am @@ -1,7 +1,7 @@ ########################################################################### ## ## File: init/Makefile.am -## Versions: $Id: Makefile.am,v 1.2.4.2 2011/10/17 17:16:52 rkowen Exp $ +## Versions: $Id$ ## Created: 2002/06/14 ## ########################################################################### diff --git a/locate_module.c b/locate_module.c index 4f5429a0d..9d3389f8f 100644 --- a/locate_module.c +++ b/locate_module.c @@ -33,7 +33,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: locate_module.c,v 1.14.18.2 2011/10/03 20:25:43 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/main.c b/main.c index 50f861e5d..938a2d20a 100644 --- a/main.c +++ b/main.c @@ -29,7 +29,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: main.c,v 1.16.6.1 2010/11/11 18:23:18 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ diff --git a/modulefiles/Makefile.am b/modulefiles/Makefile.am index 8ab76d4ff..af42d2fb4 100644 --- a/modulefiles/Makefile.am +++ b/modulefiles/Makefile.am @@ -1,7 +1,7 @@ ########################################################################### ## ## File: modulefiles/Makefile.am -## Versions: $Id: Makefile.am,v 1.4.20.1 2010/11/11 18:23:19 rkowen Exp $ +## Versions: $Id$ ## Created: 2002/06/14 ## ########################################################################### diff --git a/utility.c b/utility.c index ba7c445ab..29b5b8dc5 100644 --- a/utility.c +++ b/utility.c @@ -52,7 +52,7 @@ ** ** ** ************************************************************************ **/ -static char Id[] = "@(#)$Id: utility.c,v 1.19.6.9 2011/11/28 21:27:13 rkowen Exp $"; +static char Id[] = "@(#)$Id$"; static void *UseId[] = { &UseId, Id }; /** ************************************************************************ **/ From 33ce5ecef3d8fa911a432cf8e4fab03debeaf1ab Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 1 Nov 2012 15:21:19 -0700 Subject: [PATCH 04/54] More $Id$ --- .gitattributes | 3 +++ etc/add.modules.in | 2 +- ext/add.ext.in | 2 +- init/.modulespath.in | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitattributes b/.gitattributes index 43e1da845..2c4d040a1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,6 @@ *.c ident *.am ident *.ac ident +ext/add.ext.in ident +etc/add.modules.in ident +init/.modulespath.in ident diff --git a/etc/add.modules.in b/etc/add.modules.in index 66272de28..196cf1d4f 100755 --- a/etc/add.modules.in +++ b/etc/add.modules.in @@ -4,7 +4,7 @@ # # @configure_input@ # -VERSION='$Id: add.modules.in,v 1.2.24.1 2010/11/11 18:23:18 rkowen Exp $' +VERSION='$Id$' SKEL=@SKELPATH@ ETC=@ETCPATH@ /bin/cat < Date: Mon, 5 Nov 2012 14:37:30 -0800 Subject: [PATCH 05/54] * Increased the "update" buffer (Leon Kos) --- ModuleCmd_Update.c | 4 ++-- NEWS | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ModuleCmd_Update.c b/ModuleCmd_Update.c index 1286756fe..458818f43 100644 --- a/ModuleCmd_Update.c +++ b/ModuleCmd_Update.c @@ -44,7 +44,7 @@ static void *UseId[] = { &UseId, Id }; /** CONSTANTS **/ /** ************************************************************************ **/ -#define UPD_BUFSIZE 1024 +#define UPD_BUFSIZE 2048 /** ************************************************************************ **/ /** MACROS **/ @@ -84,7 +84,7 @@ static char _proc_ModuleCmd_Update[] = "ModuleCmd_Update"; ** Result: int TCL_ERROR Failure ** ** TCL_OK Successful operation ** ** ** - ** Attached Globals: flags Controllig the callback functions ** + ** Attached Globals: flags Controls the callback functions ** ** ** ** ************************************************************************ ** ++++*/ diff --git a/NEWS b/NEWS index 57ee63e2c..aa50c2da5 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ Modules 3.2.10 * Fix perl.pm init file typo (bug 3497092) * Moved from cvs to git * Fix the module swap with the --delim option (Tyson Whitehead) + * Increased the "update" buffer (Leon Kos) Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) From dea07dbeaa1a9add5ca526ac2fcbde386044c8dd Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 8 Nov 2012 15:03:07 -0800 Subject: [PATCH 06/54] * Use the locale for sorting modulefiles by the avail command --- ModuleCmd_Avail.c | 18 ++++++++++++++++-- NEWS | 1 + configure.ac | 5 +++-- doc/module.1.in | 7 ++++++- doc/modulefile.4.in | 3 ++- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ModuleCmd_Avail.c b/ModuleCmd_Avail.c index ffa4db6c7..251840d8d 100644 --- a/ModuleCmd_Avail.c +++ b/ModuleCmd_Avail.c @@ -43,6 +43,9 @@ static void *UseId[] = { &UseId, Id }; #include #include "modules_def.h" +#if defined HAVE_STRCOLL && defined HAVE_LOCALE_H && defined HAVE_SETLOCALE +# include +#endif /** ************************************************************************ **/ /** LOCAL DATATYPES **/ @@ -214,6 +217,13 @@ int ModuleCmd_Avail( Tcl_Interp *interp, goto unwind1; #endif +#if defined HAVE_STRCOLL && defined HAVE_SETLOCALE + /** + ** define the collation order using the locale + **/ + (void) setlocale(LC_COLLATE,""); +#endif + /** ** If we're given a full-path, then we'll just check that directory. ** Otherwise, we'll check every directory in MODULESPATH. @@ -2098,8 +2108,12 @@ static int fi_ent_cmp( const void *fi1, { #ifdef DEF_COLLATE_BY_NUMBER - return colcomp( ((fi_ent*)fi1)->fi_name, ((fi_ent*)fi2)->fi_name); + return colcomp( ((fi_ent*)fi1)->fi_name, ((fi_ent*)fi2)->fi_name); #else - return strcmp( ((fi_ent*)fi1)->fi_name, ((fi_ent*)fi2)->fi_name); +# ifdef HAVE_STRCOLL + return strcoll( ((fi_ent*)fi1)->fi_name, ((fi_ent*)fi2)->fi_name); +# else + return strcmp( ((fi_ent*)fi1)->fi_name, ((fi_ent*)fi2)->fi_name); +# endif #endif } diff --git a/NEWS b/NEWS index aa50c2da5..071989831 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ Modules 3.2.10 * Moved from cvs to git * Fix the module swap with the --delim option (Tyson Whitehead) * Increased the "update" buffer (Leon Kos) + * Use the locale for sorting modulefiles by the avail command Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/configure.ac b/configure.ac index ed9cdf94e..97bf96497 100644 --- a/configure.ac +++ b/configure.ac @@ -187,7 +187,7 @@ AC_HEADER_STDC AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h termio.h fcntl.h ctype.h \ stdarg.h varargs.h syslog.h stdint.h)dnl AC_CHECK_HEADERS([sys/ioctl.h sys/termios.h sys/mode.h sys/stat.h sys/param.h \ - errno.h assert.h])dnl + errno.h assert.h locale.h])dnl dnl --------------------------------------------------------------------------- dnl Checks for typedefs, structures, and compiler characteristics. dnl --------------------------------------------------------------------------- @@ -198,9 +198,10 @@ AC_STRUCT_TM dnl --------------------------------------------------------------------------- dnl Checks for library functions. dnl --------------------------------------------------------------------------- +AC_FUNC_STRCOLL AC_CHECK_FUNCS([strdup uname gethostname getdomainname \ mktemp tmpnam tempnam \ - syslog dup2])dnl + syslog dup2 setlocale])dnl dnl --------------------------------------------------------------------------- dnl Checks for libraries dnl --------------------------------------------------------------------------- diff --git a/doc/module.1.in b/doc/module.1.in index 4f34b9bec..2eba560b1 100644 --- a/doc/module.1.in +++ b/doc/module.1.in @@ -270,11 +270,16 @@ environment changes found within conditional statements.) List loaded modules. .TP 15 .B avail [path...] -List all available modulefiles in the current \s-1MODULEPATH\s0. +List all available modulefiles in the current \s-1MODULEPATH\s0, where +the sorting order is given by the \s-1LC_COLLATE\s0 locale environment +variable. + All directories in the \s-1MODULEPATH\s0 are recursively searched for files containing the \fImodulefile\fP magic cookie. + If an argument is given, then each directory in the \s-1MODULEPATH\s0 is searched for modulefiles whose pathname match the argument. + Multiple versions of an application can be supported by creating a subdirectory for the application containing modulefiles for each version. .PD diff --git a/doc/modulefile.4.in b/doc/modulefile.4.in index b7f51562f..67449b4f9 100644 --- a/doc/modulefile.4.in +++ b/doc/modulefile.4.in @@ -840,7 +840,8 @@ So, changes made in these file will affect the subsequently interpreted \fImodulefile\fP. .LP If no \fIdefault\fP version may be figured out, then the highest -lexicographically sorted \fImodulefile\fP under the directory will be used. +lexicographically sorted \fImodulefile\fP under the directory +using the 'C' locale will be used. .LP For example, it is possible for a user to have a directory named \fIX11\fP which simply contains a \fI.version\fP file specifying which From a70e5e1fb5a7a2bd30461b7eaf854e6c0faae3d8 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Mon, 12 Nov 2012 11:42:20 -0800 Subject: [PATCH 07/54] * Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste, Tyson Whitehead) --- ModuleCmd_Init.c | 15 +++++++++++---- NEWS | 2 ++ cmdPath.c | 9 +++++++-- cmdXResource.c | 13 ++++++++----- utility.c | 31 +++++++++++++++++++++++-------- 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/ModuleCmd_Init.c b/ModuleCmd_Init.c index b0be2396a..cb3bc99e1 100644 --- a/ModuleCmd_Init.c +++ b/ModuleCmd_Init.c @@ -121,15 +121,18 @@ int ModuleCmd_Init( Tcl_Interp *interp, { char *home_pathname, *home_pathname2, - **shell_startups; /** A list off all startup files our **/ /** invoking shell will source **/ + **shell_startups; /** A list of all startup files our **/ + /** invoking shell will source **/ int max_home_path = MOD_BUFSIZE + 40; - Tcl_RegExp modcmdPtr = Tcl_RegExpCompile(interp, - "^([ \t]*module[ \t]+)(load|add)[ \t]+([^#\n]*)([#.\n]*)"); char **modlist, *home, *buffer, ch, - *startp, *endp; + *startp, *endp, + *Modcmd = + "^([ \t]*module[ \t]+)(load|add)[ \t]+([^#\n]*)([#.\n]*)"; + static Tcl_Obj *modcmdObj; + static Tcl_RegExp modcmdPtr; FILE *fileptr, *newfileptr; int i, j, found_module_command = 0, @@ -151,6 +154,10 @@ int ModuleCmd_Init( Tcl_Interp *interp, if (argc < 1 && !(g_flags & (M_DISPLAY | M_CLEAR))) goto success0; + if (!modcmdObj) + modcmdObj = Tcl_NewStringObj(Modcmd,strlen(Modcmd)); + if (!modcmdPtr) + modcmdPtr = Tcl_GetRegExpFromObj(interp,modcmdObj,TCL_REG_ADVANCED); /** ** Parameter check for the initswitch command **/ diff --git a/NEWS b/NEWS index 071989831..19341dab2 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,8 @@ Modules 3.2.10 * Fix the module swap with the --delim option (Tyson Whitehead) * Increased the "update" buffer (Leon Kos) * Use the locale for sorting modulefiles by the avail command + * Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste, + Tyson Whitehead) Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/cmdPath.c b/cmdPath.c index 7ef002d33..1aa261a48 100644 --- a/cmdPath.c +++ b/cmdPath.c @@ -136,6 +136,7 @@ int cmdSetPath( ClientData client_data, qpathlen, /** qualifiedpath length **/ arg1 = 1, /** arg start **/ x; /** loop index **/ + Tcl_Obj *np_obj; /** new path Tcl Obj **/ #if WITH_DEBUGGING_CALLBACK ErrorLogger( NO_ERR_START, LOC, _proc_cmdSetPath, NULL); @@ -261,7 +262,8 @@ int cmdSetPath( ClientData client_data, if( OK != ErrorLogger( ERR_STRING, LOC, NULL)) goto unwind2; - chkexpPtr = Tcl_RegExpCompile(interp, newpath); + np_obj = Tcl_NewStringObj(newpath,strlen(newpath)); + chkexpPtr = Tcl_GetRegExpFromObj(interp, np_obj, TCL_REG_ADVANCED); _TCLCHK(interp) null_free((void *) &newpath); @@ -314,7 +316,10 @@ int cmdSetPath( ClientData client_data, } else { - Tcl_RegExp markexpPtr = Tcl_RegExpCompile(interp, sw_marker); + Tcl_Obj *sw_obj = + Tcl_NewStringObj(sw_marker,strlen(sw_marker)); + Tcl_RegExp markexpPtr = Tcl_GetRegExpFromObj(interp, + sw_obj,TCL_REG_ADVANCED); _TCLCHK(interp) strcpy( newpath, oldpath); diff --git a/cmdXResource.c b/cmdXResource.c index 8574b47ac..e6fc28fce 100644 --- a/cmdXResource.c +++ b/cmdXResource.c @@ -427,9 +427,11 @@ static ErrType getEntries( Tcl_Interp *interp, register char *buf, int remove) { - Tcl_RegExp res_exp = (Tcl_RegExp) NULL; register Tcl_HashEntry *entry; - char *end; + char *end, + Res="^[ \t]*([^ \t]*)[ \t]*:[ \t]*(.*)[ \t]*$"; + static Tcl_Obj *res_obj = (Tcl_Obj *) NULL; + static Tcl_RegExp res_exp = (Tcl_RegExp) NULL; int new_res; #if WITH_DEBUGGING_UTIL_1 @@ -446,9 +448,10 @@ static ErrType getEntries( Tcl_Interp *interp, ** is a constant regexp! **/ - if( !res_exp) - res_exp = Tcl_RegExpCompile(interp, - "^[ \t]*([^ \t]*)[ \t]*:[ \t]*(.*)[ \t]*$"); + if(!res_obj) + res_obj = Tcl_NewStringObj(Res,strlen(Res)); + if(!res_exp) + res_exp = Tcl_GetRegExpFromObj(interp, res_obj,TCL_REG_ADVANCED); /** ** Seek for the lines (buffers) end. Put a terminator there. Take care of diff --git a/utility.c b/utility.c index 29b5b8dc5..71346743b 100644 --- a/utility.c +++ b/utility.c @@ -3054,23 +3054,38 @@ EM_RetVal ReturnValue(Tcl_Interp *interp, int retval) { *endp = (char *) NULL; const char *tstr; int result; - static Tcl_RegExp exit__expPtr, - break_expPtr, - continue_expPtr; + static char *Exit_ = "^EXIT ([0-9]*)", + *Break = ".*\"break\".*", + *Cont = ".*\"continue\".*"; + static Tcl_Obj *exit_Ptr = (Tcl_Obj *) NULL, + *break_Ptr = (Tcl_Obj *) NULL, + *cont_Ptr = (Tcl_Obj *) NULL; + static Tcl_RegExp exit__expPtr = (Tcl_RegExp) NULL, + break_expPtr = (Tcl_RegExp) NULL, + cont_expPtr = (Tcl_RegExp) NULL; tstr = (const char *) TCL_RESULT(interp); /* compile regular expression the first time through */ + if (!exit_Ptr) + exit_Ptr = Tcl_NewStringObj(Exit_,strlen(Exit_)); if (!exit__expPtr) - exit__expPtr = Tcl_RegExpCompile(interp, "^EXIT ([0-9]*)"); + exit__expPtr = Tcl_GetRegExpFromObj(interp, + exit_Ptr,TCL_REG_ADVANCED); /* result = "invoked \"break\" outside of a loop" */ + if (!break_Ptr) + break_Ptr = Tcl_NewStringObj(Break,strlen(Break)); if (!break_expPtr) - break_expPtr = Tcl_RegExpCompile(interp, ".*\"break\".*"); + break_expPtr = Tcl_GetRegExpFromObj(interp, + break_Ptr,TCL_REG_ADVANCED); /* result = "invoked \"continue\" outside of a loop" */ - if (!continue_expPtr) - continue_expPtr = Tcl_RegExpCompile(interp, ".*\"continue\".*"); + if (!cont_Ptr) + cont_Ptr = Tcl_NewStringObj(Cont,strlen(Cont)); + if (!cont_expPtr) + cont_expPtr = Tcl_GetRegExpFromObj(interp, + cont_Ptr,TCL_REG_ADVANCED); /* intercept any "EXIT N" first */ if(tstr && *tstr && 0 < Tcl_RegExpExec(interp, exit__expPtr, @@ -3090,7 +3105,7 @@ EM_RetVal ReturnValue(Tcl_Interp *interp, int retval) { em_result = EM_BREAK; /* check for a continue not within loop */ - } else if(tstr && *tstr && 0 < Tcl_RegExpExec(interp, continue_expPtr, + } else if(tstr && *tstr && 0 < Tcl_RegExpExec(interp, cont_expPtr, (CONST84 char *) tstr, (CONST84 char *) tstr)){ em_result = EM_CONTINUE; From 4d8de3899f43e68aaf9e806f537c28b7866020b9 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Mon, 19 Nov 2012 09:44:44 -0800 Subject: [PATCH 08/54] * Updated the FSF address in LICENSE.GPL (Jan Synacek) --- LICENSE.GPL | 26 +++++++++++++------------- NEWS | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/LICENSE.GPL b/LICENSE.GPL index 5a965fbc5..d8cf7d463 100644 --- a/LICENSE.GPL +++ b/LICENSE.GPL @@ -1,12 +1,12 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not @@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE + + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -225,7 +225,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN @@ -277,4 +277,4 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS diff --git a/NEWS b/NEWS index 19341dab2..b5a5aa16a 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,7 @@ Modules 3.2.10 * Use the locale for sorting modulefiles by the avail command * Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste, Tyson Whitehead) + * Updated the FSF address in LICENSE.GPL (Jan Synacek) Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) From 6f6cffaa4f1664f00e3b3fb7fad307f17f2b79ff Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 6 Dec 2012 15:26:14 -0800 Subject: [PATCH 09/54] * Forked the Tcl-only version to be maintained by Kent Mein. * Added the "module-info type" query to return 'C' to indicate that the modulecmd executable is the "C" version. (The Tcl-only version will return 'Tcl'.) --- NEWS | 4 + cmdInfo.c | 48 +++++------ doc/modulefile.4.in | 6 ++ testsuite/modulefiles/info/type | 30 +++++++ testsuite/modules.50-cmds/089-info-type.exp | 94 +++++++++++++++++++++ 5 files changed, 157 insertions(+), 25 deletions(-) create mode 100644 testsuite/modulefiles/info/type create mode 100644 testsuite/modules.50-cmds/089-info-type.exp diff --git a/NEWS b/NEWS index b5a5aa16a..31504c484 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,10 @@ Modules 3.2.10 * Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste, Tyson Whitehead) * Updated the FSF address in LICENSE.GPL (Jan Synacek) + * Forked the Tcl-only version to be maintained by Kent Mein. + * Added the "module-info type" query to return 'C' to indicate that + the modulecmd executable is the "C" version. + (The Tcl-only version will return 'Tcl'.) Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/cmdInfo.c b/cmdInfo.c index 451d72155..37398d8eb 100644 --- a/cmdInfo.c +++ b/cmdInfo.c @@ -121,22 +121,27 @@ int cmdModuleInfo( ClientData client_data, return( TCL_ERROR); /** -------- EXIT (FAILURE) -------> **/ } + if( !strcmp(argv[1], "type")) { /** - ** 'module-info flags' ? + ** 'module-info type' + ** returns 'C' to refer to the C-version of modules + ** (the Tcl-only version returns 'Tcl') **/ + Tcl_SetResult( interp, "C", TCL_STATIC); - if( !strcmp( argv[1], "flags")) { + } else if( !strcmp( argv[1], "flags")) { + /** + ** 'module-info flags' ? + **/ char tmpbuf[6]; sprintf( tmpbuf, "%d", g_flags); Tcl_SetResult( interp, tmpbuf, TCL_VOLATILE); + } else if( !strcmp( argv[1], "mode")) { /** ** 'module-info mode' ** without suggestion this will return the name of the state we're in. **/ - - } else if( !strcmp( argv[1], "mode")) { - if( argc < 3) { if( g_flags & M_SWSTATE1) Tcl_SetResult( interp, "switch1", TCL_STATIC); @@ -205,13 +210,11 @@ int cmdModuleInfo( ClientData client_data, } } + } else if( !strcmp( argv[1], "user")) { /** ** 'module-info user' ** without suggestion this will return the current user level **/ - - } else if( !strcmp( argv[1], "user")) { - if( argc < 3) { if( UL_NOVICE == sw_userlvl) Tcl_SetResult( interp, "novice", TCL_STATIC); @@ -250,20 +253,18 @@ int cmdModuleInfo( ClientData client_data, } } + } else if( !strcmp(argv[1], "name")) { /** ** 'module-info name' ** returns the name of the current module **/ - - } else if( !strcmp(argv[1], "name")) { Tcl_SetResult( interp, g_current_module, TCL_VOLATILE); + } else if( !strcmp(argv[1], "shell")) { /** ** 'module-info shell' ** returns the name of the current user shell **/ - - } else if( !strcmp(argv[1], "shell")) { if( argc < 3) { Tcl_SetResult( interp, shell_name, TCL_VOLATILE); } else { @@ -274,6 +275,10 @@ int cmdModuleInfo( ClientData client_data, } } else if( !strcmp(argv[1], "shelltype")) { + /** + ** 'module-info shelltype' + ** returns the name of the current user shelltype family + **/ if( argc < 3) { Tcl_SetResult( interp, shell_derelict, TCL_VOLATILE); } else { @@ -283,12 +288,11 @@ int cmdModuleInfo( ClientData client_data, Tcl_SetResult( interp, "0", TCL_STATIC); } + } else if( !strcmp(argv[1], "trace")) { /** ** 'module-info trace' ** Check whether tracing is turned on **/ - - } else if( !strcmp(argv[1], "trace")) { char *cmd, *module; if( argc > 2) @@ -319,13 +323,11 @@ int cmdModuleInfo( ClientData client_data, else Tcl_SetResult( interp, pattern, TCL_VOLATILE); + } else if( !strcmp(argv[1], "alias")) { /** ** 'module-info alias' ** Print the value of the passed alias **/ - - } else if( !strcmp(argv[1], "alias")) { - if( argc < 3) { if( OK != ErrorLogger( ERR_USAGE, LOC, argv[0], "alias ", "name", NULL)) @@ -342,12 +344,11 @@ int cmdModuleInfo( ClientData client_data, Tcl_SetResult( interp, "*undef*", TCL_STATIC); } + } else if( !strcmp(argv[1], "symbols")) { /** ** 'module-info symbols' ** List all symbolic names of the passed or current module file **/ - - } else if( !strcmp(argv[1], "symbols")) { char *name; name = (argc < 3) ? g_current_module : (char *) argv[2]; @@ -357,13 +358,12 @@ int cmdModuleInfo( ClientData client_data, else Tcl_SetResult( interp, (char *) s, TCL_VOLATILE); + } else if( !strcmp(argv[1], "version")) { /** ** 'module-info version' ** Returns the full qualified module name and version of the passed ** symbolic version specifier **/ - - } else if( !strcmp(argv[1], "version")) { if( VersionLookup( (char *) argv[2], &s, &t)) { if( t) { /* sprintf( buf, "%s/%s", s, t); */ @@ -379,12 +379,11 @@ int cmdModuleInfo( ClientData client_data, Tcl_SetResult( interp, "*undef*", TCL_STATIC); } + } else if( !strcmp(argv[1], "specified")) { /** ** 'module-info specified' ** gives the module name as specified on the command line **/ - - } else if( !strcmp(argv[1], "specified")) { if( g_specified_module) { /* TCL_STATIC because it comes from the command line */ Tcl_SetResult( interp, g_specified_module, TCL_STATIC); @@ -392,11 +391,10 @@ int cmdModuleInfo( ClientData client_data, Tcl_SetResult( interp, "*undef*", TCL_STATIC); } + } else { /** ** unknown command .... **/ - - } else { if( OK != ErrorLogger( ERR_INFO_DESCR, LOC, argv[1], NULL)) return( TCL_ERROR); /** -------- EXIT (FAILURE) -------> **/ } diff --git a/doc/modulefile.4.in b/doc/modulefile.4.in index 67449b4f9..9ec2e6572 100644 --- a/doc/modulefile.4.in +++ b/doc/modulefile.4.in @@ -354,6 +354,12 @@ Some of the information is specific to the internals of \fBmodulecmd\fP. \fIoption\fP is the type of information to be provided, and \fIinfo-args\fP are any arguments needed. .TP +.B module-info type +.RS +Returns either "C" or "Tcl" to indicate which module command is being +executed, either the "C" version or the Tcl-only version, to allow the +modulefile writer to handle any differences between the two. +.RE .B module-info flags .RS Returns the integer value of \fBmodulecmd's\fP flags state. diff --git a/testsuite/modulefiles/info/type b/testsuite/modulefiles/info/type new file mode 100644 index 000000000..f5e2ca904 --- /dev/null +++ b/testsuite/modulefiles/info/type @@ -0,0 +1,30 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: info/%M% +# Revision: %I% +# First Edition: 2012/12/06 +# Last Mod.: %U%, %G% +# +# Authors: R.K. Owen, rk@owen.sj.ca.us +# +# Description: Testuite modulefile +# Command: +# Sub-Command: setenv, type +# +# Invocation: load @M@/@V@ +# Result: %R{ +# setenv _LMFILES_ ${_LMFILES_}:@M@/@V@ +# setenv LOADEDMODULES ${LOADEDMODULES}:@P@/@M@/@V@ +# setenv testsuite C or Tcl +# }R% +# Comment: %C{ +# The 'type' command returns either 'C' or 'Tcl' +# }C% +# +############################################################################## + +setenv testsuite "[module-info type]" diff --git a/testsuite/modules.50-cmds/089-info-type.exp b/testsuite/modules.50-cmds/089-info-type.exp new file mode 100644 index 000000000..9d3db0154 --- /dev/null +++ b/testsuite/modules.50-cmds/089-info-type.exp @@ -0,0 +1,94 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2012/12/06 +# Last Mod.: %U%, %G% +# +# Authors: R.K. Owen, rk@owen.sj.ca.us +# +# Description: Testuite testsequence +# Command: load +# Modulefiles: info/type +# Sub-Command: +# +# Comment: %C{ +# Tests the 'info type' module subcommand for all +# allowed shell types. +# }C% +# +############################################################################## + +# +# Variables. This test forces a module load command. It will result in the +# environment variables "_LMFILES_", "LOADEDMODULES" and "testsuite" to +# be set up +# + +set modulex "info/type" +set modulefilex "$env(MODULEPATH)/$modulex" + +# +# Test which version of the modulecmd executable +# + +# +# set up the environment +# + +# +# For the different shells ... +# + +set lmf_sh "_LMFILES_=$modulefilex ;export _LMFILES_;" +set lm_sh "LOADEDMODULES=$modulex ;export LOADEDMODULES;" +set ts_sh "testsuite=C ;export testsuite;" + +set lmf_csh "setenv _LMFILES_ $modulefilex ;" +set lm_csh "setenv LOADEDMODULES $modulex ;" +set ts_csh "setenv testsuite C ;" + +set lmf_perl "\$ENV{'_LMFILES_'} = '$modulefilex';" +set lm_perl "\$ENV{'LOADEDMODULES'} = '$modulex';" +set ts_perl "\$ENV{'testsuite'} = 'C';" + +set lmf_cmake "set(ENV{_LMFILES_} \"$modulefilex\")" +set lm_cmake "set(ENV{LOADEDMODULES} \"$modulex\")" +set ts_cmake "set(ENV{testsuite} \"C\")" + +# +# The tests +# + +test_cmd "sh" "load $modulex" "$lm_sh$lmf_sh$ts_sh" +test_cmd "ksh" "load $modulex" "$lm_sh$lmf_sh$ts_sh" +test_cmd "zsh" "load $modulex" "$lm_sh$lmf_sh$ts_sh" +test_cmd "csh" "load $modulex" "$lm_csh$lmf_csh$ts_csh" +test_cmd "tcsh" "load $modulex" "$lm_csh$lmf_csh$ts_csh" +test_cmd "perl" "load $modulex" "$lm_perl$lmf_perl$ts_perl" +test_cmd "cmake" "load $modulex" "$lm_cmake\n$lmf_cmake\n$ts_cmake" + +# +# Cleanup +# + +unset ts_sh +unset lm_sh +unset lmf_sh + +unset ts_csh +unset lm_csh +unset lmf_csh + +unset ts_perl +unset lm_perl +unset lmf_perl + +unset ts_cmake +unset lm_cmake +unset lmf_cmake + +unset modulefilex +unset modulex From f4618419b8b0ca81ec88789fdeb9fc0bfa3b9bc2 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 13 Dec 2012 13:35:27 -0800 Subject: [PATCH 10/54] * Search /usr/lib64 for tclConfig.sh also (Jan Synacek) --- .gitignore | 1 + NEWS | 1 + config/tcl.m4 | 2 ++ 3 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index ea3cee901..5d587ab62 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ stamp-h stamp-h1 stamp-h.in modules*.tar.* +TAGS diff --git a/NEWS b/NEWS index 31504c484..bf15d2f19 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,7 @@ Modules 3.2.10 * Added the "module-info type" query to return 'C' to indicate that the modulecmd executable is the "C" version. (The Tcl-only version will return 'Tcl'.) + * Search /usr/lib64 for tclConfig.sh also (Jan Synacek) Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/config/tcl.m4 b/config/tcl.m4 index a327026e2..3373cb463 100644 --- a/config/tcl.m4 +++ b/config/tcl.m4 @@ -126,6 +126,8 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/contrib/lib/tcl[[8-9]].[[0-9]]* 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ + `ls -d /usr/lib32 2>/dev/null` \ + `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl[[8-9]].[[0-9]]* 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then #{ From 8ed514fa800966a054dfd124a57d56f346490da9 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Mon, 17 Dec 2012 14:24:15 -0800 Subject: [PATCH 11/54] * Tested loading 20 other modulefiles from a single one --- NEWS | 1 + testsuite/modulefiles/load/.version | 23 ++++ testsuite/modulefiles/load/00 | 25 ++++ testsuite/modulefiles/load/10 | 25 ++++ testsuite/modulefiles/load/11 | 25 ++++ testsuite/modulefiles/load/12 | 25 ++++ testsuite/modulefiles/load/13 | 25 ++++ testsuite/modulefiles/load/14 | 25 ++++ testsuite/modulefiles/load/15 | 25 ++++ testsuite/modulefiles/load/16 | 25 ++++ testsuite/modulefiles/load/17 | 25 ++++ testsuite/modulefiles/load/18 | 25 ++++ testsuite/modulefiles/load/19 | 25 ++++ testsuite/modulefiles/load/20 | 25 ++++ testsuite/modulefiles/load/21 | 25 ++++ testsuite/modulefiles/load/22 | 25 ++++ testsuite/modulefiles/load/23 | 25 ++++ testsuite/modulefiles/load/24 | 25 ++++ testsuite/modulefiles/load/25 | 25 ++++ testsuite/modulefiles/load/26 | 25 ++++ testsuite/modulefiles/load/27 | 25 ++++ testsuite/modulefiles/load/28 | 25 ++++ testsuite/modulefiles/load/29 | 25 ++++ testsuite/modulefiles/load/30 | 25 ++++ testsuite/modulefiles/load/all | 44 ++++++ testsuite/modules.50-cmds/197-load-lots.exp | 142 ++++++++++++++++++++ 26 files changed, 760 insertions(+) create mode 100644 testsuite/modulefiles/load/.version create mode 100644 testsuite/modulefiles/load/00 create mode 100644 testsuite/modulefiles/load/10 create mode 100644 testsuite/modulefiles/load/11 create mode 100644 testsuite/modulefiles/load/12 create mode 100644 testsuite/modulefiles/load/13 create mode 100644 testsuite/modulefiles/load/14 create mode 100644 testsuite/modulefiles/load/15 create mode 100644 testsuite/modulefiles/load/16 create mode 100644 testsuite/modulefiles/load/17 create mode 100644 testsuite/modulefiles/load/18 create mode 100644 testsuite/modulefiles/load/19 create mode 100644 testsuite/modulefiles/load/20 create mode 100644 testsuite/modulefiles/load/21 create mode 100644 testsuite/modulefiles/load/22 create mode 100644 testsuite/modulefiles/load/23 create mode 100644 testsuite/modulefiles/load/24 create mode 100644 testsuite/modulefiles/load/25 create mode 100644 testsuite/modulefiles/load/26 create mode 100644 testsuite/modulefiles/load/27 create mode 100644 testsuite/modulefiles/load/28 create mode 100644 testsuite/modulefiles/load/29 create mode 100644 testsuite/modulefiles/load/30 create mode 100644 testsuite/modulefiles/load/all create mode 100644 testsuite/modules.50-cmds/197-load-lots.exp diff --git a/NEWS b/NEWS index bf15d2f19..735328317 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ Modules 3.2.10 the modulecmd executable is the "C" version. (The Tcl-only version will return 'Tcl'.) * Search /usr/lib64 for tclConfig.sh also (Jan Synacek) + * Tested loading 20 other modulefiles from a single one Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/testsuite/modulefiles/load/.version b/testsuite/modulefiles/load/.version new file mode 100644 index 000000000..ccbba7764 --- /dev/null +++ b/testsuite/modulefiles/load/.version @@ -0,0 +1,23 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# Default to the One modulefile to load the rest +# }C% +# +############################################################################## + +set ModulesVersion "all" diff --git a/testsuite/modulefiles/load/00 b/testsuite/modulefiles/load/00 new file mode 100644 index 000000000..f2132f665 --- /dev/null +++ b/testsuite/modulefiles/load/00 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t00 "t00" +unsetenv mload "t00" + diff --git a/testsuite/modulefiles/load/10 b/testsuite/modulefiles/load/10 new file mode 100644 index 000000000..0b8dcf8f8 --- /dev/null +++ b/testsuite/modulefiles/load/10 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t10 "t10" +unsetenv mload "t10" + diff --git a/testsuite/modulefiles/load/11 b/testsuite/modulefiles/load/11 new file mode 100644 index 000000000..f4852e627 --- /dev/null +++ b/testsuite/modulefiles/load/11 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t11 "t11" +unsetenv mload "t11" + diff --git a/testsuite/modulefiles/load/12 b/testsuite/modulefiles/load/12 new file mode 100644 index 000000000..4a17f5c91 --- /dev/null +++ b/testsuite/modulefiles/load/12 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t12 "t12" +unsetenv mload "t12" + diff --git a/testsuite/modulefiles/load/13 b/testsuite/modulefiles/load/13 new file mode 100644 index 000000000..c3d5b90ed --- /dev/null +++ b/testsuite/modulefiles/load/13 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t13 "t13" +unsetenv mload "t13" + diff --git a/testsuite/modulefiles/load/14 b/testsuite/modulefiles/load/14 new file mode 100644 index 000000000..19d8b0c0b --- /dev/null +++ b/testsuite/modulefiles/load/14 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t14 "t14" +unsetenv mload "t14" + diff --git a/testsuite/modulefiles/load/15 b/testsuite/modulefiles/load/15 new file mode 100644 index 000000000..6e4011d0f --- /dev/null +++ b/testsuite/modulefiles/load/15 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t15 "t15" +unsetenv mload "t15" + diff --git a/testsuite/modulefiles/load/16 b/testsuite/modulefiles/load/16 new file mode 100644 index 000000000..f88de3505 --- /dev/null +++ b/testsuite/modulefiles/load/16 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t16 "t16" +unsetenv mload "t16" + diff --git a/testsuite/modulefiles/load/17 b/testsuite/modulefiles/load/17 new file mode 100644 index 000000000..c672a9c4d --- /dev/null +++ b/testsuite/modulefiles/load/17 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t17 "t17" +unsetenv mload "t17" + diff --git a/testsuite/modulefiles/load/18 b/testsuite/modulefiles/load/18 new file mode 100644 index 000000000..42dca03db --- /dev/null +++ b/testsuite/modulefiles/load/18 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t18 "t18" +unsetenv mload "t18" + diff --git a/testsuite/modulefiles/load/19 b/testsuite/modulefiles/load/19 new file mode 100644 index 000000000..e67336546 --- /dev/null +++ b/testsuite/modulefiles/load/19 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t19 "t19" +unsetenv mload "t19" + diff --git a/testsuite/modulefiles/load/20 b/testsuite/modulefiles/load/20 new file mode 100644 index 000000000..39682af51 --- /dev/null +++ b/testsuite/modulefiles/load/20 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t20 "t20" +unsetenv mload "t20" + diff --git a/testsuite/modulefiles/load/21 b/testsuite/modulefiles/load/21 new file mode 100644 index 000000000..d869ee7d6 --- /dev/null +++ b/testsuite/modulefiles/load/21 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t21 "t21" +unsetenv mload "t21" + diff --git a/testsuite/modulefiles/load/22 b/testsuite/modulefiles/load/22 new file mode 100644 index 000000000..cfd868fd5 --- /dev/null +++ b/testsuite/modulefiles/load/22 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t22 "t22" +unsetenv mload "t22" + diff --git a/testsuite/modulefiles/load/23 b/testsuite/modulefiles/load/23 new file mode 100644 index 000000000..0592e521e --- /dev/null +++ b/testsuite/modulefiles/load/23 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t23 "t23" +unsetenv mload "t23" + diff --git a/testsuite/modulefiles/load/24 b/testsuite/modulefiles/load/24 new file mode 100644 index 000000000..ea069de0e --- /dev/null +++ b/testsuite/modulefiles/load/24 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t24 "t24" +unsetenv mload "t24" + diff --git a/testsuite/modulefiles/load/25 b/testsuite/modulefiles/load/25 new file mode 100644 index 000000000..6b5a1251e --- /dev/null +++ b/testsuite/modulefiles/load/25 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t25 "t25" +unsetenv mload "t25" + diff --git a/testsuite/modulefiles/load/26 b/testsuite/modulefiles/load/26 new file mode 100644 index 000000000..dceccc7d4 --- /dev/null +++ b/testsuite/modulefiles/load/26 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t26 "t26" +unsetenv mload "t26" + diff --git a/testsuite/modulefiles/load/27 b/testsuite/modulefiles/load/27 new file mode 100644 index 000000000..049f31c35 --- /dev/null +++ b/testsuite/modulefiles/load/27 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t27 "t27" +unsetenv mload "t27" + diff --git a/testsuite/modulefiles/load/28 b/testsuite/modulefiles/load/28 new file mode 100644 index 000000000..a4293f228 --- /dev/null +++ b/testsuite/modulefiles/load/28 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t28 "t28" +unsetenv mload "t28" + diff --git a/testsuite/modulefiles/load/29 b/testsuite/modulefiles/load/29 new file mode 100644 index 000000000..0d2f19131 --- /dev/null +++ b/testsuite/modulefiles/load/29 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t29 "t29" +unsetenv mload "t29" + diff --git a/testsuite/modulefiles/load/30 b/testsuite/modulefiles/load/30 new file mode 100644 index 000000000..65d0f3056 --- /dev/null +++ b/testsuite/modulefiles/load/30 @@ -0,0 +1,25 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# One of many modulefiles to be loaded from the "one" +# }C% +# +############################################################################## + +setenv t30 "t30" +unsetenv mload "t30" + diff --git a/testsuite/modulefiles/load/all b/testsuite/modulefiles/load/all new file mode 100644 index 000000000..74c549094 --- /dev/null +++ b/testsuite/modulefiles/load/all @@ -0,0 +1,44 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: load/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# +# Authors: R.K.Owen +# +# Description: Testuite modulefile - multiple loads from modulefile +# Command: load +# Sub-Command: load +# +# Comment: %C{ +# The One modulefile to load the rest +# }C% +# +############################################################################## + +module load load/10 +module load load/11 +module load load/12 +module load load/13 +module load load/14 +module load load/15 +module load load/16 +module load load/17 +module load load/18 +module load load/19 +module load load/20 +module load load/21 +module load load/22 +module load load/23 +module load load/24 +module load load/25 +module load load/26 +module load load/27 +module load load/28 +module load load/29 +module load load/30 + diff --git a/testsuite/modules.50-cmds/197-load-lots.exp b/testsuite/modules.50-cmds/197-load-lots.exp new file mode 100644 index 000000000..58f16d8ec --- /dev/null +++ b/testsuite/modules.50-cmds/197-load-lots.exp @@ -0,0 +1,142 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2012/12/17 +# Last Mod.: %U%, %G% +# +# Authors: R.K. Owen, +# +# Description: recursive load/unload test - lots of modulefiles +# Command: load +# Modulefiles: recurs/modA +# recurs/modA +# Sub-Command: +# +# Comment: %C{ +# Recursive load a lot of modulefiles +# }C% +# +############################################################################## +set tm00 "load/00" +set tp00 "$env(MODULEPATH)/$tm00" +set tmall "$tm00" +set tpall "$tp00" +set tsall "" +set tcall "" +set usall "" +set ucall "" +set env(mload) "foobar" + +for {set t 10} {$t <= 30} {incr t} { + set "t$t" "t$t" + set "m$t" "load/$t" + set "p$t" "$env(MODULEPATH)/[set m$t]" + + set tsall "${tsall}[set t$t]=[set t$t] ;export [set t$t];" + set tcall "${tcall}setenv [set t$t] [set t$t] ;" + set tmall "$tmall:[set m$t]" + set tpall "$tpall:[set p$t]" + + set usall "${usall}unset [set t$t];" + set ucall "${ucall}unsetenv [set t$t];" +} +set tsall [string trimleft $tsall ";"] +set tcall [string trimleft $tcall ";"] +set usall [string trimleft $usall ";"] +set ucall [string trimleft $ucall ";"] + +set mall "load/all" +set pall "$env(MODULEPATH)/$mall" +set xsload "unset mload;" +set xcload "unsetenv mload;" + +set tmall "$tmall:$mall" +set tpall "$tpall:$pall" + +# +# set up a limited environment +# +set env(_LMFILES_) "$tp00" +set env(LOADEDMODULES) "$tm00" + +# +# load +# For the different shells ... +# + +set lmf_sh "_LMFILES_=$tpall ;export _LMFILES_;" +set lm_sh "LOADEDMODULES=$tmall ;export LOADEDMODULES;" +set ts_sh "$tsall" + +set lmf_csh "setenv _LMFILES_ $tpall ;" +set lm_csh "setenv LOADEDMODULES $tmall ;" +set ts_csh "$tcall" + +# +# The load tests +# +test_cmd "sh" "load $mall" "$lm_sh$lmf_sh$ts_sh$xsload" +test_cmd "ksh" "load $mall" "$lm_sh$lmf_sh$ts_sh$xsload" +test_cmd "zsh" "load $mall" "$lm_sh$lmf_sh$ts_sh$xsload" +test_cmd "csh" "load $mall" "$lm_csh$lmf_csh$ts_csh$xcload" +test_cmd "tcsh" "load $mall" "$lm_csh$lmf_csh$ts_csh$xcload" + +# +# set-up a loaded environment +# +set env(_LMFILES_) "$tpall" +set env(LOADEDMODULES) "$tmall" + +set lmf_sh "_LMFILES_=$tp00 ;export _LMFILES_;" +set lm_sh "LOADEDMODULES=$tm00 ;export LOADEDMODULES;" +set ts_sh "$usall" + +set lmf_csh "setenv _LMFILES_ $tp00 ;" +set lm_csh "setenv LOADEDMODULES $tm00 ;" +set ts_csh "$ucall" + +set xsload "mload=t30 ;export mload;" +set xcload "setenv mload t30 ;" +# +# The unload tests +# +test_cmd "sh" "unload $mall" "$lm_sh$lmf_sh$xsload$ts_sh" +test_cmd "ksh" "unload $mall" "$lm_sh$lmf_sh$xsload$ts_sh" +test_cmd "zsh" "unload $mall" "$lm_sh$lmf_sh$xsload$ts_sh" +test_cmd "csh" "unload $mall" "$lm_csh$lmf_csh$xcload$ts_csh" +test_cmd "tcsh" "unload $mall" "$lm_csh$lmf_csh$xcload$ts_csh" + +# +# Cleanup +# + +unset env(_LMFILES_) +unset env(LOADEDMODULES) + +unset lm_sh +unset lmf_sh +unset ts_sh + +unset lm_csh +unset lmf_csh +unset ts_csh + +unset tm00 +unset tp00 +unset tmall +unset tpall +unset tsall +unset tcall +unset usall +unset ucall +unset env(mload) + +for {set t 30} {$t >= 10} {incr t -1} { + unset "t$t" + unset "m$t" + unset "p$t" +} +unset t From b9f462586f08f428acc26c74ee2f4842bb9eae4a Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Tue, 18 Dec 2012 10:03:39 -0800 Subject: [PATCH 12/54] Changed the packaged modulefile for getting the sources from git for the specific branch. --- .gitignore | 1 + NEWS | 2 +- configure.ac | 2 +- modulefiles/.gitignore | 2 +- modulefiles/Makefile.am | 6 +++--- modulefiles/module-cvs.in | 32 -------------------------------- modulefiles/module-git.in | 27 +++++++++++++++++++++++++++ 7 files changed, 34 insertions(+), 38 deletions(-) delete mode 100644 modulefiles/module-cvs.in create mode 100644 modulefiles/module-git.in diff --git a/.gitignore b/.gitignore index 5d587ab62..00bb8fc17 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*~ *.o aclocal.m4 autom4te.cache diff --git a/NEWS b/NEWS index 735328317..e9f2da495 100644 --- a/NEWS +++ b/NEWS @@ -11,7 +11,7 @@ Modules 3.2.10 * If a bash shell check if interactive or not for alias/functions * Fix the flags with regards to recursive load/unload * Fix perl.pm init file typo (bug 3497092) - * Moved from cvs to git + * Moved from cvs to git (and now: modulefile/module-git) * Fix the module swap with the --delim option (Tyson Whitehead) * Increased the "update" buffer (Leon Kos) * Use the locale for sorting modulefiles by the avail command diff --git a/configure.ac b/configure.ac index 97bf96497..4312aacf4 100644 --- a/configure.ac +++ b/configure.ac @@ -990,7 +990,7 @@ AC_CONFIG_FILES([Makefile modules.lsm .spec doc/Makefile ext/common/.cshrc ext/common/.login ext/common/.kshenv ext/common/.profile modulefiles/Makefile modulefiles/modules - modulefiles/module-cvs modulefiles/module-info modulefiles/null + modulefiles/module-git modulefiles/module-info modulefiles/null modulefiles/use.own modulefiles/dot modulefiles/version ])dnl dnl We want these to be recreated for each install diff --git a/modulefiles/.gitignore b/modulefiles/.gitignore index b03ef4848..dc76c1f27 100644 --- a/modulefiles/.gitignore +++ b/modulefiles/.gitignore @@ -1,7 +1,7 @@ Makefile Makefile.in dot -module-cvs +module-git module-info modules null diff --git a/modulefiles/Makefile.am b/modulefiles/Makefile.am index af42d2fb4..b7677f14b 100644 --- a/modulefiles/Makefile.am +++ b/modulefiles/Makefile.am @@ -10,7 +10,7 @@ AUTOMAKE_OPTIONS=foreign no-installinfo BASEMODULES= \ - dot module-cvs module-info modules null use.own + dot module-git module-info modules null use.own EXTRA_SCRIPTS= ${BASEMODULES} version @@ -72,8 +72,8 @@ uninstall-basemodules : ##dot : dot.in ../config.status ## (cd ..; config.status modulefiles/dot) ## -##module-cvs : module-cvs.in ../config.status -## (cd ..; config.status modulefiles/module-cvs) +##module-git : module-git.in ../config.status +## (cd ..; config.status modulefiles/module-git) ## ##module-info : module-info.in ../config.status ## (cd ..; config.status modulefiles/module-info) diff --git a/modulefiles/module-cvs.in b/modulefiles/module-cvs.in deleted file mode 100644 index 7660f9e91..000000000 --- a/modulefiles/module-cvs.in +++ /dev/null @@ -1,32 +0,0 @@ -#%Module1.0##################################################################### -## -## module-cvs modulefile -## -## @configure_input@ -## -proc ModulesHelp { } { - global version - - puts stderr "\tThis module will set up aliases and environment variables" - puts stderr "\tfor easy check-out of the most recent version of the" - puts stderr "\tenvironment modules package." - puts stderr "\n\tFor CVS access - do the 'login' first then the 'get'" - puts stderr "\twhen prompted for a password - just hit return" - puts stderr "\n\tmodules-login - login into the modules CVS" - puts stderr "\t repository anonymously" - puts stderr "\tmodules-get - retrieve modules sources" - puts stderr "\n\tVersion $version\n" -} - -# for Tcl script use only -set version @VERSION@ - -module-whatis "get most recent module sources from CVS" - -set-alias modules-login "cvs -d:pserver:anonymous@modules.cvs.sourceforge.net:/cvsroot/modules login" - -set-alias modules-get "cvs -z3 -d:pserver:anonymous@modules.cvs.sourceforge.net:/cvsroot/modules checkout -P modules" - -if [ module-info mode load ] { - ModulesHelp -} diff --git a/modulefiles/module-git.in b/modulefiles/module-git.in new file mode 100644 index 000000000..7a773917b --- /dev/null +++ b/modulefiles/module-git.in @@ -0,0 +1,27 @@ +#%Module1.0##################################################################### +## +## module-cvs modulefile +## +## @configure_input@ +## +proc ModulesHelp { } { + global version + + puts stderr "\tThis module will set up an alias" + puts stderr "\tfor easy anonymous check-out of this version of the" + puts stderr "\tenvironment modules package." + puts stderr "\get-modules - retrieve modules sources for this version" + puts stderr "\n\tVersion $version\n" +} + +# for Tcl script use only +set version @VERSION@ +set _version_ [ string map {. -} $version ] + +module-whatis "get this version of the module sources from SourceForge.net" + +set-alias get-modules "git clone git://git.code.sf.net/p/modules/git modules-$_version_ && cd modules-$_version_ && git checkout modules-$_version_" + +if [ module-info mode load ] { + ModulesHelp +} From f7bfd39f62ac0e6963a56baf109dfb5b022cd977 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Tue, 18 Dec 2012 10:06:39 -0800 Subject: [PATCH 13/54] Removed the Tcl-only version from the branch. Now that it's been forked to its own project. --- tcl/Makefile | 16 - tcl/README-EMACS.txt | 68 - tcl/README.txt | 64 - tcl/init/.gitignore | 9 - tcl/init/Makefile | 18 - tcl/init/README.txt | 33 - tcl/init/bash.in | 14 - tcl/init/csh.in | 37 - tcl/init/ksh.in | 15 - tcl/init/lisp.in | 91 -- tcl/init/modulerc | 2 - tcl/init/perl.in | 24 - tcl/init/python.in | 24 - tcl/init/sh.in | 15 - tcl/init/tcsh.in | 38 - tcl/init/zsh.debug | 8 - tcl/init/zsh.in | 15 - tcl/modulecmd.tcl | 3043 ------------------------------------------ 18 files changed, 3534 deletions(-) delete mode 100644 tcl/Makefile delete mode 100755 tcl/README-EMACS.txt delete mode 100644 tcl/README.txt delete mode 100644 tcl/init/.gitignore delete mode 100644 tcl/init/Makefile delete mode 100644 tcl/init/README.txt delete mode 100644 tcl/init/bash.in delete mode 100644 tcl/init/csh.in delete mode 100644 tcl/init/ksh.in delete mode 100755 tcl/init/lisp.in delete mode 100644 tcl/init/modulerc delete mode 100644 tcl/init/perl.in delete mode 100644 tcl/init/python.in delete mode 100644 tcl/init/sh.in delete mode 100644 tcl/init/tcsh.in delete mode 100644 tcl/init/zsh.debug delete mode 100644 tcl/init/zsh.in delete mode 100755 tcl/modulecmd.tcl diff --git a/tcl/Makefile b/tcl/Makefile deleted file mode 100644 index 153b19f63..000000000 --- a/tcl/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: initdir - -distclean: clean - -initdir: - make -C init all - -clean: - rm -f *.log *.sum - make -C init clean - -test: - MODULEVERSION=3.1.1; export MODULEVERSION; \ - OBJDIR=`pwd`; export OBJDIR; \ - TESTSUITEDIR=`cd ../testsuite;pwd`; export TESTSUITEDIR; \ - runtest --srcdir $$TESTSUITEDIR --objdir $$OBJDIR --tool modules diff --git a/tcl/README-EMACS.txt b/tcl/README-EMACS.txt deleted file mode 100755 index 285691283..000000000 --- a/tcl/README-EMACS.txt +++ /dev/null @@ -1,68 +0,0 @@ -Submitted by tbennett@nvidia.com, Nov 18, 2004 - - -How to init emacs lisp modules from .emacs: - - ;; load and init emacs lisp modules if not already loaded... - (if (and (getenv "MODULESHOME") - (file-directory-p (getenv "MODULESHOME")) - (not (fboundp 'module))) - (progn - (if (load-file (concat (getenv "MODULESHOME") "/init/lisp")) - (define-key global-map "\C-cm" 'Modules-module)))) - -After this, from within your emacs process you can run any module -command, eg: - - C-c m load modules - C-c m list - etc. - - -What follows describes an optional usage. - -Since I use env variables frequently within emacs (mostly to -specify filename paths) and also use shell-mode, I want to have -all modules commands run within both emacs and in my *shell* -buffer. The following works for me, but may need tweaking in -other environments... - - ;; send a cmd to my shell - ;; not very flexible, knows about my setup, shell, etc. - ;; cribbed from switch-to-shell.el - - (defvar my-shell-command-shell-buffer-name "*shell*" - "The name of the shell buffer.") - - (defun my-shell-command (command) - (interactive "sCommand: ") - ;; Find shell buffer - (and (get-buffer my-shell-command-shell-buffer-name) - (pop-to-buffer my-shell-command-shell-buffer-name) - (get-buffer-process (current-buffer)) - (progn - (goto-char (point-max)) - (comint-kill-input) ;; delete any junk on line - (insert-string command) - (comint-send-input)))) - - ;; send the same module cmd to both emacs and my shell buffer - (defun m-doit (cmd) - (and (Modules-module cmd) - (my-shell-command (concat "module " cmd)))) - - ;; a sample module command using above - (defun m-projects-A () - (interactive) - (m-doit "unload projects") - (m-doit "load projects/A")) - (defun m-projects-B () - (interactive) - (m-doit "unload projects") - (m-doit "load projects/B")) - - Then use - - M-x m-projects-A - - to switch to project-A setup. diff --git a/tcl/README.txt b/tcl/README.txt deleted file mode 100644 index b56d9c45b..000000000 --- a/tcl/README.txt +++ /dev/null @@ -1,64 +0,0 @@ -This is an experiment tcl implementation of the module command. - -The goals have been - -1. written in pure TCL, so that there are no porting issues -2. faster native implementation as well -3. 100% compatibility with existing modules (as done in practice) -4. some new command line features -5. path variable counters, to allow shared usage of particular path - elements. I.e. modules can append /usr/bin, which is not unloaded - until all the modules that loaded it unload too. - - -The new command line supports - - module switch / - -which is the equivalent of - - module unload - module load / - - -0. make sure you tclsh install in a sane place, ie /usr/bin or - /usr/local/bin. -(if not, you can hack modulecmd.tcl to change the path.) - -1. untar in a global place that all users can see - (hint: something that is available on NFS and SAMBA is a good idea - if you - have a mix of Unix and WinNT/2000/XP users) - -2. cd to init/ - -3. run 'make' (this just hardcodes the installation path into the - init/ files - with a perl one liner. if you don't have perl, then you can hand - edit the - files. i suppose this should have been done using tclsh, but i'm a - perl - person.) - -4. edit the 'modulerc' file to point to the place where the - modulefiles are - stored. - -5. instruct users to source the appropriate file inside the init/ - directory, eg - - - source /foo/bar/modules/init/tcsh - -or - - . /foo/bar/modules/init/zsh - - -Be sure to run 'make' in the init directory, to create the -initialization scripts. - - --Mark Lakata -Nov 29, 2002 -May 30, 2003 \ No newline at end of file diff --git a/tcl/init/.gitignore b/tcl/init/.gitignore deleted file mode 100644 index b536d4b26..000000000 --- a/tcl/init/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -sh -ksh -bash -zsh -csh -tcsh -perl -python -lisp diff --git a/tcl/init/Makefile b/tcl/init/Makefile deleted file mode 100644 index b83cb4c95..000000000 --- a/tcl/init/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -SH_LIKE = sh ksh bash zsh -CSH_LIKE = csh tcsh -OTHER = perl python lisp - -ALL_SHELLS = $(SH_LIKE) $(CSH_LIKE) $(OTHER) - -all: .cvsignore $(ALL_SHELLS) - - - -%: %.in Makefile - perl -MCwd -MFile::Basename -pe 'BEGIN {$$d=dirname(cwd)} s|\$$MODULESHOME|$$d|g' $< > $@ - -.cvsignore: - for x in $(ALL_SHELLS); do echo $$x >> $@ ; done - -clean: - rm -f $(ALL_SHELLS) diff --git a/tcl/init/README.txt b/tcl/init/README.txt deleted file mode 100644 index 0166f6ca0..000000000 --- a/tcl/init/README.txt +++ /dev/null @@ -1,33 +0,0 @@ ---------------------------------------- - Instructions ---------------------------------------- - - -1. Instruct users to add this to their shell init scripts. - - If using sh/bash/ksh/zsh, add this to .profile - - eval `tclsh /path/to/modulecmd.tcl sh autoinit` - - If using csh/tcsh, add this to .login - - eval `tclsh /path/to/modulecmd.tcl csh autoinit` - - If using perl, put this in your script - - eval `tclsh /path/to/modulecmd.tcl perl autoinit`; - - -2. edit 'modulerc' as needed to point to the default modulefile - directories. This file is sourced for all users. This file can - be either in the init/ subdirectory, or the same directory as the - modulecmd.tcl, or both (not recommended). - - -NB. For backwards compatibility, the old init scripts are still here, -but they should be removed as soon as the new autoinit feature is -sufficiently tested. - - - - diff --git a/tcl/init/bash.in b/tcl/init/bash.in deleted file mode 100644 index 0ac6ab54c..000000000 --- a/tcl/init/bash.in +++ /dev/null @@ -1,14 +0,0 @@ -MODULESHOME=$MODULESHOME; export MODULESHOME - -if [ -z $TCLSH ]; then - if [ -f /usr/bin/tclsh ]; then - set TCLSH="/usr/bin/tclsh" - elif [ -f /bin/tclsh ]; then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - fi -fi - -module () { eval `$TCLSH $MODULESHOME/modulecmd.tcl bash $*`; } -. $MODULESHOME/init/modulerc diff --git a/tcl/init/csh.in b/tcl/init/csh.in deleted file mode 100644 index 22c7e3a5b..000000000 --- a/tcl/init/csh.in +++ /dev/null @@ -1,37 +0,0 @@ -if ($?tcsh) then - set modules_shell="tcsh" -else - set modules_shell="csh" -endif - -setenv MODULESHOME $MODULESHOME - -if ( ! $?TCLSH ) then - if ( -f /usr/bin/tclsh ) then - set TCLSH="/usr/bin/tclsh" - else - if ( -f /bin/tclsh ) then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - endif - endif -endif - -if ( $?histchars ) then - set _histchars = $histchars - if ($?prompt) then - alias module 'unset histchars;set _prompt="$prompt";eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set histchars = $_histchars; set prompt="$_prompt";unset _prompt' - else - alias module 'unset histchars;eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set histchars = $_histchars' - endif -else - if ($?prompt) then - alias module 'set _prompt="$prompt";set prompt="";eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set prompt="$_prompt";unset _prompt' -else - alias module 'eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`' - endif -endif - - -source $MODULESHOME/init/modulerc diff --git a/tcl/init/ksh.in b/tcl/init/ksh.in deleted file mode 100644 index d25249308..000000000 --- a/tcl/init/ksh.in +++ /dev/null @@ -1,15 +0,0 @@ - -MODULESHOME=$MODULESHOME; export MODULESHOME - -if [ -z $TCLSH ]; then - if [ -f /usr/bin/tclsh ]; then - set TCLSH="/usr/bin/tclsh" - elif [ -f /bin/tclsh ]; then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - fi -fi - -module () { eval `$TCLSH $MODULESHOME/modulecmd.tcl ksh $*`; } -. $MODULESHOME/init/modulerc diff --git a/tcl/init/lisp.in b/tcl/init/lisp.in deleted file mode 100755 index 14690d41c..000000000 --- a/tcl/init/lisp.in +++ /dev/null @@ -1,91 +0,0 @@ -;; -;; emacs-lisp init code for Modules -;; - -(setenv "MODULESHOME" "$MODULESHOME") - -(cond - ((getenv "TCLSH") - t) - ((file-executable-p "/usr/local/bin/tclsh") - (setenv "TCLSH" "/usr/local/bin/tclsh")) - ((file-executable-p "/usr/bin/tclsh") - (setenv "TCLSH" "/usr/bin/tclsh")) - ((file-executable-p "/bin/tclsh") - (setenv "TCLSH" "/bin/tclsh")) - (t - (setenv "TCLSH"))) - -(defvar Modules-history '() "module cmd history list") - -(defun Modules-module (command) - "Run the string COMMAND as a Modules cmd using the tcl version of modules. -Any resulting output is placed in buffer \" *modules-cmd*\". -This should consist of a single line, a filename, which is -expected to contain Emacs lisp code to implement the indicated -module commands. The lisp code in this file is eval'd by Emacs -on successful completion of modulecmd.tcl. - -Standard error output is placed in buffer \" *module-log*\" which will -be displayed if not empty. - -Return value is t on success, nil otherwise." - (interactive (list (read-string "Module cmd: " nil 'Modules-history))) - (let - ((cmd-buffer (get-buffer-create " *modules-cmd*")) - (log-buffer (get-buffer-create " *modules-log*")) - (log-scratch-file (make-temp-name - (expand-file-name "modules-log" - (if (fboundp 'temp-directory) - (temp-directory) ;; XEmacs - temporary-file-directory)))) - (status nil)) - - ;; clear cmd buffer, log buffer is replaced below - (set-buffer cmd-buffer) - (delete-region (point-min) (point-max)) - - (if (condition-case nil - ;; call-process on Emacs cannot write stderr to a separate buffer - ;; so it must go to a file and then get pulled into the log buffer - ;; (XEmacs *can* direct stderr to buffer, but not worth special case) - (progn - (apply 'call-process (getenv "TCLSH") nil - (list cmd-buffer log-scratch-file) - nil ;; don't display stdout - (concat (getenv "MODULESHOME") "/modulecmd.tcl") - "lisp" (split-string command)) - t) - (error nil)) - (progn - ;; pull any log info from log-scratch-file into log-buffer - (set-buffer log-buffer) - (insert-file-contents log-scratch-file nil nil nil t) - - ;; display any output written to stderr ( eg: module help|list ) - (if (> (buffer-size) 0) - (switch-to-buffer-other-window log-buffer)) - - ;; Run any setenv, etc commands produced by modulecmd.tcl - ;; cmd-buffer should currently contain the pathname of file to run - ;; Note: use eval-buffer instead of load-file to avoid stomping - ;; any (message) output from the script itself. - (set-buffer cmd-buffer) - (if (> (buffer-size) 0) - (progn - ;; replace cmd-buffer w/ contents of file whose name is in cmd-buffer - (insert-file-contents (buffer-substring (point-min) (1- (point-max))) nil nil nil t) - ;; and run it carefully. If an error is thrown, catch it and - ;; propagate the fact upwards as a nil, but be sure to still - ;; execute cleanup below - (setq status - (condition-case nil - (progn - (eval-buffer) - t) - (error nil))))))) - - ;; all done, clean up - (delete-file log-scratch-file) - - status)) diff --git a/tcl/init/modulerc b/tcl/init/modulerc deleted file mode 100644 index 53bf967bb..000000000 --- a/tcl/init/modulerc +++ /dev/null @@ -1,2 +0,0 @@ -module use /mips/tools/freeware/modulefiles -module use /mips/tools/platinum/envmodule/modulefiles diff --git a/tcl/init/perl.in b/tcl/init/perl.in deleted file mode 100644 index 0adacb8cb..000000000 --- a/tcl/init/perl.in +++ /dev/null @@ -1,24 +0,0 @@ -$ENV{MODULESHOME} = "$MODULESHOME"; - -if ($ENV{TCLSH}) { - $TCLSH= $ENV{TCLSH}; -} elsif ( -f "/usr/bin/tclsh") { - $TCLSH="/usr/bin/tclsh"; -} elsif ( -f "/bin/tclsh" ) { - $TCLSH="/bin/tclsh"; -} else { - $TCLSH=""; -} - -sub module { - eval `$TCLSH $ENV{MODULESHOME}/modulecmd.tcl perl @_`; - if($@) { - use Carp; - confess "module-error: $@\n"; - } - return 1; -} - -module("source","$MODULESHOME/init/modulerc"); - -1; diff --git a/tcl/init/python.in b/tcl/init/python.in deleted file mode 100644 index 859d27cdc..000000000 --- a/tcl/init/python.in +++ /dev/null @@ -1,24 +0,0 @@ -import os, string - -os.environ['MODULESHOME'] = '$MODULESHOME' - -if os.environ.has_key('TCLSH'): - TCLSH=os.environ['TCLSH'] -else: - if os.path.exists('/usr/bin/tclsh'): - TCLSH="/usr/bin/tclsh" - else: - if os.path.exists('/bin/tclsh') : - TCLSH="/bin/tclsh" - else: - TCLSH="" - -if not os.environ.has_key('MODULEPATH'): - os.environ['MODULEPATH'] = '/mips/tools/freeware/modulefiles' - -if not os.environ.has_key('LOADEDMODULES'): - os.environ['LOADEDMODULES'] = ''; - -def module(command, *arguments): - commands = os.popen('$TCLSH $MODULESHOME/modulecmd.tcl python %s %s' % (command, string.join(arguments))).read() - exec commands diff --git a/tcl/init/sh.in b/tcl/init/sh.in deleted file mode 100644 index d9ec8bc13..000000000 --- a/tcl/init/sh.in +++ /dev/null @@ -1,15 +0,0 @@ -MODULESHOME=$MODULESHOME; export MODULESHOME - -if [ -z $TCLSH ]; then - if [ -f /usr/bin/tclsh ]; then - set TCLSH="/usr/bin/tclsh" - elif [ -f /bin/tclsh ]; then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - fi -fi - -module () { eval `$TCLSH $MODULESHOME/modulecmd.tcl sh $*`; } -. $MODULESHOME/init/modulerc - diff --git a/tcl/init/tcsh.in b/tcl/init/tcsh.in deleted file mode 100644 index d79eb8864..000000000 --- a/tcl/init/tcsh.in +++ /dev/null @@ -1,38 +0,0 @@ - -if ($?tcsh) then - set modules_shell="tcsh" -else - set modules_shell="csh" -endif - -setenv MODULESHOME $MODULESHOME - -if ( ! $?TCLSH ) then - if ( -f /usr/bin/tclsh ) then - set TCLSH="/usr/bin/tclsh" - else - if ( -f /bin/tclsh ) then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - endif - endif -endif - -if ( $?histchars ) then - set _histchars = $histchars - if ($?prompt) then - alias module 'unset histchars;set _prompt="$prompt";eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set histchars = $_histchars; set prompt="$_prompt";unset _prompt' - else - alias module 'unset histchars;eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set histchars = $_histchars' - endif -else - if ($?prompt) then - alias module 'set _prompt="$prompt";set prompt="";eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`;set prompt="$_prompt";unset _prompt' -else - alias module 'eval `$TCLSH '$MODULESHOME'/modulecmd.tcl '$modules_shell' \!*`' - endif -endif - - -source $MODULESHOME/init/modulerc diff --git a/tcl/init/zsh.debug b/tcl/init/zsh.debug deleted file mode 100644 index d4bf6d309..000000000 --- a/tcl/init/zsh.debug +++ /dev/null @@ -1,8 +0,0 @@ - -MODULESHOME=$CDS_MIPS_LOCAL/../../envmodule; export MODULESHOME -module () { eval `$CDS_MIPS_LOCAL/../../envmodule/modulecmd.tcl zsh $*`; } - -if [ "${MODULEPATH:-}" = "" ]; then - MODULEPATH=/mips/tools/freeware/modulefiles - export MODULEPATH -fi diff --git a/tcl/init/zsh.in b/tcl/init/zsh.in deleted file mode 100644 index 7397244ec..000000000 --- a/tcl/init/zsh.in +++ /dev/null @@ -1,15 +0,0 @@ - -MODULESHOME=$MODULESHOME; export MODULESHOME - -if [ -z $TCLSH ]; then - if [ -f /usr/bin/tclsh ]; then - set TCLSH="/usr/bin/tclsh" - elif [ -f /bin/tclsh ]; then - set TCLSH="/bin/tclsh" - else - set TCLSH="" - fi -fi - -module () { eval `$TCLSH $MODULESHOME/modulecmd.tcl zsh $*`; } -. $MODULESHOME/init/modulerc diff --git a/tcl/modulecmd.tcl b/tcl/modulecmd.tcl deleted file mode 100755 index 5802e068a..000000000 --- a/tcl/modulecmd.tcl +++ /dev/null @@ -1,3043 +0,0 @@ -#!/bin/sh -# \ -type tclsh 1>/dev/null 2>&1 && exec tclsh "$0" "$@" -# \ -[ -x /usr/local/bin/tclsh ] && exec /usr/local/bin/tclsh "$0" "$@" -# \ -[ -x /usr/bin/tclsh ] && exec /usr/bin/tclsh "$0" "$@" -# \ -[ -x /bin/tclsh ] && exec /bin/tclsh "$0" "$@" -# \ -echo "FATAL: module: Could not find tclsh in \$PATH or in standard\ - directories" >&2; exit 1 - -######################################################################## -# This is a pure TCL implementation of the module command -# -# Some Global Variables..... -set g_debug 0 ;# Set to 1 to enable debugging -set error_count 0 ;# Start with 0 errors -set g_autoInit 0 -set g_force 1 ;# Path element reference counting if == 0 -set CSH_LIMIT 1000 ;# Workaround for commandline limits in csh -set DEF_COLUMNS 80 ;# Default size of columns for formating -set MODULES_CURRENT_VERSION 3.1.6 -set flag_default_dir 1 ;# Report default directories -set flag_default_mf 1 ;# Report default modulefiles and version alias - -# Set some directories to ignore when looking for modules. -set ignoreDir(CVS) 1 -set ignoreDir(RCS) 1 -set ignoreDir(SCCS) 1 - -global g_shellType -global g_shell -set show_oneperline 0 -# Gets set if you do module list/avail -t -set show_modtimes 0 -# Gets set if you do module list/avail -l - -######################################################################## -# Use a slave TCL interpreter to execute modulefiles -# - -proc unset-env {var} { - global env - - if [info exists env($var)] { - unset env($var) - } -} - -proc execute-modulefile-help {modfile} { - global env g_stateEnvVars g_debug - - if {$g_debug} { - puts stderr "Starting $modfile" - } - set slave __[currentModuleName] - if {![interp exists $slave]} { - interp create $slave - interp alias $slave setenv {} setenv - interp alias $slave unsetenv {} unsetenv - interp alias $slave system {} system - interp alias $slave append-path {} append-path - interp alias $slave prepend-path {} prepend-path - interp alias $slave remove-path {} remove-path - interp alias $slave prereq {} prereq - interp alias $slave conflict {} conflict - interp alias $slave is-loaded {} is-loaded - interp alias $slave module {} module - interp alias $slave module-info {} module-info - interp alias $slave module-whatis {} module-whatis - interp alias $slave set-alias {} set-alias - interp alias $slave unset-alias {} unset-alias - interp alias $slave uname {} uname - interp alias $slave x-resource {} x-resource - interp alias $slave module-version {} module-version - interp alias $slave module-alias {} module-alias - - interp eval $slave [list global ModulesCurrentModulefile g_debug] - interp eval $slave [list set ModulesCurrentModulefile $modfile] - interp eval $slave [list set g_debug $g_debug] - } - set errorVal [interp eval $slave { - if [catch {source $ModulesCurrentModulefile} errorMsg] { - if {$errorMsg == "" && $errorInfo == ""} { - unset errorMsg - return 1 - }\ - elseif [regexp "^WARNING" $errorMsg] { - puts stderr $errorMsg - return 1 - } { - global errorInfo - set errorMsg "ERROR occured in file $ModulesCurrentModulefile." - set errorMsg "$errorMsg\nContact your local modulefile\ - maintainer." - set errorMsg\ - "$errorMsg\n----------errorInfo----------\n$errorInfo" - puts stderr $errorMsg - exit 1 - } - } { - if {[info procs "ModulesHelp"] == "ModulesHelp"} {ModulesHelp} - unset errorMsg - return 0 - } - }] - interp delete $slave - if {$g_debug} { - puts stderr "Exiting $modfile" - } - return $errorVal -} - -proc execute-modulefile {modfile} { - global env g_stateEnvVars g_debug - global ModulesCurrentModulefile - set ModulesCurrentModulefile $modfile - - set slave __[currentModuleName] - if {![interp exists $slave]} { - interp create $slave - interp alias $slave setenv {} setenv - interp alias $slave unsetenv {} unsetenv - interp alias $slave system {} system - interp alias $slave append-path {} append-path - interp alias $slave prepend-path {} prepend-path - interp alias $slave remove-path {} remove-path - interp alias $slave prereq {} prereq - interp alias $slave conflict {} conflict - interp alias $slave is-loaded {} is-loaded - interp alias $slave module {} module - interp alias $slave module-info {} module-info - interp alias $slave module-whatis {} module-whatis - interp alias $slave set-alias {} set-alias - interp alias $slave unset-alias {} unset-alias - interp alias $slave uname {} uname - interp alias $slave x-resource {} x-resource - interp alias $slave module-version {} module-version - interp alias $slave module-alias {} module-alias - interp alias $slave module-trace {} module-trace - interp alias $slave module-verbosity {} module-verbosity - interp alias $slave module-user {} module-user - interp alias $slave module-log {} module-log - - interp eval $slave [list global ModulesCurrentModulefile g_debug] - interp eval $slave [list set ModulesCurrentModulefile $modfile] - interp eval $slave [list set g_debug $g_debug] - - } - set errorVal [interp eval $slave { - if [catch {source $ModulesCurrentModulefile} errorMsg] { - if {$errorMsg == "" && $errorInfo == ""} { - unset errorMsg - return 1 - }\ - elseif [regexp "^WARNING" $errorMsg] { - puts stderr $errorMsg - return 1 - } { - global errorInfo - set errorMsg "ERROR occured in file $ModulesCurrentModulefile." - set errorMsg "$errorMsg\nContact your local modulefile\ - maintainer." - set errorMsg\ - "$errorMsg\n----------errorInfo----------\n$errorInfo" - puts stderr $errorMsg - exit 1 - } - } { - if {[module-info mode "display"] && [info procs\ - "ModulesDisplay"] == "ModulesDisplay"} {ModulesDisplay} - unset errorMsg - return 0 - } - }] - interp delete $slave - return $errorVal -} - -proc execute-modulerc {modfile} { - # BOZO - ajb: I'm not sure what functions should be supported in a\ - .modulerc file. For now it's a small subset - global env g_stateEnvVars g_rcfilesSourced - global g_debug - global ModulesCurrentModulefile - - set ModulesCurrentModulefile $modfile - - if {![checkValidModule $modfile]} { - puts stderr "+(0):ERROR:0: Magic cookie '#%Module' missing in\ - '$modfile'" - return "" - } - - # If we have already loaded an RC file, don't load it again - BOZO may\ - want this to add to execute-version - if {![info exists g_rcfilesSourced($modfile)]} { - if {$g_debug} { - puts stderr "DEBUG execute-modulerc: sourcing rc $modfile" - } - set slave __.modulerc - if {![interp exists $slave]} { - interp create $slave - interp alias $slave uname {} uname - interp alias $slave system {} system - interp alias $slave module-version {} module-version - interp alias $slave module-alias {} module-alias - interp alias $slave module {} module - interp alias $slave module-trace {} module-trace - interp alias $slave module-verbosity {} module-verbosity - interp alias $slave module-user {} module-user - interp alias $slave module-log {} module-log - - interp eval $slave [list global ModulesCurrentModulefile g_debug] - interp eval $slave [list set ModulesCurrentModulefile $modfile] - interp eval $slave [list set g_debug $g_debug] - - } - set ModulesVersion [interp eval $slave { - if [catch {source $ModulesCurrentModulefile} errorMsg] { - set errorMsg "ERROR occured in file $ModulesCurrentModulefile." - global errorInfo - set errorMsg "$errorMsg\nContact your local modulefile\ - maintainer." - set errorMsg\ - "$errorMsg\n----------errorInfo----------\n$errorInfo" - puts stderr $errorMsg - exit 1 - } - }] - interp delete $slave - # Keep track of rc files that we already source so we don't run them\ - again - set g_rcfilesSourced($modfile) 1 - } -} - - -proc execute-version {modfile} { - global env g_stateEnvVars - global g_moduleDefault g_debug - - if {![checkValidModule $modfile]} { - puts stderr "+(0):ERROR:0: Magic cookie '#%Module' missing in\ - '$modfile'" - return "" - } - - set modparent [file dirname $modfile] - - set slave __.version - if {![interp exists $slave]} { - interp create $slave - interp alias $slave uname {} uname - interp alias $slave system {} system - interp alias $slave module-version {} module-version - interp alias $slave module-alias {} module-alias - interp eval $slave [list global ModulesCurrentModulefile] - interp eval $slave [list set ModulesCurrentModulefile $modfile] - interp eval $slave [list global ModulesVersion] - interp eval $slave [list set ModulesVersion {}] - } - set ModulesVersion [interp eval $slave { - if [catch {source $ModulesCurrentModulefile} errorMsg] { - set errorMsg "ERROR occured in file $ModulesCurrentModulefile." - global errorInfo - set errorMsg "$errorMsg\nContact your local modulefile maintainer." - set errorMsg "$errorMsg\n----------errorInfo----------\n$errorInfo" - puts stderr $errorMsg - exit 1 - }\ - elseif [info exists ModulesVersion] { - return $ModulesVersion - } { - return {} - } - }] - interp delete $slave - set g_moduleDefault($modparent) $ModulesVersion - if {$g_debug} { - puts stderr "DEBUG execute-version: Setting\ - g_moduleDefault($modparent) $ModulesVersion" - } - return $ModulesVersion -} - - -######################################################################## -# commands run from inside a module file -# -set ModulesCurrentModulefile {} - -proc module-log {weight facility} { - global ModulesCurrentModulefile - # report "$ModulesCurrentModulefile: module-log not yet implemented" -} - -proc module-verbosity {mode} { - global ModulesCurrentModulefile - # report "$ModulesCurrentModulefile: module-verbosity not yet\ - implemented" -} - -proc module-user {level} { - global ModulesCurrentModulefile - # report "$ModulesCurrentModulefile: module-user not yet implemented" -} - -proc module-trace {mode args} { - global ModulesCurrentModulefile - # report "$ModulesCurrentModulefile: module-trace not yet implemented" -} - -proc module-info {what {more {}}} { - global g_shellType g_shell - global g_moduleAlias g_symbolHash g_versionHash - - set mode [currentMode] - switch -- $what { - "mode" { - if {$more != ""} { - if {$mode == $more} { - return 1 - } { - return 0 - } - } { - return $mode - } - } - "name" { - return [currentModuleName] - } - "shell" { - return $g_shell - } - "shelltype" { - return $g_shellType - } - "alias" { - return $g_moduleAlias($more) - } - "symbols" { - if [regexp {^\/} $more] { - set tmp [currentModuleName] - set tmp [file dirname $tmp] - set more "${tmp}$more" - } - if {[info exists g_symbolHash($more)]} { - return $g_symbolHash($more) - } { - return {} - } - } - "version" { - if [regexp {^\/} $more] { - set tmp [currentModuleName] - set tmp [file dirname $tmp] - set more "${tmp}$more" - } - if {[info exists g_versionHash($more)]} { - return $g_versionHash($more) - } { - return {} - } - } - default { - error "module-info $what not supported" - return {} - } - } -} - -proc module-whatis {message} { - set mode [currentMode] - - global g_whatis - - if {$mode == "display"} { - report "module-whatis\t$message" - }\ - elseif {$mode == "whatis"} { - set g_whatis $message - } - return {} -} - -# Specifies a default or alias version for a module that points to an -# existing module version Note that the C version stores aliases and -# defaults by the short module name (not the full path) so aliases and -# defaults from one directory will apply to modules of the same name found -# in other directories. -proc module-version {args} { - global g_moduleVersion g_versionHash - global g_moduleDefault - global g_debug - global ModulesCurrentModulefile - - if {$g_debug} { - puts stderr "DEBUG module-version: executing module-version $args" - } - set module_name [lindex $args 0] - - # Check for shorthand notation of just a version "/version". Base is - # implied by current dir prepend the current directory to module_name - if {[regexp {^\/} $module_name]} { - set base [file tail [file dirname $ModulesCurrentModulefile]] - set module_name "${base}$module_name" - } - - foreach version [lrange $args 1 end] { - - set base [file tail [file dirname $module_name]] - set aliasversion [file tail $module_name] - - if {$base != ""} { - if {[string match $version "default"]} { - # If we see more than one default for the same module, just\ - keep the first - if {![info exists g_moduleDefault($module_name)]} { - set g_moduleDefault($base) $aliasversion - if {$g_debug} { - puts stderr "DEBUG module-version: default $base =\ - $aliasversion" - } - } - } { - set aliasversion "$base/$version" - if {$g_debug} { - puts stderr "DEBUG module-version: alias $aliasversion =\ - $module_name" - } - set g_moduleVersion($aliasversion) $module_name - - if {[info exists g_versionHash($module_name)]} { - # don't add duplicates - if {[lsearch -exact $g_versionHash($module_name)\ - $aliasversion] < 0} { - set tmplist $g_versionHash($module_name) - set tmplist [linsert $tmplist end $aliasversion] - set g_versionHash($module_name) $tmplist - } - } { - set g_versionHash($module_name) $aliasversion - } - } - - - if {$g_debug} { - puts stderr "DEBUG module-version: $aliasversion =\ - $module_name" - } - } { - error "module-version: module argument for default must not be\ - fully version qualified" - } - } - if {[string match [currentMode] "display"]} { - report "module-version\t$args" - } - return {} -} - - -proc module-alias {args} { - global g_moduleAlias g_symbolHash - global ModulesCurrentModulefile - global g_debug - - set alias [lindex $args 0] - set module_file [lindex $args 1] - - if {$g_debug} { - puts stderr "DEBUG module-alias: $alias = $module_file" - } - - set g_moduleAlias($alias) $module_file - - if {[info exists g_aliasHash($module_file)]} { - set tmplist $g_aliasHash($module_file) - set tmplist [linsert $tmplist end $alias] - set g_aliasHash($module_file) $tmplist - } { - set g_aliasHash($module_file) $alias - } - - if {[string match [currentMode] "display"]} { - report "module-alias\t$args" - } - - - return {} -} - - -proc module {command args} { - set mode [currentMode] - global g_debug - - # Resolve any module aliases - if {$g_debug} { - puts stderr "DEBUG module: Resolving $args" - } - set args [resolveModuleVersionOrAlias $args] - if {$g_debug} { - puts stderr "DEBUG module: Resolved to $args" - } - - switch -- $command { - add - - load { - if {$mode == "load"} { - eval cmdModuleLoad $args - }\ - elseif {$mode == "unload"} { - eval cmdModuleUnload $args - }\ - elseif {$mode == "display"} { - report "module load $args" - } - } - rm - - unload { - if {$mode == "load"} { - eval cmdModuleUnload $args - }\ - elseif {$mode == "unload"} { - eval cmdModuleUnload $args - }\ - elseif {$mode == "display"} { - report "module unload $args" - } - } - reload { - cmdModuleReload - } - use { - eval cmdModuleUse $args - } - unuse { - eval cmdModuleUnuse $args - } - source { - eval cmdModuleSource $args - } - switch { - eval cmdModuleSwitch $args - } - swap { - eval cmdModuleSwitch $args - } - display { - eval cmdModuleDisplay $args - } - show { - eval cmdModuleDisplay $args - } - avail { - if {$args != ""} { - foreach arg $args { - cmdModuleAvail $arg - } - } { - cmdModuleAvail - } - } - path { - eval cmdModulePath $args - } - paths { - eval cmdModulePaths $args - } - list { - cmdModuleList - } - whatis { - if {$args != ""} { - foreach arg $args { - cmdModuleWhatIs $arg - } - } { - cmdModuleWhatIs - } - } - apropos { - eval cmdModuleApropos $args - } - keyword { - eval cmdModuleApropos $args - } - purge { - eval cmdModulePurge - } - initadd { - eval cmdModuleInit add $args - } - initprepend { - eval cmdModuleInit prepend $args - } - initrm { - eval cmdModuleInit rm $args - } - initlist { - eval cmdModuleInit list $args - } - initclear { - eval cmdModuleInit clear $args - } - default { - error "module $command not understood" - } - } - return {} -} - -proc setenv {var val} { - global g_stateEnvVars env - set mode [currentMode] - - if {$mode == "load"} { - set env($var) $val - set g_stateEnvVars($var) "new" - }\ - elseif {$mode == "unload"} { - # Don't unset-env here ... it breaks modulefiles - # that use env(var) is later in the modulefile - #unset-env $var - set g_stateEnvVars($var) "del" - }\ - elseif {$mode == "display"} { - # Let display set the variable for later use in the display - # but don't commit it to the env - set env($var) $val - set g_stateEnvVars($var) "nop" - report "setenv\t$var\t$val" - } - return {} -} - -proc unsetenv {var {val {}}} { - global g_stateEnvVars env - set mode [currentMode] - - if {$mode == "load"} { - if [info exists env($var)] { - unset-env $var - } - set g_stateEnvVars($var) "del" - }\ - elseif {$mode == "unload"} { - if {$val != ""} { - set env($var) $val - set g_stateEnvVars($var) "new" - } - }\ - elseif {$mode == "display"} { - report "unsetenv\t$var" - } - return {} -} - -######################################################################## -# path fiddling - -proc getReferenceCountArray {var} { - global env g_force - - set sharevar "${var}_modshare" - set modshareok 1 - if [info exists env($sharevar)] { - if [info exists env($var)] { - set modsharelist [split $env($sharevar) ":"] - if {[expr [llength $modsharelist] % 2] == 0} { - array set countarr $modsharelist - - # sanity check the modshare list - array set fixers {} - array set usagearr {} - foreach dir [split $env($var) ":"] { - set usagearr($dir) 1 - } - foreach path [array names countarr] { - if {! [info exists usagearr($path)]} { - unset countarr($path) - set fixers($path) 1 - } - } - - foreach path [array names usagearr] { - if {! [info exists countarr($path)]} { - set countarr($path) 999999999 - # set fixers($path) 1 - } - } - - if {! $g_force} { - if [array size fixers] { - reportWarning "WARNING: \$$var does not agree with\ - \$${var}_modshare counter. The following\ - directories' usage counters were adjusted to match.\ - Note that this may mean that module unloading may\ - not work correctly." - foreach dir [array names fixers] { - report " $dir" -nonewline - } - reportWarning "" - } - } - - } { - # sharevar was corrupted, odd number of elements. - set modshareok 0 - } - } { - # reportWarning "WARNING: module: $sharevar exists (\ - $env($sharevar) ), but $var doesn't. Environment is corrupted.\ - Contact lakata@mips.com for help." - set modshareok 0 - } - } { - set modshareok 0 - } - - if {$modshareok == 0 && [info exists env($var)]} { - array set countarr {} - foreach dir [split $env($var) ":"] { - set countarr($dir) 1 - } - } - return [array get countarr] -} - - -proc unload-path {var path} { - global g_stateEnvVars env g_force - - array set countarr [getReferenceCountArray $var] - - # Don't worry about dealing with this variable if it is already scheduled\ - for deletion - if {[info exists g_stateEnvVars($var)] && $g_stateEnvVars($var) == "del"} { - return {} - } - - set doit 0 - - foreach dir [split $path ":"] { - if [info exists countarr($dir)] { - incr countarr($dir) -1 - if {$countarr($dir) <= 0} { - set doit 1 - unset countarr($dir) - } - } { - set doit 1 - } - - if {$doit || $g_force} { - if [info exists env($var)] { - set dirs [split $env($var) ":"] - set newpath "" - foreach elem $dirs { - if {$elem != $dir} { - lappend newpath $elem - } - } - if {$newpath == ""} { - unset-env $var - set g_stateEnvVars($var) "del" - } { - set env($var) [join $newpath ":"] - set g_stateEnvVars($var) "new" - } - } - } - } - - set sharevar "${var}_modshare" - if {[array size countarr] > 0} { - set env($sharevar) [join [array get countarr] ":"] - set g_stateEnvVars($sharevar) "new" - } { - unset-env $sharevar - set g_stateEnvVars($sharevar) "del" - } - return {} -} - -proc add-path {var path pos} { - global env g_stateEnvVars - - set sharevar "${var}_modshare" - array set countarr [getReferenceCountArray $var] - - if {$pos == "prepend"} { - set pathelems [reverseList [split $path ":"]] - } { - set pathelems [split $path ":"] - } - foreach dir $pathelems { - if [info exists countarr($dir)] { - # already see $dir in $var" - incr countarr($dir) - } { - if [info exists env($var)] { - if {$pos == "prepend"} { - set env($var) "$dir:$env($var)" - }\ - elseif {$pos == "append"} { - set env($var) "$env($var):$dir" - } { - error "add-path doesn't support $pos" - } - } { - set env($var) "$dir" - } - set countarr($dir) 1 - } - } - - - set env($sharevar) [join [array get countarr] ":"] - set g_stateEnvVars($var) "new" - set g_stateEnvVars($sharevar) "new" - return {} -} - -proc prepend-path {var path} { - set mode [currentMode] - - if {$mode == "load"} { - add-path $var $path "prepend" - }\ - elseif {$mode == "unload"} { - unload-path $var $path - }\ - elseif {$mode == "display"} { - report "prepend-path\t$var\t$path" - } - return {} -} - - -proc append-path {var path} { - set mode [currentMode] - - if {$mode == "load"} { - add-path $var $path "append" - }\ - elseif {$mode == "unload"} { - unload-path $var $path - }\ - elseif {$mode == "display"} { - report "append-path\t$var\t$path" - } - return {} -} - -proc remove-path {var path} { - set mode [currentMode] - - if {$mode == "load"} { - unload-path $var $path - }\ - elseif {$mode == "display"} { - report "remove-path\t$var\t$path" - } - return {} -} - -proc set-alias {alias what} { - global g_Aliases g_stateAliases - set mode [currentMode] - - if {$mode == "load"} { - set g_Aliases($alias) $what - set g_stateAliases($alias) "new" - }\ - elseif {$mode == "unload"} { - set g_Aliases($alias) {} - set g_stateAliases($alias) "del" - }\ - elseif {$mode == "display"} { - report "set-alias\t$alias\t$what" - } - return {} -} - - -proc unset-alias {alias} { - global g_Aliases g_stateAliases - set mode [currentMode] - - if {$mode == "load"} { - set g_Aliases($alias) {} - set g_stateAliases($alias) "del" - }\ - elseif {$mode == "display"} { - report "unset-alias\t$alias\t" - } - return {} -} - -proc is-loaded {modulelist} { - global env - - if {[llength $modulelist] > 0} { - if [info exists env(LOADEDMODULES)] { - foreach arg $modulelist { - set arg "$arg/" - set arg_found 0 - foreach mod [split $env(LOADEDMODULES) ":"] { - set mod "$mod/" - if {[string first $arg $mod] == 0} { - set arg_found 1 - } - } - if {$arg_found == 0} { - return 0 - } - } - } { - return 0 - } - } - return 1 -} - - -proc conflict {args} { - global ModulesCurrentModulefile g_debug - set mode [currentMode] - set currentModule [currentModuleName] - - - if {$mode == "load"} { - foreach mod $args { - # If the current module is already loaded, we can proceed - if {![is-loaded $currentModule]} { - # otherwise if the conflict module is loaded, we cannot - if [is-loaded $mod] { - set errMsg "WARNING: $currentModule cannot be loaded due\ - to a conflict." - set errMsg "$errMsg\nHINT: Might try \"module unload\ - $mod\" first." - error $errMsg - } - } - } - }\ - elseif {$mode == "display"} { - report "conflict\t$args" - } - return {} -} - -proc prereq {args} { - set mode [currentMode] - set currentModule [currentModuleName] - - if {$mode == "load"} { - if {![is-loaded $args]} { - set errMsg "WARNING: $currentModule cannot be loaded due to\ - missing prereq." - set errMsg "$errMsg\nHINT: the following modules must be loaded\ - first: $args" - error $errMsg - } - }\ - elseif {$mode == "display"} { - report "prereq\t$args" - } - return {} -} - -proc x-resource {resource {value {}}} { - global g_newXResources g_delXResources - set mode [currentMode] - - if {$mode == "load"} { - set g_newXResources($resource) $value - }\ - elseif {$mode =="unload"} { - set g_delXResources($resource) 1 - }\ - elseif {$mode == "display"} { - report "x-resource\t$resource\t$value" - } - return {} -} - -proc uname {what} { - global unameCache tcl_platform - set result {} - - if {! [info exists unameCache($what)]} { - switch -- $what { - sysname { - set result $tcl_platform(os) - } - machine { - set result $tcl_platform(machine) - } - nodename - - node { - set result [info hostname] - } - release { - set result $tcl_platform(osVersion) - } - default { - error "uname $what not supported" - } - domain { - set result [exec /bin/domainname] - } - version { - set result [exec /bin/uname -v] - } - } - set unameCache($what) $result - } - - return $unameCache($what) -} - -######################################################################## -# internal module procedures - -set g_modeStack {} -#set g_mode {} - -proc currentMode {} { - global g_modeStack - - set mode [lindex $g_modeStack end] - return $mode -} - -proc pushMode {mode} { - global g_modeStack - - lappend g_modeStack $mode -} - -proc popMode {} { - global g_modeStack - - set len [llength $g_modeStack] - set len [expr $len - 2] - set g_modeStack [lrange $g_modeStack 0 $len] -} - - -set g_moduleNameStack {} - -proc currentModuleName {} { - global g_moduleNameStack - - set moduleName [lindex $g_moduleNameStack end] - return $moduleName -} - -proc pushModuleName {moduleName} { - global g_moduleNameStack - - lappend g_moduleNameStack $moduleName -} - -proc popModuleName {} { - global g_moduleNameStack - - set len [llength $g_moduleNameStack] - set len [expr $len - 2] - set g_moduleNameStack [lrange $g_moduleNameStack 0 $len] -} - - -# Return the full pathname and modulename to the module. -# Resolve aliases and default versions the module name is something like -# "name/version" or just name (find default version) -proc getPathToModule {mod} { - global env g_loadedModulesGeneric - global g_moduleAlias g_moduleVersion - global g_debug - global ModulesCurrentModulefile flag_default_mf flag_default_dir - - set retlist "" - - if {$mod == "null"} { - return "" - } - - if {$g_debug} { - puts stderr "DEBUG getPathToModule: Finding $mod" - } - - # Check for aliases - - set newmod [resolveModuleVersionOrAlias $mod] - if {$newmod != $mod} { - # Alias before ModulesVersion - return [getPathToModule $newmod] - } - - # Check for $mod specified as a full pathname - if [string match {/*} $mod] { - if [file exists $mod] { - if [file readable $mod] { - if [file isfile $mod] { - # note that a raw filename as an argment returns the full\ - path as the module name - if {[checkValidModule $mod]} { - return [list $mod $mod] - } { - puts stderr "+(0):ERROR:0: Unable to locate a\ - modulefile for '$mod'" - return "" - } - } - } - } - }\ - elseif [info exists env(MODULEPATH)] { - # Now search for $mod in MODULEPATH - foreach dir [split $env(MODULEPATH) ":"] { - set path "$dir/$mod" - - # modparent is the the modulename minus the module version. - set modparent [file dirname $mod] - set modversion [file tail $mod] - # If $mod was specified without a version (no "/") then mod is\ - really modparent - if {$modparent == "."} { - set modparent $mod - } - set modparentpath "$dir/$modparent" - - - # Search the modparent directory for .modulerc files in case we\ - need to translate an alias - if [file isdirectory $modparentpath] { - # Execute any modulerc for this module - if [file exists "$modparentpath/.modulerc"] { - if {$g_debug} { - puts stderr "DEBUG getPathToModule: Found\ - $modparentpath/.modulerc" - } - execute-modulerc $modparentpath/.modulerc - } - # Check for an alias - set newmod [resolveModuleVersionOrAlias $mod] - if {$newmod != $mod} { - # Alias before ModulesVersion - return [getPathToModule $newmod] - } - } - - # Now check if the mod specified is a file or a directory - if [file readable $path] { - # If a directory, return the defailt if a .version file is\ - present or return the last file - # in the dir - if [file isdirectory $path] { - set ModulesVersion "" - # Not an alias or version alias - check for a .version\ - file or find the default file - if [info exists g_loadedModulesGeneric($mod)] { - set ModulesVersion $g_loadedModulesGeneric($mod) - }\ - elseif {[file exists "$path/.version"] && ![file readable\ - "$path/.modulerc"]} { - # .version files aren't read if .modulerc present - if {$g_debug} { - puts stderr "DEBUG getPathToModule: Found\ - $path/.version" - } - set ModulesVersion [execute-version "$path/.version"] - } - - - # Try for the last file in directory if no luck so far - if {$ModulesVersion == ""} { - set ModulesVersion [lindex [listModules $path "" 0\ - $flag_default_mf $flag_default_dir] end] - if {$g_debug} { - puts stderr "DEBUG getPathToModule: Found\ - $ModulesVersion in $path" - } - } - - - if {$ModulesVersion != ""} { - # The path to the module file - set verspath "$path/$ModulesVersion" - # The modulename (name + version) - set versmod "$mod/$ModulesVersion" - set retlist [list $verspath $versmod] - } - } { - # If mod was a file in this path, try and return that file - set retlist [list $path $mod] - } - - # We may have a winner, check validity of result - if {[llength $retlist] == 2} { - # Check to see if we've found only a directory. If so,\ - keep looking - if {[file isdirectory [lindex $retlist 0]]} { - set retlist [getPathToModule [lindex $retlist 1]] - } - - if {! [checkValidModule [lindex $retlist 0]]} { - set path [lindex $retlist 0] - } { - return $retlist - } - } - } - # File wasn't readable, go to next path - } - # End of of foreach loop - puts stderr "+(0):ERROR:0: Unable to locate a modulefile for '$mod'" - return "" - } { - error "\$MODULEPATH not defined" - return "" - } -} - -proc runModulerc {} { - # Runs the global RC files if they exist - global env g_debug - - if {[info exists env(MODULERCFILE)]} { - if {[file readable $env(MODULERCFILE)]} { - if {$g_debug} { - puts stderr "DEBUG runModulerc: Executing $env(MODULERCFILE)" - } - execute-modulerc $env(MODULERCFILE) - } - } - if {[info exists env(MODULESHOME)]} { - if {[file readable "$env(MODULESHOME)/etc/rc"]} { - if {$g_debug} { - puts stderr "DEBUG runModulerc: Executing\ - $env(MODULESHOME)/etc/rc" - } - execute-modulerc "$env(MODULESHOME)/etc/rc" - } - } - if {[info exists env(HOME)]} { - if {[file readable "$env(HOME)/.modulerc"]} { - execute-modulerc "$env(HOME)/.modulerc" - } - } -} - -proc saveSettings {} { - foreach var {env g_Aliases g_stateEnvVars g_stateAliases g_newXResource\ - g_delXResource} { - eval "global g_SAVE_$var $var" - eval "array set g_SAVE_$var \[array get $var\]" - } -} - -proc restoreSettings {} { - foreach var {env g_Aliases g_stateEnvVars g_stateAliases g_newXResource\ - g_delXResource} { - eval "global g_SAVE_$var $var" - eval "array set $var \[array get g_SAVE_$var\]" - } -} - -proc renderSettings {} { - global env g_Aliases g_shellType g_shell - global g_stateEnvVars g_stateAliases - global g_newXResources g_delXResources - global g_pathList g_systemList error_count - global g_autoInit CSH_LIMIT - - set iattempt 0 - set f "" - set tmpfile "" - while {$iattempt < 100 && $f == ""} { - set tmpfile [format "/tmp/modulescript_%d_%d" [pid] $iattempt] - catch {set f [open $tmpfile "w"]} - incr iattempt - } - - if {$f == ""} { - error "Could not open a temporary file in $tmpfile !" - } { - - # required to work on cygwin, shouldn't hurt real linux - fconfigure $f -translation lf - - # preliminaries - - # Do this first so if there is a problem while running the script - # we won't leave a "turd". - switch -- $g_shellType { - csh { - puts $f "/bin/rm -f $tmpfile" - } - sh { - puts $f "/bin/rm -f $tmpfile" - } - perl { - puts $f "unlink(\"$tmpfile\");" - } - python { - puts $f "os.unlink('$tmpfile')" - } - lisp { - puts $f "(delete-file \"$tmpfile\")" - } - } - - switch -- $g_shellType { - python { - puts $f "import os" - - } - } - - if {$g_autoInit} { - global argv0 - - # add cwd if not absolute script path - if {! [regexp {^/} $argv0]} { - global tcl_platform - if {$tcl_platform(platform) == "windows"} { - set pwd [exec pwd] - } { - set pwd [pwd] - } - set argv0 "$pwd/$argv0" - } - - set env(MODULESHOME) [file dirname $argv0] - set g_stateEnvVars(MODULESHOME) "new" - - set modulerc_init_file $env(MODULESHOME)/init/modulerc - - - switch -- $g_shellType { - csh { - puts $f "if ( \$?histchars ) then" - puts $f " set _histchars = \$histchars" - puts $f " if (\$?prompt) then" - puts $f " alias module 'unset histchars;set\ - _prompt=\"\$prompt\";eval `'$argv0' '$g_shell' \\!*`;set\ - histchars = \$_histchars; set prompt=\"\$_prompt\";unset\ - _prompt'" - puts $f " else" - puts $f " alias module 'unset histchars;eval `'$argv0'\ - '$g_shell' \\!*`;set histchars = \$_histchars'" - puts $f " endif" - puts $f "else" - puts $f " if (\$?prompt) then" - puts $f " alias module 'set _prompt=\"\$prompt\";set\ - prompt=\"\";eval `'$argv0' '$g_shell' \\!*`;set\ - prompt=\"\$_prompt\";unset _prompt'" - puts $f " else" - puts $f " alias module 'eval `'$argv0' '$g_shell' \\!*`'" - puts $f " endif" - puts $f "endif" - - if [file exists $modulerc_init_file] { - puts $f "source $modulerc_init_file" - } { - reportWarning "WARNING: $modulerc_init_file does not\ - exist" - } - } - sh { - puts $f "module () { eval `'$argv0' '$g_shell' \$*`; }" - if [file exists $modulerc_init_file] { - puts $f ". $modulerc_init_file" - } { - reportWarning "WARNING: $modulerc_init_file does not\ - exist" - } - } - perl { - puts $f "sub module {" - puts $f " eval `\$ENV{MODULESHOME}/modulecmd.tcl perl @_`;" - puts $f " if(\$@) {" - puts $f " use Carp;" - puts $f " confess \"module-error: \$@\n\";" - puts $f " }" - puts $f " return 1;" - puts $f "}" - } - python { - puts $f "def module(command, *arguments):" - puts $f " commands = os.popen('$argv0 python %s %s'\ - % (command, string.join(arguments))).read()" - puts $f " exec commands" - } - lisp { - error "ERROR: XXX lisp mode autoinit not yet implemented" - } - } - - if [file exists "$env(MODULESHOME)/modulerc"] { - cmdModuleSource "$env(MODULESHOME)/modulerc" - } - if [file exists "$env(MODULESHOME)/init/modulerc"] { - cmdModuleSource "$env(MODULESHOME)/init/modulerc" - } - } - - - # new environment variables - foreach var [array names g_stateEnvVars] { - if {$g_stateEnvVars($var) == "new"} { - switch -- $g_shellType { - csh { - set val [doubleQuoteEscaped $env($var)] - # csh barfs on long env vars - if {$g_shell == "csh" && [string length $val] >\ - $CSH_LIMIT} { - if {$var == "PATH"} { - reportWarning "WARNING: module: PATH exceeds\ - $CSH_LIMIT characters, truncating to 900 and\ - appending /usr/bin:/bin ..." - set val [string range $val 0 [expr $CSH_LIMIT\ - - 1]]:/usr/bin:/bin - } { - reportWarning "WARNING: module: $var exceeds\ - $CSH_LIMIT characters, truncating..." - set val [string range $val 0 [expr $CSH_LIMIT\ - - 1]] - } - } - puts $f "setenv $var \"$val\"" - } - sh { - set val [doubleQuoteEscaped $env($var)] - puts $f "$var=\"$val\"; export $var" - } - perl { - set val [doubleQuoteEscaped $env($var)] - set val [atSymbolEscaped $env($var)] - puts $f "\$ENV{$var}=\"$val\";" - } - python { - set val [singleQuoteEscaped $env($var)] - puts $f "os.environ\['$var'\] = '$val'" - } - lisp { - set val [doubleQuoteEscaped $env($var)] - puts $f "(setenv \"$var\" \"$val\")" - } - } - - } - } - - # new aliases - if {$g_shell != "sh"} { - foreach var [array names g_stateAliases] { - if {$g_stateAliases($var) == "new"} { - switch -- $g_shellType { - csh { - # set val [multiEscaped $g_Aliases($var)] - set val $g_Aliases($var) - # Convert $n -> \!\!:n - regsub -all {\$([0-9]+)} $val {\\!\\!:\1} val - # Convert $* -> \!* - regsub -all {\$\*} $val {\\!*} val - puts $f "alias $var '$val'" - } - sh { - set val $g_Aliases($var) - puts $f "alias $var=\'$val\'" - } - } - } - } - } - - # obsolete (deleted) env vars - foreach var [array names g_stateEnvVars] { - if {$g_stateEnvVars($var) == "del"} { - switch -- $g_shellType { - csh { - puts $f "unsetenv $var" - } - sh { - puts $f "unset $var" - } - perl { - puts $f "delete \$ENV{$var};" - } - python { - puts $f "os.environ\['$var'\] = ''" - puts $f "del os.environ\['$var'\]" - } - lisp { - puts $f "(setenv \"$var\" nil)" - } - } - } - } - - # obsolete aliases - if {$g_shell != "sh"} { - foreach var [array names g_stateAliases] { - if {$g_stateAliases($var) == "del"} { - switch -- $g_shellType { - csh { - puts $f "unalias $var" - } - sh { - puts $f "unset -f $var" - } - } - } - } - } - - # new x resources - if {[array size g_newXResources] > 0} { - set xrdb [findExecutable xrdb] - foreach var [array names g_newXResources] { - set val $g_newXResources($var) - if {$val == ""} { - switch -regexp -- $g_shellType { - {^(csh|sh)$} { - if [file exists $var] { - puts $f "$xrdb -merge $var" - } { - puts $f "$xrdb -merge < 0} { - set xrdb [findExecutable xrdb] - foreach var [array names g_delXResources] { - if {$val == ""} { - # do nothing - } { - puts $f "xrdb -remove < 0} { - reportWarning "ERROR: $error_count error(s) detected." - switch -- $g_shellType { - csh { - puts $f "/bin/false" - } - sh { - puts $f "/bin/false" - } - perl { - puts $f "die \"modulefile.tcl: $error_count error(s)\ - detected!\\n\"" - } - python { - # I am not a python programmer... - } - lisp { - puts $f "(error \"modulefile.tcl: $error_count error(s)\ - detected!\")" - } - } - set nop 0 - } { - switch -- $g_shellType { - perl { - puts $f "1;" - } - } - } - close $f - - fconfigure stdout -translation lf - - if {$nop} { - # nothing written! - file delete $tmpfile - switch -- $g_shellType { - csh { - puts "/bin/true" - } - sh { - puts "/bin/true" - } - perl { - puts "1;" - } - python { - # this is not correct - puts "" - } - lisp { - puts "t" - } - } - } { - switch -- $g_shellType { - csh { - puts "source $tmpfile" - } - sh { - puts ". $tmpfile" - } - perl { - puts "require \"$tmpfile\";" - } - python { - # this is not correct - puts "exec '$tmpfile'" - } - lisp { - # the module defun() expects just a pathname here - puts "$tmpfile" - } - } - } - } -} - -proc cacheCurrentModules {} { - global g_loadedModules g_loadedModulesGeneric env - - # mark specific as well as generic modules as loaded - if [info exists env(LOADEDMODULES)] { - foreach mod [split $env(LOADEDMODULES) ":"] { - set g_loadedModules($mod) 1 - set g_loadedModulesGeneric([file dirname $mod]) [file tail $mod] - } - } -} - -# This proc resolves module aliases or version aliases to the real module name\ - and version -proc resolveModuleVersionOrAlias {names} { - global g_moduleVersion g_moduleDefault g_moduleAlias g_debug - - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: Resolving $names" - } - set ret_list {} - - foreach name $names { - # Chop off (default) if it exists - set x [expr [string length $name] - 9] - if {($x > 0) &&([string range $name $x end] == "\(default\)")} { - set name [string range $name 0 [expr $x -1]] - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: trimming name\ - = \"$name\"" - } - } - if {[info exists g_moduleAlias($name)]} { - # if the alias is another alias, we need to resolve it - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: $name is an\ - alias" - } - set ret_list [linsert $ret_list end\ - [resolveModuleVersionOrAlias $g_moduleAlias($name)]] - }\ - elseif {[info exists g_moduleVersion($name)]} { - # if the pseudo version is an alias, we need to resolve it - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: $name is a\ - version alias" - } - set ret_list [linsert $ret_list end\ - [resolveModuleVersionOrAlias $g_moduleVersion($name)]] - }\ - elseif {[info exists g_moduleDefault($name)]} { - # if the default is an alias, we need to resolve it - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: found a\ - default for $name" - } - set ret_list [linsert $ret_list end [resolveModuleVersionOrAlias\ - "$name/$g_moduleDefault($name)"]] - } { - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: $name is\ - nothing special" - } - set ret_list [linsert $ret_list end $name] - } - } - if {$g_debug} { - puts stderr "DEBUG resolveModuleVersionOrAlias: Resolved to $ret_list" - } - return $ret_list -} - -proc spaceEscaped {text} { - regsub -all " " $text "\\ " text - return $text -} - -proc multiEscaped {text} { - regsub -all {["'; ]} $text {\\\0} text - #" - return $text -} - -proc doubleQuoteEscaped {text} { - regsub -all "\"" $text "\\\"" text - return $text -} - -proc atSymbolEscaped {text} { - regsub -all "@" $text "\\@" text - return $text -} - -proc singleQuoteEscaped {text} { - regsub -all "\'" $text "\\\'" text - return $text -} - -proc findExecutable {cmd} { - foreach dir {/usr/X11R6/bin /usr/openwin/bin /usr/bin/X11} { - if [file executable "$dir/$cmd"] { - return "$dir/$cmd" - } - } - return $cmd -} - -proc reverseList {list} { - set newlist {} - - foreach item $list { - set newlist [linsert $newlist 0 $item] - } - return $newlist -} - -proc removeFromList {list1 item} { - eval set list2 \[list $list1 \] - set list1 {} - foreach x $list2 { - if {$x != $item && $x != "null"} { - lappend list1 $x - } - } - return [join $list1 " "] -} - -proc replaceFromList {list1 olditem newitem} { - eval set list2 \[list $list1 \] - set list1 {} - foreach x $list2 { - if {$x == $olditem} { - lappend list1 $newitem - } { - lappend list1 $x - } - } - return [join $list1 " "] -} - -proc checkValidModule {modfile} { - # Check for valid module - if {![catch {open $modfile r} fileId]} { - gets $fileId first_line - close $fileId - if {[string first "\#%Module" $first_line] == 0} { - return 1 - } - } - return 0 -} - -# If given module maps to default or other version aliases, a list of -# those aliases is returned. This takes the full path to a module as -# an argument. -proc getVersAliasList {modulename} { - global g_versionHash g_moduleDefault - - set modparent [file dirname $modulename] - - set tag_list {} - if {[info exists g_versionHash($modulename)]} { - # remove module basenames to get just version names - foreach version $g_versionHash($modulename) { - set alias_tag [file tail $version] - set tag_list [linsert $tag_list end $alias_tag] - } - } - if {[info exists g_moduleDefault($modparent)]} { - set tmp_name "$modparent/$g_moduleDefault($modparent)" - if {$tmp_name == $modulename} { - set tag_list [linsert $tag_list end "default"] - } - } - return $tag_list -} - -# Finds all module versions for mod in the module path dir -proc listModules {dir mod {full_path 1} {how {-dictionary}} {flag_default_mf\ - {1}} {flag_default_dir {1}}} { - global ignoreDir - global ModulesCurrentModulefile - global g_debug - global tcl_platform - global g_versionHash - - # On Cygwin, glob may change the $dir path if there are symlinks involved - # So it is safest to reglob the $dir. - # example: - # [glob /home/stuff] -> "//homeserver/users0/stuff" - - set dir [glob $dir] - set full_list [glob -nocomplain "$dir/$mod"] - set clean_list {} - set ModulesVersion {} - for {set i 0} {$i < [llength $full_list]} {incr i 1} { - set element [lindex $full_list $i] - set tag_list {} - - # Cygwin TCL likes to append ".lnk" to the end of symbolic links. - # This is not necessary and pollutes the module names, so let's - # trim it off. - if {$tcl_platform(platform) == "windows"} { - regsub {\.lnk$} $element {} element - } - - set tail [file tail $element] - set direlem [file dirname $element] - - set sstart [expr [string length $dir] +1] - set modulename [string range $element $sstart end] - - - if [file isdirectory $element] { - set ModulesVersion "" - if {![info exists ignoreDir($tail)]} { - # include .modulerc or if not present .version file - if [file readable $element/.modulerc] { - lappend full_list $element/.modulerc - }\ - elseif [file readable $element/.version] { - lappend full_list $element/.version - } - # Add each element in the current directory to the list - foreach f [glob -nocomplain "$element/*"] { - lappend full_list $f - } - - # if element is directory AND default or a version alias, add\ - it to the list - set tag_list [getVersAliasList $element] - - set tag {} - if [llength $tag_list] { - append tag "(" [join $tag_list ":"] ")" - if {$full_path} { - if {$flag_default_mf} { - lappend clean_list "${element}$tag" - } { - lappend clean_list ${element} - } - } { - if {$flag_default_mf} { - lappend clean_list "${modulename}$tag" - } { - lappend clean_list $modulename - } - } - } - - } - } { - if {$g_debug} { - puts stderr "DEGUG listModules: checking $element\ - ($modulename) dir=$flag_default_dir mf=$flag_default_mf" - } - switch -glob -- $tail { - {.modulerc} { - if {$flag_default_dir || $flag_default_mf} { - execute-modulerc $element - } - } - {.version} { - if {$flag_default_dir || $flag_default_mf} { - # set ModulesCurrentModulefile so it is available to\ - execute-version - set ModulesCurrentModulefile $element - execute-version "$element" - - if {$g_debug} { - puts stderr "DEGUG listModules: checking default\ - $element" - } - } - } - {.*} - - {*~} - - {*,v} - - {\#*\#} { } - default { - if {[checkValidModule $element]} { - - set tag_list [getVersAliasList $element] - - set tag {} - if [llength $tag_list] { - append tag "(" [join $tag_list ":"] ")" - } - if {$full_path} { - if {$flag_default_mf} { - lappend clean_list "${element}$tag" - } { - lappend clean_list ${element} - } - } { - if {$flag_default_mf} { - lappend clean_list "${modulename}$tag" - } { - lappend clean_list $modulename - } - } - } - } - } - } - } - if {$how != {}} { - set clean_list [lsort -dictionary $clean_list] - } - if {$g_debug} { - puts stderr "DEGUG listModules: Returning $clean_list" - } - - return $clean_list -} - - -proc showModulePath {} { - global env - if [info exists env(MODULEPATH)] { - report "Search path for module files (in search order):" - foreach path [split $env(MODULEPATH) ":"] { - report " $path" - - } - } { - reportWarning "WARNING: no directories on module search path" - } - -} - -# -# Info, Warnings and Error message handling. -# -proc reportWarning {message} { - puts stderr $message -} - -proc reportInternalBug {message} { - puts stderr "ERROR: $message\nPlease contact your local friendly\ - maintainer of the module command." - # - # future: send email to maintainer - # -} - -proc report {message {nonewline ""}} { - if {$nonewline != ""} { - puts -nonewline stderr "$message" - } { - puts stderr "$message" - } -} - - -######################################################################## -# command line commands - -proc cmdModuleList {} { - global env DEF_COLUMNS show_oneperline show_modtimes g_debug - - set list {} - report "Currently Loaded Modulefiles:" - if [info exists env(LOADEDMODULES)] { - set max 0 - foreach mod [split $env(LOADEDMODULES) ":"] { - if {$show_oneperline} { - report $mod - }\ - elseif {$show_modtimes} { - set col [expr $DEF_COLUMNS - 10] - set filetime [clock format [file mtime [lindex\ - [getPathToModule $mod] 0]]] - report [format "%-50s%10s" $mod $filetime] - } { - set len [string length $mod] - if {$len > $max} { - set max $len - } - if {$len > 0} { - # skip zero length module names - # call getPathToModule to find and execute .version and\ - .modulerc files for this module - getPathToModule $mod - set tag_list [getVersAliasList $mod] - - if [llength $tag_list] { - append mod "(" [join $tag_list ":"] ")" - # expand string length to include version alises - set len [string length $mod] - if {$len > $max} { - set max $len - } - } - - lappend list $mod - } - } - } - if {$show_oneperline ==0 && $show_modtimes == 0} { - # save room for numbers and spacing: 2 digits + ) + space + space - set col_width [expr $max +5] - if [info exist env(COLUMNS)] { - set cols [expr int($env(COLUMNS)/$col_width)] - } { - set cols [expr int($DEF_COLUMNS/$col_width)] - } - # safety check to prevent divide by zero error below - if {$cols <= 0} { - set cols 1 - } - - set item_cnt [llength $list] - set rows [expr int($item_cnt / $cols)] - set lastrow_item_cnt [expr int($item_cnt % $cols)] - if {$lastrow_item_cnt > 0} { - incr rows - } - if {$g_debug} { - report "list = $list" - report "rows/cols = $rows/$cols, max = $max" - report "item_cnt = $item_cnt, lastrow_item_cnt =\ - $lastrow_item_cnt" - } - for {set row 0} {$row < $rows} {incr row} { - for {set col 0} {$col < $cols} {incr col} { - set index [expr $col * $rows + $row] - set mod [lindex $list $index] - - if {$mod != ""} { - set n [expr $index +1] - set mod [format "%2d) %-${max}s " $n $mod] - report $mod -nonewline - } - } - report "" - } - } - } -} - -proc cmdModuleDisplay {mod} { - global env tcl_version ModulesCurrentModulefile - - set modfile [getPathToModule $mod] - if {$modfile != ""} { - pushModuleName [lindex $modfile 1] - set modfile [lindex $modfile 0] - report\ - "-------------------------------------------------------------------" - report "$modfile:\n" - pushMode "display" - execute-modulefile $modfile - popMode - popModuleName - report\ - "-------------------------------------------------------------------" - } -} - -proc cmdModulePaths {mod} { - global env g_pathList flag_default_mf flag_default_dir - - catch { - foreach dir [split $env(MODULEPATH) ":"] { - if [file isdirectory $dir] { - foreach mod2 [listModules $dir $mod 0 "" $flag_default_mf\ - $flag_default_dir] { - lappend g_pathList $mod2 - } - } - } - } errMsg - if {$errMsg != ""} { - reportWarning "ERROR: module paths $mod failed. $errMsg" - } -} - -proc cmdModulePath {mod} { - global env g_pathList ModulesCurrentModulefile - - set modfile [getPathToModule $mod] - if {$modfile != ""} { - set modfile [lindex $modfile 0] - set ModulesCurrentModulefile $modfile - - set g_pathList $modfile - } -} - -proc cmdModuleWhatIs {{mod {}}} { - cmdModuleSearch $mod {} -} - -proc cmdModuleApropos {{search {}}} { - cmdModuleSearch {} $search -} - -proc cmdModuleSearch {{mod {}} {search {}}} { - global env tcl_version ModulesCurrentModulefile - global g_whatis - - if {$mod == ""} { - set mod "*" - } - foreach dir [split $env(MODULEPATH) ":"] { - if [file isdirectory $dir] { - report "----------- $dir ------------- " - set modlist [listModules $dir $mod 0 "" 0 0] - foreach mod2 $modlist { - set g_whatis "" - set modfile [getPathToModule $mod2] - if {$modfile != ""} { - pushMode "whatis" - pushModuleName [lindex $modfile 1] - set modfile [lindex $modfile 0] - execute-modulefile $modfile - popMode - popModuleName - if {$search =="" || [regexp -nocase $search $g_whatis]} { - report [format "%20s: %s" $mod2 $g_whatis] - } - } - } - } - } -} - -proc cmdModuleSwitch {old {new {}}} { - global env g_debug g_loadedModulesGeneric g_loadedModules - - if {$new == ""} { - set new $old - } - - if {[info exists g_loadedModules($old)]} { - } { - if [info exists g_loadedModulesGeneric($old)] { - set old "$old/$g_loadedModulesGeneric($old)" - } - } - - if {$g_debug} { - puts stderr "new=\"$new\" old=\"$old\"" - } - - set loadedlist [split $env(LOADEDMODULES) ":"] - set x [lsearch $loadedlist $old] - if {$x >= 0} { - set updatelist [lrange $loadedlist $x end] - set revupdatelist [reverseList $updatelist] - - # Unload $old and everything after it - foreach mod $revupdatelist { - cmdModuleUnload $mod - } - - # Reload $old and everything after it - foreach mod $updatelist { - if {$mod == $old} { - cmdModuleLoad $new - } { - cmdModuleLoad $mod - } - } - } { - puts stderr "Unable to find module $old in loaded list" - } -} - -proc cmdModuleSource {args} { - global env tcl_version g_loadedModules g_loadedModulesGeneric g_force - - foreach file $args { - if [file exists $file] { - pushMode "load" - pushModuleName $file - execute-modulefile $file - popModuleName - popMode - } { - error "File $file does not exist" - } - } -} - -proc cmdModuleLoad {args} { - global env tcl_version g_loadedModules g_loadedModulesGeneric g_force - global ModulesCurrentModulefile - global g_debug - - if {$g_debug} { - puts stderr "DEBUG cmdModuleLoad: loading $args" - } - - foreach mod $args { - set modfile [getPathToModule $mod] - if {$modfile != ""} { - set currentModule [lindex $modfile 1] - set modfile [lindex $modfile 0] - set ModulesCurrentModulefile $modfile - - if {$g_force || ! [info exists g_loadedModules($currentModule)]} { - pushMode "load" - pushModuleName $currentModule - - saveSettings - if [execute-modulefile $modfile] { - restoreSettings - } { - append-path LOADEDMODULES $currentModule - set g_loadedModules($currentModule) 1 - set genericModName [file dirname $mod] - - if {![info exists\ - g_loadedModulesGeneric($genericModName)]} { - set g_loadedModulesGeneric($genericModName) [file tail\ - $currentModule] - } - } - - popMode - popModuleName - } - } - } -} - -proc cmdModuleUnload {args} { - global env tcl_version g_loadedModules g_loadedModulesGeneric - global ModulesCurrentModulefile g_debug - - if {$g_debug} { - puts stderr "DEBUG cmdModuleUnload: unloading $args" - } - - foreach mod $args { - catch { - set modfile [getPathToModule $mod] - if {$modfile != ""} { - set currentModule [lindex $modfile 1] - set modfile [lindex $modfile 0] - set ModulesCurrentModulefile $modfile - - if [info exists g_loadedModules($currentModule)] { - pushMode "unload" - pushModuleName $currentModule - saveSettings - if [execute-modulefile $modfile] { - restoreSettings - } { - unload-path LOADEDMODULES $currentModule - unset g_loadedModules($currentModule) - if [info exists g_loadedModulesGeneric([file dirname\ - $currentModule])] { - unset g_loadedModulesGeneric([file dirname\ - $currentModule]) - } - } - - popMode - popModuleName - } - } { - if [info exists g_loadedModulesGeneric($mod)] { - set mod "$mod/$g_loadedModulesGeneric($mod)" - } - unload-path LOADEDMODULES $mod - if [info exists g_loadedModules($mod)] { - unset g_loadedModules($mod) - } - if [info exists g_loadedModulesGeneric([file dirname $mod])] { - unset g_loadedModulesGeneric([file dirname $mod]) - } - } - } errMsg - if {$errMsg != ""} { - reportWarning "ERROR: module: module unload $mod failed.\n$errMsg" - } - } -} - - -proc cmdModulePurge {} { - global env - - if [info exists env(LOADEDMODULES)] { - set list [split $env(LOADEDMODULES) ":"] - eval cmdModuleUnload $list - } -} - - -proc cmdModuleReload {} { - global env - - if [info exists env(LOADEDMODULES)] { - set list [split $env(LOADEDMODULES) ":"] - set rlist [reverseList $list] - foreach mod $rlist { - cmdModuleUnload $mod - } - foreach mod $list { - cmdModuleLoad $mod - } - } -} - -proc system {mycmd args} { - global g_systemList - - set mode [currentMode] - set mycmd [join [concat $mycmd $args] " "] - - if {$mode == "load"} { - lappend g_systemList $mycmd - }\ - elseif {$mode == "unload"} { - # No operation here unable to undo a syscall. - }\ - elseif {$mode == "display"} { - report "system\t$mycmd" - } - return {} -} - -proc cmdModuleAvail {{mod {*}}} { - global env ignoreDir DEF_COLUMNS flag_default_mf flag_default_dir - global show_oneperline show_modtimes - - if {$show_modtimes} { - report "- Package -----------------------------+- Versions -+- Last\ - mod. ------" - } - - foreach dir [split $env(MODULEPATH) ":"] { - if [file isdirectory $dir] { - report "------------ $dir ------------ " - set list [listModules $dir $mod 0 "" $flag_default_mf\ - $flag_default_dir] - if {$show_modtimes} { - foreach i $list { - set col [expr $DEF_COLUMNS - 10] - set filetime [clock format [file mtime [lindex\ - [getPathToModule $i] 0]]] - report [format "%-50s%10s" $i $filetime] - } - }\ - elseif {$show_oneperline} { - foreach i $list { - report "$i" - } - } { - set max 0 - foreach mod2 $list { - if {[string length $mod2] > $max} { - set max [string length $mod2] - } - } - incr max 1 - if [info exist env(COLUMNS)] { - set cols [expr int($env(COLUMNS)/($max))] - } { - set cols [expr int($DEF_COLUMNS/($max))] - } - # safety check to prevent divide by zero error below - if {$cols <= 0} { - set cols 1 - } - - # There is no '{}' at the begining of this 'list' as there is\ - in cmd - # ModuleList - ? - set item_cnt [expr [llength $list] - 0] - set rows [expr int($item_cnt / $cols)] - set lastrow_item_cnt [expr int($item_cnt % $cols)] - if {$lastrow_item_cnt > 0} { - incr rows - } - for {set row 0} {$row < $rows} {incr row} { - for {set col 0} {$col < $cols} {incr col} { - set index [expr $col * $rows + $row] - set mod2 [lindex $list $index] - if {$mod2 != ""} { - set mod2 [format "%-${max}s" $mod2] - report $mod2 -nonewline - } - } - report "" - } - } - } - } -} - - -proc cmdModuleUse {args} { - - if {$args == ""} { - showModulePath - } { - set stuff_path "prepend-path" - foreach path $args { - if {$path == ""} { - # Skip "holes" - }\ - elseif {($path == "--append") ||($path == "-a") ||($path ==\ - "-append")} { - set stuff_path "append-path" - }\ - elseif {($path == "--prepend") ||($path == "-p") ||($path ==\ - "-prepend")} { - set stuff_path "prepend-path" - }\ - elseif [file isdirectory $path] { - pushMode "load" - eval $stuff_path MODULEPATH $path - popMode - } { - # reportWarning "WARNING: Directory \"$path\" does not exist,\ - not added to module search path." - puts stderr "+(0):WARN:0: Directory '$path' not found" - } - } - } -} - - -proc cmdModuleUnuse {args} { - - if {$args == ""} { - showModulePath - } { - global env - foreach path $args { - regsub -all {\/} $path {\/} escpath - set regexp [subst {(^|\:)${escpath}(\:|$)}] - if {[info exists env(MODULEPATH)] && [regexp $regexp\ - $env(MODULEPATH)]} { - - set oldMODULEPATH $env(MODULEPATH) - pushMode "unload" - catch { - unload-path MODULEPATH $path - } - popMode - if {[info exists env(MODULEPATH)] && $oldMODULEPATH ==\ - $env(MODULEPATH)} { - reportWarning "WARNING: Did not unuse $path" - } - } - } - } -} - - -proc cmdModuleDebug {} { - global env - - foreach var [array names env] { - set sharevar "${var}_modshare" - array set countarr [getReferenceCountArray $var] - - foreach path [array names countarr] { - report "$var\t$path\t$countarr($path)" - } - unset countarr - } - foreach dir [split $env(PATH) ":"] { - foreach file [glob -nocomplain -- "$dir/*"] { - if [file executable $file] { - set exec [file tail $file] - lappend execcount($exec) $file - } - } - } - foreach file [lsort -dictionary [array names execcount]] { - if {[llength $execcount($file)] > 1} { - report "$file:\t$execcount($file)" - } - } -} - -proc cmdModuleAutoinit {} { - global g_autoInit - set g_autoInit 1 -} - -proc cmdModuleInit {args} { - - global g_shell env g_debug - set moduleinit_cmd [lindex $args 0] - set notdone 1 - set notclear 1 - - # Define startup files for each shell - set files(csh) [list ".modules" ".cshrc" ".cshrc_variables" ".login"] - set files(tcsh) [list ".modules" ".tcshrc" ".cshrc" ".cshrc_variables"\ - ".login"] - set files(sh) [list ".modules" ".bash_profile" ".bash_login" ".profile"\ - ".bashrc"] - set files(bash) $files(sh) - set files(ksh) $files(sh) - set files(zsh) [list ".modules" ".zshrc" ".zshenv" ".zlogin"] - - array set nargs { - list 0 - add 1 - load 1 - prepend 1 - rm 1 - unload 1 - switch 2 - clear 0 - } - - # Process startup files for this shell - set current_files $files($g_shell) - foreach filename $current_files { - if {$notdone && $notclear} { - set filepath $env(HOME) - append filepath "/" $filename - # create a new file to put the changes in - set newfilepath "$filepath-NEW" - - if {$g_debug} { - puts stderr "DEBUG: Looking at: $filepath" - } - if {[file readable $filepath] && [file isfile $filepath]} { - set fid [open $filepath r] - - if {[expr [llength $args] -1] != $nargs($moduleinit_cmd)} { - error "'module init$moduleinit_cmd' requires exactly\ - $nargs($moduleinit_cmd) arg(s)." - # cmdModuleHelp - exit -1 - } - - # Only open the new file if we are not doing "initlist" - if {[string compare $moduleinit_cmd "list"] != 0} { - set newfid [open $newfilepath w] - } - - while {[gets $fid curline] >= 0} { - # Find module load/add command in startup file - set comments {} - if {$notdone && [regexp {^([ \t]*module[ \t]+(load|add)[\ - \t]+)(.*)} $curline match cmd subcmd modules]} { - regexp {([ \t]*\#.+)} $modules match comments - regsub {\#.+} $modules {} modules - # remove existing references to the named module from\ - the list - # Change the module command line to reflect the given\ - command - switch $moduleinit_cmd { - list { - puts stderr "$g_shell initialization file\ - $filepath loads modules: $modules" - } - add { - set newmodule [lindex $args 1] - set modules [removeFromList $modules $newmodule] - append modules " $newmodule" - puts $newfid "$cmd$modules$comments" - set notdone 0 - } - prepend { - set newmodule [lindex $args 1] - set modules [removeFromList $modules $newmodule] - set modules "$newmodule $modules" - puts $newfid "$cmd$modules$comments" - set notdone 0 - } - rm { - set oldmodule [lindex $args 1] - set modules [removeFromList $modules $oldmodule] - if {[llength $modules] == 0} { - set modules "null" - } - puts $newfid "$cmd$modules$comments" - set notdone 0 - } - switch { - set oldmodule [lindex $args 1] - set newmodule [lindex $args 2] - set modules [replaceFromList $modules\ - $oldmodule $newmodule] - puts $newfid "$cmd$modules$comments" - set notdone 0 - } - clear { - set modules "null" - puts $newfid "$cmd$modules$comments" - set notclear 0 - } - default { - puts stderr "Command init$moduleinit_cmd not\ - recognized" - } - } - } { - # copy the line from the old file to the new - if {[info exists newfid]} { - puts $newfid $curline - } - } - } - close $fid - if {[info exists newfid]} { - close $newfid - if {[catch "file copy -force $filepath $filepath-OLD"] !=\ - 0} { - puts stderr "Failed to back up original\ - $filepath...exiting" - exit -1 - } - if {[catch "file copy -force $newfilepath $filepath"] !=\ - 0} { - puts stderr "Failed to write $filepath...exiting" - exit -1 - } - } - } - } - } -} - -proc cmdModuleHelp {args} { - global done - - set done 0 - foreach arg $args { - if {$arg != ""} { - set modfile [getPathToModule $arg] - - if {$modfile != ""} { - pushModuleName [lindex $modfile 1] - set modfile [lindex $modfile 0] - report\ - "-------------------------------------------------------------------" - report "Module Specific Help for $modfile:\n" - set mode "Help" - execute-modulefile-help $modfile - popMode - popModuleName - report\ - "-------------------------------------------------------------------" - } - set done 1 - } - } - if {$done == 0} { - report { - ModulesTcl 0.101/$Revision: 1.69 $: - Available Commands and Usage: -list | add|load modulefile [modulefile ...] -purge | rm|unload modulefile [modulefile ...] -reload | switch|swap [oldmodulefile] newmodulefile - | display|show modulefile [modulefile ...] - | avail [modulefile [modulefile ...]] - | whatis [modulefile [modulefile ...]] - | help [modulefile [modulefile ...]] - | path modulefile - | paths modulefile - | use dir [dir ...] - | unuse dir [dir ...] - | source scriptfile - | apropos|keyword string - | -initlist | initadd modulefile -initclear | initprepend modulefile - | initrm modulefile - } - } -} - - -######################################################################## -# main program - -# needed on a gentoo system. Shouldn't hurt since it is -# supposed to be the default behavior -fconfigure stderr -translation auto - -# Parse options -set opt [lindex $argv 1] -switch -regexp -- $opt { -{^-deb} { - set g_debug 1 - puts stderr "DEBUG : debug enabled" - - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--verb} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--for} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--ter} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--lon} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--cre} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--us} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--ica} { - # BOZO nothing to do with --verbose yet - # only remove options here. Some module commands have options also,\ - which should - # be preserved - set argv [removeFromList $argv $opt] - } -{^--ver} { - puts stderr "$MODULES_CURRENT_VERSION" - exit 0 - } -{^--} { - puts stderr "+(0):ERROR:0: Unrecognized option '$opt'" - exit -1 - } -} - -set g_shell [lindex $argv 0] -set command [lindex $argv 1] -set argv [lreplace $argv 0 1] - -switch -regexp -- $g_shell { -^(sh|bash|ksh|zsh)$ { - set g_shellType sh - } -^(csh|tcsh)$ { - set g_shellType csh - } -^(perl)$ { - set g_shellType perl - } -^(python)$ { - set g_shellType python - } -^(lisp)$ { - set g_shellType lisp - } -. { - error " +(0):ERROR:0: Unknown shell type \'($g_shell)\'" - } -} - -cacheCurrentModules - -# Find and execute any .modulerc file found in the module directories defined\ - in env(MODULESPATH) -runModulerc -# Resolve any aliased module names - safe to run nonmodule arguments -if {$g_debug} { - puts stderr "DEBUG: Resolving $argv" -} - -if {[lsearch $argv "-t"] >= 0} { - set show_oneperline 1 - set argv [removeFromList $argv "-t"] -} -if {[lsearch $argv "-l"] >= 0} { - set show_modtimes 1 - set argv [removeFromList $argv "-l"] -} -set argv [resolveModuleVersionOrAlias $argv] -if {$g_debug} { - puts stderr "DEBUG: Resolved $argv" -} - -catch { - switch -regexp -- $command { - {^av} { - if {$argv != ""} { - foreach arg $argv { - cmdModuleAvail $arg - } - } { - cmdModuleAvail - } - } - {^li} { - cmdModuleList - } - {^(di|show)} { - foreach arg $argv { - cmdModuleDisplay $arg - } - } - {^(add|load)} { - eval cmdModuleLoad $argv - renderSettings - } - {^source} { - eval cmdModuleSource $argv - renderSettings - } - {^paths} { - # HMS: We probably don't need the eval - eval cmdModulePaths $argv - renderSettings - } - {^path} { - # HMS: We probably don't need the eval - eval cmdModulePath $argv - renderSettings - } - {^pu} { - cmdModulePurge - renderSettings - } - {^sw} { - eval cmdModuleSwitch $argv - renderSettings - } - {^(rm|unload)} { - eval cmdModuleUnload $argv - renderSettings - } - {^use$} { - eval cmdModuleUse $argv - renderSettings - } - {^unuse$} { - eval cmdModuleUnuse $argv - renderSettings - } - {^wh} { - if {$argv != ""} { - foreach arg $argv { - cmdModuleWhatIs $arg - } - } { - cmdModuleWhatIs - } - } - {^apropos$} { - eval cmdModuleApropos $argv - } - {^debug$} { - eval cmdModuleDebug - } - {^rel} { - cmdModuleReload - renderSettings - } - {^init(add|load)$} { - eval cmdModuleInit add $argv - } - {^initprepend$} { - eval cmdModuleInit prepend $argv - } - {^initswitch$} { - eval cmdModuleInit switch $argv - } - {^init(rm|unload)$} { - eval cmdModuleInit rm $argv - } - {^initlist$} { - eval cmdModuleInit list $argv - } - {^initclear$} { - eval cmdModuleInit clear $argv - } - {^autoinit$} { - cmdModuleAutoinit - renderSettings - } - help { - cmdModuleHelp $argv - } - . { - reportWarning "ERROR: command '$command' not recognized" - cmdModuleHelp $argv - } - } -} errMsg - -if {$errMsg != ""} { - reportWarning "ERROR: $errMsg" -} - -# ;;; Local Variables: *** -# ;;; mode:tcl *** -# ;;; End: *** From d9f2c3d9704298b6603ac35adbcfc856a337d4bf Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Wed, 19 Dec 2012 09:08:39 -0800 Subject: [PATCH 14/54] Added a python script by Marcus D. Hanwell to automatically generate the ChangeLog. Also no reason to manage ChangeLog under code management. --- .gitignore | 1 + ChangeLog | 6425 ------------------------------------------- Makefile.am | 17 +- NEWS | 1 + cvs2cl.pl | 2344 ---------------- gitlog2changelog.py | 128 + 6 files changed, 139 insertions(+), 8777 deletions(-) delete mode 100644 ChangeLog delete mode 100755 cvs2cl.pl create mode 100755 gitlog2changelog.py diff --git a/.gitignore b/.gitignore index 00bb8fc17..4aad26778 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.o aclocal.m4 autom4te.cache +ChangeLog config.h config.h.in config.log diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index a263a915b..000000000 --- a/ChangeLog +++ /dev/null @@ -1,6425 +0,0 @@ -Do Not Edit! This is a generated file. - You should edit the NEWS file instead. - -2011-11-11 07:04 rkowen - - * ModuleCmd_Purge.c, ModuleCmd_Update.c, ModuleCmd_Use.c, NEWS, - cmdPath.c, cmdSetenv.c, init.c, modules_def.h, utility.c, - version.c: Crucial bug fix ... TclGetEnv/TclSetEnv are Tcl - routines, so renamed these to EMGetEnv/EMSetEnv. Fix due to Orion - Poplawski. - -2011-11-10 12:21 rkowen - - * NEWS: Updated with current 3.2.9 info. - -2011-11-10 10:07 rkowen - - * NEWS, version.c: Preparation for distribution. - -2011-10-24 13:44 rkowen - - * NEWS, cmdPath.c: * Removed the RegExp code from cmdPath.c (Poor - Yorick) - -2011-10-17 11:11 rkowen - - * Makefile.am, NEWS, init.c, utility.c, init/Makefile.am, - init/ruby.rb.in: Rolled in the ruby addition from Tammo Tjarks. - -2011-10-17 10:16 rkowen - - * init/ruby.rb.in: file ruby.rb.in was initially added on branch - modules-3-2-9. - -2011-10-17 10:16 rkowen - - * Makefile.am, NEWS, init.c, utility.c, init/Makefile.am, - init/ruby.rb.in: * Added support for Ruby (Tammo Tjarks) - -2011-10-13 13:31 rkowen - - * ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, NEWS, cmdConflict.c, cmdIsLoaded.c, - cmdSetenv.c, init.c, modules_def.h, utility.c, - modulefiles/module-info.in: * Fixed unload & load of same module - problem (Bug 3211669). - -2011-10-11 07:53 sirdude - - * tcl/modulecmd.tcl: Remove outer loop for aliases in csh/sh type - shells and fix it so sh shells us unalias - - Kent - -2011-10-10 14:53 rkowen - - * cmdInfo.c: Even though "trace" is no longer used ... should still - have module-info still respond with "*undef*", so older modulefiles - can still be processed without a Tcl error. - -2011-10-07 10:28 sirdude - - * tcl/modulecmd.tcl: This is a patch provided by Wilson Snyder to - fix up the regsub statements - - I also silenced a few warnings produced by nagelfar(a syntax - checker for tcl) Basically it simplified a couple of the if - statements by using a temp variable. - - Kent - -2011-10-06 14:33 rkowen - - * cmdConflict.c: Fixed bug-3300132 prereq error format problem. - -2011-10-06 12:19 rkowen - - * ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c, - ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdPath.c, cmdSetenv.c, - init.c, modules_def.h, utility.c, utilmem.c: * Fixed the "module - purge" memory corruption (Poor Yorick). * Isolated calls to the - new interpreter and get & set env.vars. - -2011-10-06 10:10 rkowen - - * NEWS, cmdPath.c, utility.c: * Fixed the module purge corruption - (Poor Yorick) - -2011-10-06 09:59 rkowen - - * NEWS: Updated with module purge fix - -2011-10-03 14:36 rkowen - - * cmdPath.c, utility.c: Rolled in Poor Yorick's changes to - Remove_Path() which fixes the memory corruption of "module purge". - -2011-10-03 13:25 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Update.c, NEWS, cmdLog.c, - cmdVersion.c, cmdWhatis.c, error.c, locate_module.c, modules_def.h, - utility.c: * Optionally use Tcl memory check routines for - malloc/realloc. - -2011-10-03 12:31 rkowen - - * ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c, - ModuleCmd_Purge.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdPath.c, cmdSetenv.c, - init.c, modules_def.h, utility.c: * Isolated calls to the new - interpreter and get & set env.vars. - -2011-09-29 12:04 rkowen - - * testsuite/config/unix.exp: Simplified the comp_output procedure - ... due to Poor Yorick. - -2011-09-29 10:55 rkowen - - * cmdPath.c: Change the strcpy to memmove because of possible - memory overlap. - -2011-09-19 13:45 rkowen - - * configure.ac: Removed the explicit call to AM_PO_SUBDIRS, which - is already invoked by the AM_GNU_GETTEXT. Patch thanks to "Poor - Yorick". - -2011-09-13 12:25 sirdude - - * tcl/modulecmd.tcl: Patch from Andy Wettstein so that aliases work - again with bash and other sh like shells. - - Kent - -2011-08-12 08:50 sirdude - - * tcl/modulecmd.tcl: Fix provided by Thomas Zeiser. ( A missing ; - ) - - Kent - -2011-06-17 10:20 sirdude - - * tcl/modulecmd.tcl: Patch by Larry Baker to bring the tcl version - more inline with the c version. - - Kent - -2011-05-13 13:31 sirdude - - * tcl/modulecmd.tcl: Patch by Larry Baker to add a 'module aliases' - command. - - Kent - -2011-05-10 13:42 sirdude - - * tcl/: Makefile, README.txt, init/Makefile: This commit is for the - tcl version of modules, it does some additional work on windows It - updates the README file which was pretty sparse - - It also redoes the Makefiles so that it will build a default - modulerc file if it doesn't exist. - - Kent - -2011-05-10 13:38 sirdude - - * tcl/modulecmd.tcl: This should fix bug# 3097451 - - I haven't tested it to make sure and the code needs more work but - it's a start. - - Kent - -2011-04-27 12:19 sirdude - - * tcl/modulecmd.tcl: Patch from Kwee Heong Tan - - This provides better support under windows. There is still more - work to do here. - - Kent - -2011-03-22 08:23 sirdude - - * tcl/modulecmd.tcl: Small patch from Wilson Snyder to improve - python support. - - Kent - -2011-03-15 10:43 sirdude - - * tcl/init/: csh.in, tcsh.in: Fix up the calls to the command so - its not doing variable substitution all of the time. - - Kent - -2011-03-15 10:41 sirdude - - * tcl/Makefile: Finally got testfiles working with the tcl version - of modules. There is still lots of work to be done but there are a - good number of tests that are working. Currently 80 of 90 are - passing. At this point I want to commit before fixing issues which - involve modifying the main application. - - Kent - -2011-03-15 10:15 sirdude - - * tcl/modulecmd.tcl: This commit does a couple of things. Bring - back the auto determine shell to call(needed for the next commit - testsuite) It also removes the need for using a temp file This - commit also has a couple of small fixes to make it more like the - standard version of modules as far as output to the screen goes. - - Kent - -2011-02-28 08:33 sirdude - - * tcl/modulecmd.tcl: This commit does a few things to modulecmd.tcl - - It cleans up some unused global vars Fixes some spacing in some - report statements as well as fixes some debugging statements - adds a ubuntu specific bit of code to uname so uname release - returns the codename of an ubuntu install - - Finally in getPathToModule I commented out the Check for aliases - bit of code This is already done at the top level so no need to do - it again. (If someone finds a case where this is needed let me - know and I'll add it back in) - - Kent - -2010-11-12 13:21 rkowen - - * doc/module.1.in: Updated the man page with regards to the package - modulefile directories. - -2010-11-12 12:16 rkowen - - * NEWS, main.c, modules_def.h, doc/module.1.in, - doc/modulefile.4.in, init/bash.in, init/cmake.in, init/csh.in, - init/ksh.in, init/perl.pm.in, init/python.py.in, init/sh.in, - init/zsh.in, modulefiles/modules.in: * Removed the $MODULESHOME - env.var. which is not used at all. - -2010-11-12 08:54 rkowen - - * Makefile.am, NEWS, configure.ac, main.c, doc/module.1.in, - init/.modulespath.in, init/Makefile.am, init/bash.in, - init/bash_completion.in, init/cmake.in, init/csh.in, init/ksh.in, - init/perl.pm.in, init/python.py.in, init/sh.in, init/zsh.in, - modulefiles/Makefile.am: * Reworked configuration and - Makefile for fine-grain control of - certain paths and config files. - -2010-11-11 11:07 rkowen - - * ModuleCmd_Load.c, NEWS: Rolled in the Modules 3.2.9 version. * - Fix the coexistence of load/remove flags (Martin Siegert) - -2010-11-11 10:58 rkowen - - * ModuleCmd_Load.c, NEWS: * Fix the coexistence of load/remove - flags (due to Martin Siegert) - -2010-11-11 10:23 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Purge.c, - ModuleCmd_Refresh.c, ModuleCmd_Switch.c, ModuleCmd_Update.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, TODO, cmdAlias.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, - cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, - cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, - cmdXResource.c, configure.ac, error.c, init.c, locate_module.c, - main.c, modules.lsm.in, modules_def.h, utility.c, version.c, - config/emtcl.m4, config/tcl.m4, doc/.cvsignore, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - etc/global/bashrc.in, etc/global/csh.modules.in, - etc/global/profile.modules.in, ext/add.ext.in, ext/mkroot.in, - init/.modulespath.in, init/Makefile.am, init/bash.in, - init/cmake.in, init/csh.in, init/ksh.in, init/perl.pm.in, - init/python.py.in, init/sh.in, init/zsh.in, - modulefiles/Makefile.am, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in, - testsuite/config/unix.exp, testsuite/modulefiles/break/2.0, - testsuite/modulefiles/info/shellsexp, - testsuite/modulefiles.deep/modulerc/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/1.0, - testsuite/modulefiles.deep/modulerc/dir1/2.0, - testsuite/modulefiles.deep/modulerc/dir2/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/2.0, - testsuite/modulefiles.deep/modulerc/dir2/3.0, - testsuite/modulefiles.deep/modulerc/dir2/1.0/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2, - testsuite/modulefiles.deep/plain/dir1/1.0, - testsuite/modulefiles.deep/plain/dir1/2.0, - testsuite/modulefiles.deep/plain/dir2/1.0, - testsuite/modulefiles.deep/plain/dir2/2.0, - testsuite/modulefiles.deep/version/.version, - testsuite/modulefiles.deep/version/dir1/.version, - testsuite/modulefiles.deep/version/dir1/1.0, - testsuite/modulefiles.deep/version/dir1/2.0, - testsuite/modulefiles.deep/version/dir2/.version, - testsuite/modulefiles.deep/version/dir2/1.0, - testsuite/modulefiles.deep/version/dir2/3.0, - testsuite/modulefiles.deep/version/dir2/2.0/.version, - testsuite/modulefiles.deep/version/dir2/2.0/rc1, - testsuite/modulefiles.deep/version/dir2/2.0/rc2, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/017-use-undo.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.50-cmds/170-swap.exp, - testsuite/modules.50-cmds/175-swap2.exp, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.70-maint/070-display.exp, - testsuite/modules.80-deep/010-init_ts.exp, - testsuite/modules.80-deep/020-load.exp, - testsuite/modules.80-deep/030-display.exp, - testsuite/modules.80-deep/040-list.exp, - testsuite/modules.80-deep/999-cleanup.exp, - testsuite/modules.90-avail/030-multiple.exp, - testsuite/modules.90-avail/050-long.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp: Setting up the - modules-3-2-9 branch. - -2010-11-04 15:02 rkowen - - * locate_module.c: Using a const char * to remove a compiler - warning message. - -2010-10-18 15:36 rkowen - - * testsuite/modulefiles.deep/modulerc/: .modulerc, dir1/.modulerc, - dir2/1.0/.modulerc: file .modulerc was added on branch - modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-18 15:36 rkowen - - * NEWS, cmdVersion.c, doc/modulefile.4.in, - testsuite/modulefiles/loc_rc3/.modulerc, - testsuite/modulefiles/loc_rc4/.modulerc, - testsuite/modulefiles.deep/modulerc/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/1.0/.modulerc: * Let the - "module-version" command use a "name" of '.' for "this" module - directory ... useful for deep modulefile directories. - -2010-10-18 10:35 sirdude - - * tcl/modulecmd.tcl: small fixes to module-info - - Kent - -2010-10-14 14:31 rkowen - - * ModuleCmd_Avail.c, configure.ac, init.c, locate_module.c, main.c, - modules_def.h: Added in a skipdirs object with the name of source - code management directories to skip, unless the directory has a - module dot file (.version or .modulerc). Fixed problem with the - po/Makefile.* - -2010-10-11 13:45 rkowen - - * cmdVersion.c, locate_module.c, modules_def.h: Rolled in some - changes from the mfiles branch. - -2010-10-11 13:16 rkowen - - * cmdVersion.c: Including a number of Dump*() routines for - displaying the linked list of modulenames or aliases. - -2010-10-11 13:04 rkowen - - * modulefiles/: Makefile.am, notavail.in: Added the notavail - modulefile ... link to this to warn the user of modulefiles that - are no longer available. - -2010-10-08 14:40 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_Load.c, - ModuleCmd_Purge.c, ModuleCmd_Switch.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, - cmdModule.c, cmdPath.c, cmdUname.c, cmdVersion.c, cmdWhatis.c, - cmdXResource.c, init.c, locate_module.c, main.c, utility.c, - utilmem.c: Simplified the conditional tests for NULL. - -2010-10-08 12:52 rkowen - - * ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdChdir.c, cmdConflict.c, - locate_module.c, modules_def.h, utility.c: Hid most of the stat() - calls behind is_(), an internal function. - -2010-10-07 15:08 rkowen - - * testsuite/modules.80-deep/020-load.exp: file 020-load.exp was - added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modules.80-deep/030-display.exp: file 030-display.exp - was added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modules.80-deep/040-list.exp: file 040-list.exp was - added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modules.80-deep/999-cleanup.exp: file 999-cleanup.exp - was added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * cmdVersion.c, locate_module.c, doc/modulefile.4.in, - testsuite/modulefiles.deep/modulerc/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/1.0, - testsuite/modulefiles.deep/modulerc/dir1/2.0, - testsuite/modulefiles.deep/modulerc/dir2/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/2.0, - testsuite/modulefiles.deep/modulerc/dir2/3.0, - testsuite/modulefiles.deep/modulerc/dir2/1.0/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2, - testsuite/modulefiles.deep/plain/dir1/1.0, - testsuite/modulefiles.deep/plain/dir1/2.0, - testsuite/modulefiles.deep/plain/dir2/1.0, - testsuite/modulefiles.deep/plain/dir2/2.0, - testsuite/modulefiles.deep/version/.version, - testsuite/modulefiles.deep/version/dir1/.version, - testsuite/modulefiles.deep/version/dir1/1.0, - testsuite/modulefiles.deep/version/dir1/2.0, - testsuite/modulefiles.deep/version/dir2/.version, - testsuite/modulefiles.deep/version/dir2/1.0, - testsuite/modulefiles.deep/version/dir2/3.0, - testsuite/modulefiles.deep/version/dir2/2.0/.version, - testsuite/modulefiles.deep/version/dir2/2.0/rc1, - testsuite/modulefiles.deep/version/dir2/2.0/rc2, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.80-deep/010-init_ts.exp, - testsuite/modules.80-deep/020-load.exp, - testsuite/modules.80-deep/030-display.exp, - testsuite/modules.80-deep/040-list.exp, - testsuite/modules.80-deep/999-cleanup.exp: Rolled in the deep - modulefile changes from version 3.2.8. - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/modulerc/dir2/.modulerc: file - .modulerc was added on branch modules-3-2-9 on 2010-11-11 18:23:19 - +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/version/: .version, dir1/.version, - dir2/.version, dir2/2.0/.version: file .version was added on branch - modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modules.80-deep/010-init_ts.exp: file 010-init_ts.exp - was added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir1/1.0, plain/dir1/1.0, - plain/dir2/1.0, version/dir1/1.0, version/dir2/1.0: file 1.0 was - added on branch modules-3-2-9 on 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir1/2.0, - modulerc/dir2/2.0, plain/dir1/2.0, plain/dir2/2.0, - version/dir1/2.0: file 2.0 was added on branch modules-3-2-9 on - 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/3.0, version/dir2/3.0: - file 3.0 was added on branch modules-3-2-9 on 2010-11-11 18:23:19 - +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/1.0/rc1, - version/dir2/2.0/rc1: file rc1 was added on branch modules-3-2-9 on - 2010-11-11 18:23:19 +0000 - -2010-10-07 15:08 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/1.0/rc2, - version/dir2/2.0/rc2: file rc2 was added on branch modules-3-2-9 on - 2010-11-11 18:23:19 +0000 - -2010-10-07 13:12 rkowen - - * modulefiles/: module-cvs.in, modules.in: Rolled in the modulefile - changes from version 3.2.8. - -2010-10-07 12:49 rkowen - - * Makefile.am: Rolled in the Makefile.am / library order fix from - version 3.2.8. - -2010-10-05 09:09 rkowen - - * doc/module.1.in: Updated with sections on initializing modules - for perl and python from version 3.2.8. - -2010-10-05 09:01 rkowen - - * ModuleCmd_Purge.c: Merged the fix for multiple module purge from - version 3.2.8. - -2010-10-04 21:06 rkowen - - * NEWS, configure.ac, config/emtcl.m4, config/tcl.m4, - testsuite/modules.70-maint/070-display.exp: Rolled in from version - 3.2.8 the configure --with-man-path option and the fixed emtcl.m4 - which corrects the --with-tcl and related options, and the - --without-x test variance. - -2010-10-04 15:06 rkowen - - * init/cmake.in: file cmake.in was added on branch modules-3-2-9 on - 2010-11-11 18:23:18 +0000 - -2010-10-04 15:06 rkowen - - * init/perl.pm.in: file perl.pm.in was added on branch - modules-3-2-9 on 2010-11-11 18:23:18 +0000 - -2010-10-04 15:06 rkowen - - * init/python.py.in: file python.py.in was added on branch - modules-3-2-9 on 2010-11-11 18:23:18 +0000 - -2010-10-04 15:06 rkowen - - * cmdConflict.c, init.c, utility.c, doc/module.1.in, - init/Makefile.am, init/cmake.in, init/perl.in, init/perl.pm.in, - init/python.in, init/python.py.in, - testsuite/modulefiles/info/shellsexp, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/017-use-undo.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/170-swap.exp, - testsuite/modules.50-cmds/175-swap2.exp, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.90-avail/030-multiple.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp: Rolled in the cmake - addition from version 3.2.8, and the new perl.pm & python.py init - files. - -2010-10-04 08:59 rkowen - - * configure.ac: Fixed --with-man-path configure option. - -2010-10-02 14:05 rkowen - - * Makefile.am, cmdVersion.c: Prevent needless warnings about - "Version symbol 'default' loops" - -2010-10-02 13:08 rkowen - - * Makefile.am: Updated the cxref generation (but doesn't generate - .h source .html files). - -2010-10-02 09:45 rkowen - - * version.c: Updated the release date. - -2010-10-02 09:42 rkowen - - * NEWS: Updated release date. - -2010-10-01 14:39 rkowen - - * config/tcl.m4: Made similar changes for --with-tclx as --with-tcl - -2010-10-01 14:17 rkowen - - * NEWS, config/emtcl.m4, config/tcl.m4, - testsuite/modules.70-maint/070-display.exp: * Fixed the configure - script for searching for tclConfig.sh and handle --without-x in - the tests. - -2010-10-01 13:01 sirdude - - * tcl/modulecmd.tcl: Patches from John Tseng, - - Fixes an issue with perl autoinit by adding tclsh to the call - - Updates to module-version. - - Kent - -2010-09-27 16:25 rkowen - - * NEWS, init.c, utility.c, doc/module.1.in, init/Makefile.am, - init/cmake.in, testsuite/modulefiles/info/shellsexp, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/017-use-undo.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/170-swap.exp, - testsuite/modules.50-cmds/175-swap2.exp, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp: * Added Nathaniel - Waisbrot's exceptional patch for CMake support with tests. - -2010-09-27 16:25 rkowen - - * init/cmake.in: file cmake.in was initially added on branch - modules-3-2-8. - -2010-09-27 16:06 rkowen - - * NEWS, doc/module.1.in, init/python.py.in: * Updated - init/python.py to eliminate 'sed' references * Added brief section - to module.1 on invoking modules for perl & python - -2010-09-27 14:44 rkowen - - * NEWS, configure.ac, main.c, init/Makefile.am, init/perl.in, - init/perl.pm.in: - * Renamed init/perl to init/perl.pm - -2010-09-27 14:44 rkowen - - * init/perl.pm.in: file perl.pm.in was initially added on branch - modules-3-2-8. - -2010-09-23 18:00 rkowen - - * ModuleCmd_Purge.c, NEWS: - * Purging a purged module list does not result in an error. (It - returned an erroneous ERR_MODULE_PATH error message before.) - -2010-09-23 16:21 rkowen - - * Makefile.am: Fixed order of objects and libraries when linking. - -2010-09-23 15:47 rkowen - - * NEWS, cmdPath.c, configure.ac: * Added the configure - --with-man-path so a system specific MANPATH could be used. Some - "man"s radically change their search path when a MANPATH exists - and when not. The default is "/usr/man:/usr/share/man" (when - both exists). - -2010-09-23 15:08 rkowen - - * NEWS, modulefiles/modules.in: - * Fixed the MANPATH in modulefiles/modules to use configure - generated values. - -2010-09-23 13:53 rkowen - - * Makefile.am, configure.ac, init/Makefile.am, init/python.in, - init/python.py.in: Renamed the init/python script to python.py . - -2010-09-23 13:53 rkowen - - * init/python.py.in: file python.py.in was initially added on - branch modules-3-2-8. - -2010-09-14 11:37 rkowen - - * modulefiles/module-cvs.in: Removed the module-cvs info on - anonymous ftp ... no longer available, and updated the aliases for - anonymous CVS access. - -2010-09-13 22:10 rkowen - - * cmdChdir.c, init/bash_completion.in, - testsuite/modulefiles/alias/1.0, testsuite/modulefiles/append/0.1, - testsuite/modulefiles/append/0.2, testsuite/modulefiles/append/1.0, - testsuite/modulefiles/append/2.1, testsuite/modulefiles/append/2.2, - testsuite/modulefiles/break/4.0, - testsuite/modulefiles/continue/1.0, - testsuite/modulefiles/continue/2.0, - testsuite/modulefiles/continue/3.0, - testsuite/modulefiles/continue/4.0, testsuite/modulefiles/exit/1.0, - testsuite/modulefiles/exit/2.0, testsuite/modulefiles/exit/3.0, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modulefiles/prepend/1.0, - testsuite/modulefiles/prepend/2.1, - testsuite/modulefiles/prepend/2.2, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/175-swap2.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.50-cmds/999-cleanup.exp: Merged in the 3-2-7 - files missed from 3-2-0-tag. - -2010-09-13 20:59 rkowen - - * NEWS, cmdVersion.c, locate_module.c, doc/modulefile.4.in, - testsuite/modulefiles.deep/modulerc/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/.modulerc, - testsuite/modulefiles.deep/modulerc/dir1/1.0, - testsuite/modulefiles.deep/modulerc/dir1/2.0, - testsuite/modulefiles.deep/modulerc/dir2/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/2.0, - testsuite/modulefiles.deep/modulerc/dir2/3.0, - testsuite/modulefiles.deep/modulerc/dir2/1.0/.modulerc, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc1, - testsuite/modulefiles.deep/modulerc/dir2/1.0/rc2, - testsuite/modulefiles.deep/plain/dir1/1.0, - testsuite/modulefiles.deep/plain/dir1/2.0, - testsuite/modulefiles.deep/plain/dir2/1.0, - testsuite/modulefiles.deep/plain/dir2/2.0, - testsuite/modulefiles.deep/version/.version, - testsuite/modulefiles.deep/version/dir1/.version, - testsuite/modulefiles.deep/version/dir1/1.0, - testsuite/modulefiles.deep/version/dir1/2.0, - testsuite/modulefiles.deep/version/dir2/.version, - testsuite/modulefiles.deep/version/dir2/1.0, - testsuite/modulefiles.deep/version/dir2/3.0, - testsuite/modulefiles.deep/version/dir2/2.0/.version, - testsuite/modulefiles.deep/version/dir2/2.0/rc1, - testsuite/modulefiles.deep/version/dir2/2.0/rc2, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.80-deep/010-init_ts.exp, - testsuite/modules.80-deep/020-load.exp, - testsuite/modules.80-deep/030-display.exp, - testsuite/modules.80-deep/040-list.exp, - testsuite/modules.80-deep/999-cleanup.exp, - testsuite/modules.90-avail/030-multiple.exp: * Handle the - .modulerc/.version in deep modulefile dirs, Patches thanks to - Lindsay Todd, and others. * Note that .version takes precedence - over .modulerc files. * Added a short set of tests - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/modulerc/: .modulerc, dir1/.modulerc, - dir2/.modulerc, dir2/1.0/.modulerc: file .modulerc was initially - added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/version/: dir1/.version, - dir2/.version, dir2/2.0/.version: file .version was initially added - on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modules.80-deep/010-init_ts.exp: file 010-init_ts.exp - was initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modules.80-deep/020-load.exp: file 020-load.exp was - initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modules.80-deep/030-display.exp: file 030-display.exp - was initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modules.80-deep/040-list.exp: file 040-list.exp was - initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir1/1.0, plain/dir1/1.0, - plain/dir2/1.0, version/dir1/1.0, version/dir2/1.0: file 1.0 was - initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir1/2.0, - modulerc/dir2/2.0, plain/dir1/2.0, plain/dir2/2.0, - version/dir1/2.0: file 2.0 was initially added on branch - modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/3.0, version/dir2/3.0: - file 3.0 was initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modules.80-deep/999-cleanup.exp: file 999-cleanup.exp - was initially added on branch modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/1.0/rc1, - version/dir2/2.0/rc1: file rc1 was initially added on branch - modules-3-2-8. - -2010-09-13 20:59 rkowen - - * testsuite/modulefiles.deep/: modulerc/dir2/1.0/rc2, - version/dir2/2.0/rc2: file rc2 was initially added on branch - modules-3-2-8. - -2010-07-27 12:09 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Purge.c, - ModuleCmd_Refresh.c, ModuleCmd_Switch.c, ModuleCmd_Update.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, TODO, cmdAlias.c, - cmdChdir.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, - cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, - cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, - cmdXResource.c, configure.ac, error.c, init.c, locate_module.c, - main.c, modules.lsm.in, modules_def.h, utility.c, version.c, - config/emtcl.m4, config/tcl.m4, doc/.cvsignore, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - etc/global/bashrc.in, etc/global/csh.modules.in, - etc/global/profile.modules.in, ext/add.ext.in, ext/mkroot.in, - init/.modulespath.in, init/Makefile.am, init/bash.in, - init/bash_completion.in, init/csh.in, init/ksh.in, init/perl.in, - init/python.in, init/sh.in, init/zsh.in, modulefiles/Makefile.am, - modulefiles/dot.in, modulefiles/module-cvs.in, - modulefiles/module-info.in, modulefiles/modules.in, - modulefiles/null.in, modulefiles/use.own.in, - modulefiles/version.in, testsuite/config/unix.exp, - testsuite/modulefiles/alias/1.0, testsuite/modulefiles/append/0.1, - testsuite/modulefiles/append/0.2, testsuite/modulefiles/append/1.0, - testsuite/modulefiles/append/2.1, testsuite/modulefiles/append/2.2, - testsuite/modulefiles/break/2.0, testsuite/modulefiles/break/4.0, - testsuite/modulefiles/continue/1.0, - testsuite/modulefiles/continue/2.0, - testsuite/modulefiles/continue/3.0, - testsuite/modulefiles/continue/4.0, testsuite/modulefiles/exit/1.0, - testsuite/modulefiles/exit/2.0, testsuite/modulefiles/exit/3.0, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modulefiles/prepend/1.0, - testsuite/modulefiles/prepend/2.1, - testsuite/modulefiles/prepend/2.2, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.50-cmds/175-swap2.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.50-cmds/999-cleanup.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: Base version is 3-2-0, - then merged to 3-2-7. - -2010-05-28 12:46 sirdude - - * tcl/modulecmd.tcl: Last patch from Gerrit Renker - - This one makes it so module switch tries to swap the order if the - user messed it up. If you type: module switch new old instead of: - module switch old new it will attempt to correct it. - - Kent - -2010-05-28 09:12 sirdude - - * tcl/modulecmd.tcl: Another patch by Gerrit Renker This one makes - module display/show more similar to the c version of modules. - - Kent - -2010-05-28 09:07 sirdude - - * tcl/modulecmd.tcl: Two more patches by Gerrit Renker These two - clean up the "version" info and makes the startup files more - compatable with the c version of modules. - - Kent - -2010-05-28 07:58 sirdude - - * tcl/modulecmd.tcl: This is patch #6 from Gerrit Renker This patch - increased the CSH_LIMIT to the same as linux's default. (This - seams reasonable, if people have older machines that have issues - they can always drop it back down to a lower value) - - Kent - -2010-05-28 07:51 sirdude - - * tcl/modulecmd.tcl: This is patch #5 from Gerrit Renker This one - improves escaping of special symbols - - Kent - -2010-05-28 07:44 sirdude - - * tcl/modulecmd.tcl: Patch #4 from Gerrit Renker This one cleans up - dynamic columns and makes it autodetect - - Kent - -2010-05-27 14:18 sirdude - - * tcl/modulecmd.tcl: small typo in last patch was missing a $ - - Kent - -2010-05-27 13:17 sirdude - - * tcl/modulecmd.tcl: Patch #3 submitted by Gerrit Renker This one - fixes a heck of a lot of typo's. (Spelling isn't my strong suit) - :) - - Kent - -2010-05-27 13:09 sirdude - - * tcl/modulecmd.tcl: Two patches by Gerrit Renker - - The first one fixes an issue with sourcing a .versin/.modulerc over - and over the second one fixes up listModules so that it behaves - better. (Gerrit has submitted a number of patches, this is just - two of them) - - Kent - -2010-05-24 09:01 sirdude - - * tcl/modulecmd.tcl: This is a patch by Gerrit Renker to fix an - issue with _LMFILES_ not having correct data when nesting module - load/unload commands inside of other modules. - - Kent - -2010-05-22 15:03 rkowen - - * PROBLEMS: Trivial change. - -2009-11-16 15:22 rkowen - - * ModuleCmd_Avail.c, cmdInfo.c, cmdVersion.c, locate_module.c, - main.c, modules_def.h: A working version of "module-alias", which - simplifies the semantics. An alias is just a replacement string or - another alias. - -2009-11-12 12:08 rkowen - - * testsuite/modulefiles.deep/version/: .version, module: Adding a - deep modulefile test directory. - -2009-11-12 12:08 rkowen - - * testsuite/modulefiles.deep/version/.version: file .version was - added on branch modules-3-2-8 on 2010-09-14 03:59:24 +0000 - -2009-11-12 12:08 rkowen - - * testsuite/modulefiles.deep/version/.version: file .version was - initially added on branch mfiles2. - -2009-11-12 12:08 rkowen - - * testsuite/modulefiles.deep/version/module: file module was - initially added on branch mfiles2. - -2009-11-09 13:15 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_List.c, ModuleCmd_Load.c, - cmdModule.c, cmdVersion.c, init.c, locate_module.c, main.c, - modules_def.h, utility.c: Crafted first working version of - Locate_Module() - -2009-10-15 15:33 rkowen - - * modulefiles/.cvsignore: Ignore the generated notavail modulefile - -2009-10-15 15:32 rkowen - - * modulefiles/notavail.in: file notavail.in was added on branch - mfiles on 2010-10-11 20:04:42 +0000 - -2009-10-15 15:32 rkowen - - * NEWS, configure.ac, modulefiles/Makefile.am, - modulefiles/notavail.in: * Added the "notavail" modulefile (as - shown in man page) - -2009-10-15 13:32 rkowen - - * init.c, locate_module.c, main.c: Resolved some minor warnings. - -2009-10-15 12:08 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Whatis.c, NEWS, PROBLEMS, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdVersion.c, - configure.ac, error.c, init.c, locate_module.c, main.c, - modules_def.h, ovec.c, ovec.h, utility.c, utilobj.c, uvec.c, - testsuite/etc/modulerc, testsuite/etc/rc, - testsuite/modules.20-locate/060-rc.exp: Allow loading and unloading - the .modulerc & .version files Removed the Tcl intrepretor from - many of the locate_modulefile utility routines. Simplified the - error code with uvec. Added "tag" to MHash object for existence - testing. Passes all tests but 2 generate "duplicate version symbol - ... found". Merged in from the mfiles branch. - -2009-10-12 12:41 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, - cmdConflict.c, cmdIsLoaded.c, locate_module.c, main.c, - modules_def.h, utility.c, testsuite/modules.10-use/040-load.exp: - Merged in the 'mpath' branch changes. - -2009-10-12 12:37 rkowen - - * testsuite/modules.10-use/040-load.exp: file 040-load.exp was - initially added on branch mpath. - -2009-10-12 12:37 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, - cmdConflict.c, cmdIsLoaded.c, locate_module.c, main.c, - modules_def.h, utility.c, testsuite/modules.10-use/040-load.exp: - Instead of having all the various pieces do a SplitIntoList() on - the MODULEPATH env.var. just do it once in the main() routine and - use the global ModulePath vector elsewhere. - -2009-09-22 11:59 rkowen - - * init/: .modulespath.in, Makefile.am, bash.in, csh.in, ksh.in, - python.in, sh.in, zsh.in: Merged in the final of the 3.2.7b changes - to the init/ files. - -2009-09-22 11:40 rkowen - - * init/.modulespath.in: Need the versioning path "noise". - -2009-09-22 11:13 rkowen - - * init/Makefile.am: Need to do the same thing with @BASEPREFIX@. - -2009-09-22 11:02 rkowen - - * init/Makefile.am: Removed the hard-coded version ... let - configure paste it in. - -2009-09-22 10:40 rkowen - - * init/: bash.in, csh.in, ksh.in, python.in, sh.in, zsh.in: Added a - ';' after the last sed command to avoid problems with the Solaris - sed. - -2009-09-22 10:20 rkowen - - * NEWS: Updated. - -2009-09-22 10:19 rkowen - - * doc/.cvsignore, init/bash.in, init/csh.in, init/ksh.in, - init/python.in, init/sh.in, init/zsh.in: Fixed a compatibility - issue with sed on Solaris (no \t). Added a patch for the python - init script submitted by Mark Bergman - -2009-09-22 09:26 rkowen - - * Makefile.am: Added init/bash_completion.in into the distribution - list. - -2009-09-22 09:25 rkowen - - * init/: bash.in, csh.in, ksh.in, python.in, sh.in, zsh.in: Changed - the sed '\t' to a tab char so it would work on Solaris. - -2009-09-22 09:11 rkowen - - * Makefile.am: Added the init/bash_completion.in to the - distribution list. - -2009-09-16 12:19 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_List.c, ModuleCmd_Load.c, - locate_module.c, modules_def.h: Allow SourceRC() and SourceVers() - to load or unload the given .modulerc or .version file, to - anticipate deep modulefile directories. - -2009-09-16 12:16 rkowen - - * init.c, main.c: Moved psep (path separator) initialization to - Initialize_Module() right after interpretor is created. - -2009-09-16 12:13 rkowen - - * utility.c: Protect against non-existant MHash objects, which - tends to drop core. - -2009-09-16 12:11 rkowen - - * utilobj.c: Added Tcl_FreeObjv() to clean-up after - Tcl_ArgvToObjv(). Added MHash tag and 'exists' accessor. - -2009-09-16 12:08 rkowen - - * error.c: Reworked the error string compilation to reduce - confusing code. - -2009-09-14 22:05 rkowen - - * PROBLEMS, cmdVersion.c, locate_module.c, utility.c: Cleaned up - some extraneous MODULESPATH code and other misc changes. - -2009-09-14 15:08 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Switch.c, ModuleCmd_Whatis.c, cmdConflict.c, cmdInfo.c, - cmdLog.c, cmdVersion.c, error.c, locate_module.c, main.c, - utility.c: Replaced all explicit references to the path separator - "/" to the calculated value of psep. - -2009-09-10 14:52 rkowen - - * testsuite/etc/modulerc: file modulerc was initially added on - branch mfiles. - -2009-09-10 14:52 rkowen - - * ovec.c: file ovec.c was initially added on branch mfiles. - -2009-09-10 14:52 rkowen - - * ovec.h: file ovec.h was initially added on branch mfiles. - -2009-09-10 14:52 rkowen - - * Makefile.am, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Load.c, ModuleCmd_Refresh.c, ModuleCmd_Switch.c, NEWS, - cmdConflict.c, cmdIsLoaded.c, configure.ac, init.c, - locate_module.c, main.c, modules_def.h, ovec.c, ovec.h, utility.c, - utilobj.c, uvec.c, testsuite/etc/modulerc, testsuite/etc/rc, - testsuite/modules.20-locate/060-rc.exp: Added the Tcl_Obj vector - package. Removed the need for a Tcl interpretor from some of the - utility fns ... this effort will continue so alternative - interpretors can be used. Added module_setenv() for setting an - env.var. instead of Tcl_SetVar2(). - -2009-09-02 13:37 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, cmdAlias.c, cmdChdir.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, error.c, - init.c, locate_module.c, main.c, utility.c, utilmem.c, utilobj.c, - uvec.c, uvec.h, modulefiles/Makefile.am, - testsuite/modules.50-cmds/100-loglevel.exp: Merged in the mlist - code clean up changes. - -2009-09-02 13:37 rkowen - - * cmdChdir.c: file cmdChdir.c was added on branch modules-3-2-0-tag - on 2010-07-27 19:09:05 +0000 - -2009-09-02 13:37 rkowen - - * cmdChdir.c: file cmdChdir.c was added on branch modules-3-2-8 on - 2010-09-14 05:10:01 +0000 - -2009-09-02 13:21 rkowen - - * cmdLog.c, error.c, utility.c, - testsuite/modules.50-cmds/100-loglevel.exp: Cleaned up more crufty - code in the cmdModuleLog routine with regards to splitting and - collecting strings. - -2009-09-01 12:16 rkowen - - * LICENSE.LGPL, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Load.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, error.c, - init.c, locate_module.c, main.c, modules_def.h, utility.c, - utilmem.c, utilobj.c, uvec.c, uvec.h, modulefiles/.cvsignore, - modulefiles/HOME.in, modulefiles/Makefile.am: Merging in the - changes from the mlist branch. - -2009-09-01 12:12 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_List.c, ModuleCmd_Load.c, - ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdModule.c, cmdPath.c, - cmdSetenv.c, cmdVersion.c, configure.ac, init.c, main.c, - modules_def.h, utility.c, utilobj.c: * Wrapped the Tcl hash array - code into a more convenient form - MHash * Put all hash arrays in - the MHash form and removed crufty code. This reduces and - simplifies the code tremendously. - -2009-09-01 11:18 rkowen - - * modules_def.h, utilobj.c: Added the MHashInt hash type, which - stores an integer (the size of a pointer) as the hash value. - -2009-08-31 11:26 rkowen - - * modules_def.h, utilobj.c: Added the mhash_copy constructor. - -2009-08-31 08:51 rkowen - - * error.c, modules_def.h, utility.c, utilmem.c, utilobj.c, - modulefiles/.cvsignore: Added the MHash front-end to the - difficult-to-use Tcl_*Hash* routines. Moved stringer() from - utility.c to utilmem.c . - -2009-08-28 13:14 rkowen - - * NEWS, configure.ac, utility.c, modulefiles/HOME.in, - modulefiles/Makefile.am: * Included another modulefile to add $HOME - to the *PATH hierarchy so directories like $HOME/bin and $HOME/sbin - would be prepended to $PATH, etc. - -2009-08-28 13:14 rkowen - - * modulefiles/HOME.in: file HOME.in was initially added on branch - mlist. - -2009-08-28 12:28 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Whatis.c, NEWS, cmdConflict.c, - locate_module.c, modules_def.h, utility.c: Moved the SplitIntoList, - etc. code into utility.c. Added ModulePathList to provide a vector - list of modulepaths and simplified the code where needed. Removed - some amazingly hackish strtok knock-offs. - -2009-08-28 07:54 rkowen - - * Makefile.am, utility.c, utilmem.c: Broke out the memory routines - into a seperate file. - -2009-08-28 07:54 rkowen - - * utilmem.c: file utilmem.c was initially added on branch mlist. - -2009-08-27 15:07 rkowen - - * uvec.c: file uvec.c was initially added on branch mlist. - -2009-08-27 15:07 rkowen - - * uvec.h: file uvec.h was initially added on branch mlist. - -2009-08-27 15:07 rkowen - - * LICENSE.LGPL, Makefile.am, ModuleCmd_Clear.c, ModuleCmd_Init.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, error.c, init.c, - locate_module.c, main.c, modules_def.h, utility.c, utilobj.c, - uvec.c, uvec.h: * Added a unix vector package to ease list - handling, to eliminate the bits of code scattered through out. - -2009-08-27 15:07 rkowen - - * LICENSE.LGPL: file LICENSE.LGPL was initially added on branch - mlist. - -2009-08-24 09:49 rkowen - - * cmdConflict.c: Lost value of notloaded_flag in conversion to - objv. - -2009-08-23 16:30 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, error.c, - getopt.c, init.c, locate_module.c, main.c, modules_def.h, - utility.c, utilobj.c: Merged the nodeb branch into the main trunk. - -2009-08-23 16:26 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, configure.ac, error.c, - getopt.c, init.c, locate_module.c, main.c, modules_def.h, - utility.c, utilobj.c: Removed the WITH_DEBUGGING_* code, which was - burdensome to maintain, rarely used, and gave no useful advantage - over using a symbolic stepping debugger. - -2009-08-22 23:57 rkowen - - * .indent.pro, Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Load.c, - ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, cmdVerbose.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, error.c, init.c, - locate_module.c, main.c, modules_def.h, utility.c, utilobj.c, - testsuite/modules.50-cmds/240-chdir.exp: Merged in the btclobj1 - branch changes to the main trunk - converted the module commands to - Tcl dual-ported objects. - -2009-08-22 23:26 rkowen - - * .indent.pro, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Update.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, - cmdAlias.c, cmdChdir.c, cmdConflict.c, cmdIsLoaded.c, cmdLog.c, - cmdMisc.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, - cmdXResource.c, error.c, init.c, locate_module.c, modules_def.h, - utility.c, utilobj.c, testsuite/modules.50-cmds/240-chdir.exp: - Converted the remaining module commands to use Tcl dual-ported - objects. Crafted the remaining module versions of the memory - functions realloc & calloc. Use the Tcl ckalloc() as the basis. - Added the chdir tests and gave it sensible behavior when the - directory does not exist or is inaccessible. - -2009-08-22 23:26 rkowen - - * testsuite/modules.50-cmds/240-chdir.exp: file 240-chdir.exp was - initially added on branch btclobj1. - -2009-08-21 14:47 rkowen - - * utilobj.c: file utilobj.c was initially added on branch btclobj1. - -2009-08-21 14:47 rkowen - - * .indent.pro, Makefile.am, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Load.c, ModuleCmd_Refresh.c, - ModuleCmd_Use.c, ModuleCmd_Whatis.c, NEWS, cmdInfo.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdVerbose.c, cmdWhatis.c, - error.c, init.c, main.c, modules_def.h, utility.c, utilobj.c: - Converted about half of the module commands to use Tcl dual-ported - objects. - -2009-08-21 14:47 rkowen - - * .indent.pro: file .indent.pro was initially added on branch - btclobj1. - -2009-08-14 15:16 rkowen - - * Makefile.am: Got cxref running and regenerated the cross - references. - -2009-08-14 15:16 rkowen - - * locate_module.c: Cleaned up a memory error and redundant code. - -2009-08-13 12:17 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_Purge.c, - ModuleCmd_Refresh.c, ModuleCmd_Update.c, NEWS, cmdChdir.c, - cmdModule.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - configure.ac, locate_module.c, main.c, modules_def.h, utility.c: * - All string allocation is performed by a common internal routine * - --disable-beginenv is now the configuration default - -2009-08-11 15:01 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, README, TODO, cmdAlias.c, cmdChdir.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, - cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - configure.ac, error.c, getopt.c, init.c, locate_module.c, main.c, - modules_def.h, utility.c, doc/module.1.in, - testsuite/modulefiles/.moduleavailcache, - testsuite/modulefiles/.moduleavailcache.202, - testsuite/modulefiles/.moduleavailcachedir, - testsuite/modulefiles/.moduleavailcachedir.202, - testsuite/modules.00-init/090-switches.exp, - testsuite/modules.70-maint/060-apropos.exp: Merged in the bnocache - branch to the main source tree. - -2009-08-11 14:54 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, README, TODO, cmdAlias.c, cmdChdir.c, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, - cmdModule.c, cmdPath.c, cmdSetenv.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - configure.ac, error.c, getopt.c, init.c, locate_module.c, main.c, - modules_def.h, utility.c, doc/module.1.in, - testsuite/modulefiles/.moduleavailcache, - testsuite/modulefiles/.moduleavailcache.202, - testsuite/modulefiles/.moduleavailcachedir, - testsuite/modulefiles/.moduleavailcachedir.202, - testsuite/modules.00-init/090-switches.exp, - testsuite/modules.70-maint/060-apropos.exp: * Removed the - modulefile caching, which has been one of the major obstacles for - deep modulefile directories. Also fixed up the code to eliminate - nearly all of the gcc -Wall warnings. - -2009-08-10 12:28 rkowen - - * ModuleCmd_Display.c, NEWS, cmdLog.c, configure.ac, error.c, - modules_def.h: Merged the syslogging changes from the bsyslog - branch. - -2009-08-10 12:22 rkowen - - * ModuleCmd_Display.c, NEWS, cmdLog.c, configure.ac, error.c, - modules_def.h: Simplified the module syslogging interaction. The - configure script no longer has individual options for each of the - various module error states. Only the syslog facility can be - specified (default = "local7"). Fine tuning can be done via the - system global rc file and the module-log command. - -2009-08-03 14:04 rkowen - - * Makefile.am, NEWS, cmdInfo.c, cmdLog.c, cmdModule.c, cmdTrace.c, - configure.ac, init.c, modules_def.h, doc/modulefile.4.in, - modulefiles/module-info.in, testsuite/modulefiles/help/2.0, - testsuite/modulefiles/trace/all_off, - testsuite/modulefiles/trace/all_on, - testsuite/modulefiles/trace/colon, - testsuite/modulefiles/trace/dilo_onoff, - testsuite/modulefiles/trace/disp_onoff, - testsuite/modulefiles/trace/disptrac, - testsuite/modulefiles/trace/load_all1, - testsuite/modulefiles/trace/load_all2, - testsuite/modulefiles/trace/load_on, - testsuite/modulefiles/trace/load_onoff, - testsuite/modulefiles/trace/load_ovr, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.70-maint/070-display.exp: Merged in the bnotrace - branch changes ... essentially removing the module-trace command. - -2009-08-03 13:56 rkowen - - * Makefile.am, cmdInfo.c, cmdLog.c, cmdModule.c, cmdTrace.c, - configure.ac, init.c, modules_def.h, doc/modulefile.4.in, - modulefiles/module-info.in, testsuite/modulefiles/help/2.0, - testsuite/modulefiles/trace/all_off, - testsuite/modulefiles/trace/all_on, - testsuite/modulefiles/trace/colon, - testsuite/modulefiles/trace/dilo_onoff, - testsuite/modulefiles/trace/disp_onoff, - testsuite/modulefiles/trace/disptrac, - testsuite/modulefiles/trace/load_all1, - testsuite/modulefiles/trace/load_all2, - testsuite/modulefiles/trace/load_on, - testsuite/modulefiles/trace/load_onoff, - testsuite/modulefiles/trace/load_ovr, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.70-maint/070-display.exp: Removed the - module-trace command & tests. It has not been maintained and there - was no real indication that it worked as expected. - -2009-08-03 13:52 rkowen - - * init/bash_completion.in: Added bash_completion init - -2009-08-03 13:52 rkowen - - * init/bash_completion.in: file bash_completion.in was added on - branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2009-08-03 13:52 rkowen - - * init/bash_completion.in: file bash_completion.in was added on - branch modules-3-2-8 on 2010-09-14 05:10:03 +0000 - -2009-08-03 09:23 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, cmdAlias.c, cmdChdir.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - configure.ac, error.c, init.c, locate_module.c, modules_def.h, - utility.c, version.c, doc/module.1.in, doc/modulefile.4.in, - etc/global/bashrc.in, etc/global/csh.modules.in, - etc/global/profile.modules.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/csh.in, init/filter, - init/ksh.in, init/perl.in, init/python.in, init/sh.in, init/zsh.in, - modulefiles/Makefile.am: Rolled in the remaining 3.2.7 changes to - the main branch. - -2009-07-31 09:56 rkowen - - * NEWS: Updated 3.2.7 changes. - -2009-07-30 13:10 rkowen - - * ModuleCmd_Purge.c, NEWS, error.c, version.c, init/filter: * Have - purge remove loaded modules in reverse order (patch contributed - by carriees) - -2009-07-30 11:03 rkowen - - * init/bash_completion.in: file bash_completion.in was initially - added on branch b327now. - -2009-07-30 11:03 rkowen - - * cmdChdir.c: file cmdChdir.c was initially added on branch - b327now. - -2009-07-30 11:03 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Purge.c, ModuleCmd_Refresh.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, NEWS, cmdAlias.c, cmdChdir.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - configure.ac, error.c, init.c, locate_module.c, modules_def.h, - utility.c, doc/module.1.in, doc/modulefile.4.in, - etc/global/bashrc.in, etc/global/csh.modules.in, - etc/global/profile.modules.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/bash_completion.in, - init/csh.in, init/ksh.in, init/perl.in, init/python.in, init/sh.in, - init/zsh.in, modulefiles/Makefile.am: * Added a batch of patches - from Gerrit Renker - Goes through each of the two manpages, - bringing them up to date. - Fix an error in configure.ac caused - by misspelling - Fix typos in help messages and source-code - comments - Fix the setup of $MODULESPATH to not have a trailing - ':' - Fix segmentation violation occurring when the shelltype is - absent - Fix a condition where 'make uninstall' does not cleanse - a directory - Fix a build problem which set the executable bit - on 'data' files - Cleans up noise in '.modulespath' file - - Replaces external sed filter script with internal Makefile.am rule - - Adds missing 'zsh' case in etc/global - simplify (t)csh - initialisation - Add bash auto-completion for the 'module' - command - Adds new 'chdir' modulefile command (sets cwd on - module load) - -2009-04-09 12:53 sirdude - - * tcl/modulecmd.tcl: This is a patch by John Tseng, - - It adds the ability to support Dynamic columns using stty you just - setenv DYNAMIC_COLUMNS 1 and it will start using them. - - Kent - -2009-04-09 11:48 sirdude - - * tcl/modulecmd.tcl: Fleshed out the debugging statements so most - functions have them now. - - Kent - -2009-02-24 13:08 sirdude - - * tcl/modulecmd.tcl: Some more cruft removal. - - Kent - -2009-02-24 12:13 sirdude - - * tcl/: Makefile, modulecmd.tcl, init/modulerc: added synonym of - search for apropos/keyword Partialy contributed by Hunter Matthews. - - There is still an issue with it though. If you have a malformed - module it will die. Probably there are other commands that die as - well. Need to look at it more. - - Kent - -2009-02-24 11:47 sirdude - - * tcl/modulecmd.tcl: Cleaned up some stuff that wasn't used and - also fixed some minor formating issues. - - Kent - -2009-02-24 11:21 sirdude - - * tcl/modulecmd.tcl: Updated the help dialog so its a bit more - organized an easier to read. - - Kent - -2009-02-24 10:35 sirdude - - * tcl/modulecmd.tcl: Patch by Hunter Matthews to clean up the - output of module avail a little bit. - - Kent - -2009-02-24 10:22 sirdude - - * tcl/modulecmd.tcl: Some patches submitted by Hunter Matthews - - adds --help as a commandline option. fixes issues with modulerc - file getting sourced twice in sh and tcsh shells. - - Kent - -2008-09-17 08:14 sirdude - - * tcl/modulecmd.tcl: - - Small patch for differences in glob on various platforms. - Contributed by Thomas Zeiser - - Kent - -2008-02-19 22:21 rkowen - - * testsuite/modules.50-cmds/175-swap2.exp: file 175-swap2.exp was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modules.50-cmds/175-swap2.exp: file 175-swap2.exp was - added on branch modules-3-2-8 on 2010-09-14 05:10:09 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/prepend/2.1: file 2.1 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/prepend/2.2: file 2.2 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2008-02-19 22:21 rkowen - - * NEWS, cmdPath.c, configure.ac, init/bash.in, - testsuite/modulefiles/append/2.1, testsuite/modulefiles/append/2.2, - testsuite/modulefiles/prepend/2.1, - testsuite/modulefiles/prepend/2.2, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/175-swap2.exp: Rolled in the 3.2.7 - changes so far. - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/: append/2.1, prepend/2.1: file 2.1 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/append/2.1: file 2.1 was added on branch - modules-3-2-8 on 2010-09-14 05:10:06 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/: append/2.2, prepend/2.2: file 2.2 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2008-02-19 22:21 rkowen - - * testsuite/modulefiles/append/2.2: file 2.2 was added on branch - modules-3-2-8 on 2010-09-14 05:10:06 +0000 - -2008-02-19 22:18 rkowen - - * testsuite/modules.50-cmds/175-swap2.exp: file 175-swap2.exp was - initially added on branch b327now. - -2008-02-19 22:18 rkowen - - * testsuite/modulefiles/: append/2.1, prepend/2.1: file 2.1 was - initially added on branch b327now. - -2008-02-19 22:18 rkowen - - * testsuite/modulefiles/: append/2.2, prepend/2.2: file 2.2 was - initially added on branch b327now. - -2008-02-19 22:18 rkowen - - * NEWS, cmdPath.c, configure.ac, testsuite/modulefiles/append/2.1, - testsuite/modulefiles/append/2.2, - testsuite/modulefiles/prepend/2.1, - testsuite/modulefiles/prepend/2.2, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/175-swap2.exp: * Fixed swap bug when - prepending or appending multiple times (fix thanks to Gavin - Walker), added tests for same. - -2008-02-11 16:06 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, NEWS, TODO, cmdConflict.c, cmdIsLoaded.c, - cmdLog.c, cmdModule.c, cmdPath.c, cmdTrace.c, cmdVersion.c, - cmdWhatis.c, cmdXResource.c, configure.ac, error.c, init.c, - locate_module.c, main.c, modules.lsm.in, modules_def.h, utility.c, - version.c, config/emtcl.m4, config/tcl.m4, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - ext/add.ext.in, ext/mkroot.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/csh.in, init/ksh.in, - init/sh.in, init/zsh.in, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in, - testsuite/modulefiles/alias/1.0, testsuite/modulefiles/append/0.1, - testsuite/modulefiles/append/0.2, testsuite/modulefiles/append/1.0, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modulefiles/prepend/1.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: Preparing the 3.2.7 - branch, and some minor changes. - -2007-10-29 09:43 rkowen - - * ModuleCmd_Avail.c, NEWS: Rolled in the skip .git version control - dirs in modulefile dirs. - -2007-10-29 09:36 rkowen - - * ModuleCmd_Avail.c, NEWS: Skip .git version control dirs in - modulefile dirs. - -2007-10-23 13:58 sirdude - - * tcl/modulecmd.tcl: updated ignored directories to include .svn - and .git Thanks to John Tseng. - - Kent - -2007-09-05 13:20 sirdude - - * tcl/modulecmd.tcl: - - Made it so that module use and module unuse work the same way, I - also added a little debugging info for both of them. - - Kent - -2007-05-16 10:24 sirdude - - * tcl/modulecmd.tcl: - - update to replaceFromList patch from Olly. adds a fix for when - item2 is empty. - - Kent - -2007-05-16 08:23 sirdude - - * tcl/modulecmd.tcl: - - Another great little patch by Olly Stephens, - - This one makes it so that if a module has an error message in it - module help (modulefile) will still attempt to call the help - function for that module. - - Kent - -2007-05-16 08:07 sirdude - - * tcl/modulecmd.tcl: - - Another patch by Olly, - - This one extends some of the shortcuts accepted. example module lo - blah now works just like module load blah Its not perfect but - again better than what is there currently. - - Kent - -2007-05-16 08:01 sirdude - - * tcl/modulecmd.tcl: - - Another patch by Olly, - - This one makes it so that help is displayed if a user types an - invalid module command (Example: module blah) or if a user just - types module with no args. - - Kent - -2007-05-16 07:50 sirdude - - * tcl/modulecmd.tcl: - - Patch by Olly, - - Forces 0600 mode on the tmpfile when opening it. Really we need to - figure out how to remove the need for a tmpfile, until then though - this is still better than it was. - - Kent - -2007-03-25 08:11 rkowen - - * NEWS, cmdPath.c, utility.c: * Fixed some valgrind errors found - and resolved by Alan Morris. - -2007-03-23 09:52 rkowen - - * modulefiles/modules.in: The man dir is now in share/ - -2007-02-22 15:30 rkowen - - * NEWS, locate_module.c: Rolled in 3.2.6 realloc() fix. - -2007-02-22 15:29 rkowen - - * NEWS, locate_module.c: * Fixed the locate_module.c:realloc() - calls which didn't properly take the element size into account - (Fix thanks to Ron Isaacson). - -2007-02-22 15:12 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, NEWS, TODO, cmdConflict.c, cmdIsLoaded.c, - cmdLog.c, cmdModule.c, cmdPath.c, cmdTrace.c, cmdVersion.c, - cmdWhatis.c, cmdXResource.c, configure.ac, error.c, init.c, - locate_module.c, main.c, modules.lsm.in, modules_def.h, utility.c, - version.c, config/emtcl.m4, config/tcl.m4, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - ext/add.ext.in, ext/mkroot.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/csh.in, init/ksh.in, - init/sh.in, init/zsh.in, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in, - testsuite/modulefiles/append/1.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: Initial 3.2.6 check-in - -2007-02-14 10:06 rkowen - - * NEWS: Trivial format change. - -2007-02-14 10:04 rkowen - - * NEWS, testsuite/modules.50-cmds/095-uname.exp: Rolled in 3.2.5 - changes to the uname test - -2007-02-14 09:54 rkowen - - * NEWS, testsuite/modules.50-cmds/095-uname.exp: Fixed the - uname/domainname test to handle when there is no domainname. - -2007-02-13 22:23 rkowen - - * version.c: Updated version. - -2007-02-13 22:21 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, - cmdConflict.c, cmdLog.c, cmdModule.c, cmdTrace.c, cmdVersion.c, - cmdWhatis.c, cmdXResource.c, error.c, init.c, locate_module.c, - modules_def.h, utility.c: Rolled in the 3.2.5 module_malloc() - wrapper. - -2007-02-13 22:09 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, - cmdConflict.c, cmdLog.c, cmdModule.c, cmdTrace.c, cmdVersion.c, - cmdWhatis.c, cmdXResource.c, error.c, init.c, locate_module.c, - modules_def.h, utility.c, version.c: Wrapped all malloc() calls - with module_malloc(). - -2007-02-13 21:38 rkowen - - * Makefile.am, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, NEWS, - TODO, cmdConflict.c, cmdIsLoaded.c, cmdLog.c, cmdPath.c, - cmdVersion.c, configure.ac, error.c, init.c, locate_module.c, - main.c, modules.lsm.in, modules_def.h, utility.c, version.c, - config/emtcl.m4, config/tcl.m4, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - ext/add.ext.in, ext/mkroot.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/csh.in, init/ksh.in, - init/sh.in, init/zsh.in, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in, - testsuite/modulefiles/alias/1.0, testsuite/modulefiles/append/0.1, - testsuite/modulefiles/append/0.2, testsuite/modulefiles/append/1.0, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modulefiles/prepend/1.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: Preparing the - modules-3-2-5 branch. - -2007-02-02 09:54 rkowen - - * NEWS: Forgot to update NEWS with 3.2.4 changes - -2007-02-02 09:14 rkowen - - * version.c: Updated the release date. - -2007-02-02 09:07 rkowen - - * TODO: Need to fix the module-alias (sometime) - -2006-12-19 11:06 sirdude - - * tcl/modulecmd.tcl: - updated module list so it skips modules with no name for -l and -t - (it now handles them like module list without options) - - Kent - -2006-12-13 11:41 sirdude - - * tcl/modulecmd.tcl: - - Fix provied by Eric Mastromarc reference counting was not working - for unload-path now it is again. - - Kent - -2006-12-12 09:11 sirdude - - * tcl/modulecmd.tcl: - - Modified prereq so its a logical OR for multiple modulefies on one - command line. - - example: prereq foo bar If you want it foo AND bar do: prereq foo - prereq bar - - Patch done by Chris Pruett - - Kent - -2006-12-07 12:52 sirdude - - * tcl/modulecmd.tcl: - - Patch provided by Thomas Zeiser, - - better fix for reverting header to find dynamically what version of - tclsh to use. It also now sorts output of module avail. - - Kent - -2006-12-07 10:46 sirdude - - * tcl/modulecmd.tcl: - - reverting commit 1.75 where I removed the header section that finds - tclsh. - - Kent - -2006-09-13 10:41 sirdude - - * tcl/modulecmd.tcl: - - Changed (VAR)_modshare back to use g_def_seperator instead of user - defined variable. - - Currently there is an issue with doing something like append-path - -delem " " PATH /usr/bin append-path -delem " " PATH /usr/local/bin - append-path -delem ":" PATH /usr/sbin - - then loading that module and unloading it... Because of the mixed - delimiters the unload does not work properly. It at least works - for the basic case now though. - - Kent - -2006-09-07 10:44 sirdude - - * tcl/modulecmd.tcl: - - changed syntax of specifying a delimitor to match c version of - modules and also made sure you can use " " and { } as a delimitor. - - Thanks go to Dr Reinhold Bader for this fix.... - - Kent - -2006-08-23 08:30 sirdude - - * tcl/modulecmd.tcl: - - "module use" (without args) was broken, now its fixed again. - - Kent - -2006-08-23 08:24 sirdude - - * tcl/modulecmd.tcl: - - fixed revision variable stuff. - - Kent - -2006-08-23 08:19 sirdude - - * tcl/modulecmd.tcl: - - Added in cvs revision variables so that module help prints out what - version of cvs file was checked out. - - Kent - -2006-08-16 09:42 sirdude - - * tcl/modulecmd.tcl: - this is a pathetic commit ;) Modified the comment for g_user so - that it says the right thing. - - Kent - -2006-08-15 14:15 sirdude - - * tcl/modulecmd.tcl: - This commit removes the remaining warnings generated by nagelfar - redid a couple of calls to interp eval recoded the replaceFromList - function so it uses lreplace removed the removeFromList function - and made it call replaceFromList instead... - - I also added _LMFILES_ environment variable haven't done anything - with it yet though. (intent is to use it in unloading a module) - - Kent - -2006-08-15 05:16 sirdude - - * tcl/modulecmd.tcl: - removed all of the hardcoded default path seperators ":" and - replaced with a variable. - - Kent - -2006-08-14 14:21 sirdude - - * tcl/init/.cvsignore: - added scripts that get created so that they don't show up in cvs - update... - - Kent - -2006-08-14 13:02 sirdude - - * tcl/modulecmd.tcl: - fixed a few calls to catch and made sure they called it in a - similar manor... (there are two more left that are slightly - different but I didn't take the time to figure them out) - - one of the fixes was posted by Chris Pruett, and I just applied it - where it needed it... :) - - Kent - -2006-08-14 12:56 sirdude - - * tcl/modulecmd.tcl: - added an else statement that I dropped by accident when merging - module command and module command help slave functions... - - Also reran frink so it looks pretty again... - - Kent - -2006-08-13 09:19 sirdude - - * tcl/modulecmd.tcl: - more work on seperator specification. (removing hardcoded ":"'s - - Kent - -2006-08-13 08:15 sirdude - - * tcl/modulecmd.tcl: - combined a couple of duplicate statements in a switch. - - Kent - -2006-08-13 07:54 sirdude - - * tcl/modulecmd.tcl: - Start of allowing a spwcified seperator for commands. Still needs - a lot of work... - - Kent - -2006-08-13 06:51 sirdude - - * tcl/modulecmd.tcl: - made module switch behave like it use to... (Sorry it took so long - to switch it back) - - now it does not recursively unload and reload modules... This way - seems more flexable and more intunitive to users. - - Kent - -2006-08-11 20:30 sirdude - - * tcl/modulecmd.tcl: - by accident shut off showing default module files.... Turning it - back on. - - Kent - -2006-08-11 20:22 sirdude - - * tcl/modulecmd.tcl: - module avail with flag_default_dir was broken This fixes it. - - Kent - -2006-08-11 19:52 sirdude - - * tcl/modulecmd.tcl: - Null module was causing problems with module avail -l There were - some odd settings for null which I just changed to "" everything - seems to work better this way so going to commit it. - - Kent - -2006-08-11 19:26 sirdude - - * tcl/modulecmd.tcl: - Updated the help section so its more like the binary module - command... - - Kent - -2006-08-11 18:43 sirdude - - * tcl/init/: bash.in, ksh.in, zsh.in: - fix up bash's friends so they work properly... - - Kent - -2006-08-11 18:13 sirdude - - * tcl/modulecmd.tcl: - updated module-info so that it works with the module-info module - for the most part. There is still some work here. - - Patch submitted by Mark Moraes - - Kent - -2006-08-11 16:08 sirdude - - * tcl/Makefile, tcl/modulecmd.tcl, testsuite/config/unix.exp: - updated Make test so it "works" again... combined functions for - looking at .version and modulerc files... - - Kent - -2006-08-11 14:08 sirdude - - * tcl/modulecmd.tcl: - - This one has been on my todo list for awhile now. Reduced - redundant code and made the slave for module help and executing a - module one function. - - Kent - -2006-08-11 13:42 sirdude - - * tcl/modulecmd.tcl: - - removed the following functions: module-log module-verbosity - module-user module-trace - - they were empty, if anyone ever decides to do them they can add - them back in. just trying to make this thing a little leaner ;) - - Kent - -2006-08-11 13:36 sirdude - - * tcl/modulecmd.tcl: - - ran frink -e to make things look pretty again ;) - - Kent - -2006-08-11 13:24 sirdude - - * tcl/modulecmd.tcl: - - I used nagelfar.tcl (http://nagelfar.berlios.de/) a tcl syntax - checker and cleaned up most warnings from it. found a couple of - typos as well because of it.... - - Kent - -2006-08-11 12:09 sirdude - - * tcl/modulecmd.tcl: - - another typo. (was missing a $ for a variable) - - Kent - -2006-08-11 12:05 sirdude - - * tcl/modulecmd.tcl: - - Removed the code to find tclsh since its in the init scripts no - reason to duplicate it and probably will speed things up a bit - keeping it in the init files. - - Kent - -2006-08-11 11:58 sirdude - - * tcl/modulecmd.tcl: - - On irix with an older version of tclsh I was getting errors with - reportWarning and reportInternalBug not being defined when - there was a malformed module... - - made it so they were copied over to the slave where needed. - - Kent - -2006-08-11 11:33 sirdude - - * tcl/modulecmd.tcl: - - missed some prints to stderr and I also fixed some typos... - - Kent - -2006-08-11 11:09 sirdude - - * tcl/modulecmd.tcl: - made $contact = emailaddress and modified reportInternalError so it - prints out the contact email address. - - Kent - -2006-08-11 09:28 sirdude - - * tcl/modulecmd.tcl: - moved all puts stderr's to one of the report functions. This could - still use some cleaning up. (not really sure we need 3 report - functions) but its at least a little nicer. (Was thinking about - changing it to echo "$msg" instead of sending it to stderr... that - way you could do things like module avail | more and it would - work... - - Need to do some more testing on it though :) - - Kent - -2006-08-11 08:51 sirdude - - * tcl/init/: csh.in, tcsh.in: - removed extra quotes that didn't need to be there. - - Kent - -2006-06-16 09:10 rkowen - - * testsuite/modulefiles/: append/0.1, append/0.2, prepend/0.1, - prepend/0.2, prepend/1.0: Added the missing test files - -2006-06-15 13:58 rkowen - - * locate_module.c: Rolled in 3.2.4 graceful handling of empty - MODULEPATH dirs. - -2006-06-15 13:56 rkowen - - * locate_module.c: Need to handle "empty" directory paths in the - MODULEPATH env.var. gracefully. - -2006-06-15 13:53 rkowen - - * testsuite/modulefiles/append/1.0: Forgot testfile - -2006-06-07 21:23 rkowen - - * testsuite/modulefiles/append/1.0: Forgot this one. - -2006-06-07 21:17 rkowen - - * Makefile.am, ModuleCmd_Init.c, ModuleCmd_List.c, - ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Whatis.c, NEWS, - cmdConflict.c, cmdIsLoaded.c, cmdLog.c, cmdPath.c, cmdVersion.c, - configure.ac, error.c, init.c, locate_module.c, main.c, - modules.lsm.in, modules_def.h, utility.c, version.c, - config/emtcl.m4, config/tcl.m4, doc/module.1.in, - doc/modulefile.4.in, etc/add.modules.in, etc/mkroot.in, - ext/add.ext.in, ext/mkroot.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/csh.in, init/ksh.in, - init/sh.in, init/zsh.in, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in, - testsuite/modulefiles/alias/1.0, testsuite/modulefiles/append/0.1, - testsuite/modulefiles/append/0.2, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modulefiles/prepend/1.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp, - testsuite/modules.50-cmds/100-loglevel.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: 3.2.4 preparations - -2006-06-01 14:22 rkowen - - * NEWS: 3.2.3 release preparation. - -2006-06-01 14:20 rkowen - - * NEWS, doc/module.1.in, doc/modulefile.4.in, etc/add.modules.in, - etc/mkroot.in, ext/add.ext.in, ext/mkroot.in, init/.modulespath.in, - init/Makefile.am, init/bash.in, init/ksh.in, init/sh.in, - init/zsh.in, modulefiles/dot.in, modulefiles/module-cvs.in, - modulefiles/module-info.in, modulefiles/modules.in, - modulefiles/null.in, modulefiles/use.own.in, - modulefiles/version.in: Rolled in the 3.2.3 top_builddir and - @configure_input\@ changes. - -2006-06-01 14:04 rkowen - - * NEWS, version.c, doc/module.1.in, doc/modulefile.4.in, - etc/add.modules.in, etc/mkroot.in, ext/add.ext.in, ext/mkroot.in, - init/.modulespath.in, init/Makefile.am, init/bash.in, init/ksh.in, - init/sh.in, init/zsh.in, modulefiles/dot.in, - modulefiles/module-cvs.in, modulefiles/module-info.in, - modulefiles/modules.in, modulefiles/null.in, - modulefiles/use.own.in, modulefiles/version.in: * Fixed build - problem with regards to the init/* files (solution due to Thomas - Zeiser) (changed from $(top_srddir)/config.status to - $(top_builddir)/config.status) * Also added @configure_input\@ to - most of the configure made files. - -2006-06-01 12:56 rkowen - - * NEWS, cmdPath.c, locate_module.c, modules_def.h, - doc/modulefile.4.in, testsuite/modulefiles/append/1.0, - testsuite/modulefiles/prepend/1.0, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp: Rolled in the 3.2.3 - prepend-path/append-path --delim changes. - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was added on branch b320now on 2008-02-12 - 00:06:17 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was added on branch modules-3-2-0 on - 2006-06-08 04:17:54 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was added on branch modules-3-2-0-tag on - 2010-07-27 19:09:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was added on branch modules-3-2-5 on - 2007-02-14 05:38:23 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was added on branch modules-3-2-8 on - 2010-09-14 05:10:09 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was added on branch b320now on 2008-02-12 - 00:06:17 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was added on branch modules-3-2-0 on - 2006-06-08 04:17:54 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was added on branch modules-3-2-0-tag on - 2010-07-27 19:09:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was added on branch modules-3-2-5 on - 2007-02-14 05:38:24 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was added on branch modules-3-2-8 on - 2010-09-14 05:10:09 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was added on branch b320now on 2008-02-12 - 00:06:18 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was added on branch modules-3-2-0 on - 2006-06-08 04:17:54 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was added on branch modules-3-2-0-tag on - 2010-07-27 19:09:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was added on branch modules-3-2-5 on - 2007-02-14 05:38:24 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was added on branch modules-3-2-8 on - 2010-09-14 05:10:09 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was added on branch b320now on 2008-02-12 - 00:06:18 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was added on branch modules-3-2-0 on - 2006-06-08 04:17:54 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was added on branch modules-3-2-0-tag on - 2010-07-27 19:09:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was added on branch modules-3-2-5 on - 2007-02-14 05:38:24 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was added on branch modules-3-2-8 on - 2010-09-14 05:10:09 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/append/1.0: file 1.0 was added on branch - b320now on 2008-02-12 00:06:15 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/prepend/1.0: file 1.0 was added on branch - b320now on 2008-02-12 00:06:16 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/prepend/1.0: file 1.0 was added on branch - modules-3-2-0 on 2006-06-08 04:17:54 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/append/1.0: file 1.0 was added on branch - modules-3-2-0 on 2007-02-22 23:13:15 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/: append/1.0, prepend/1.0: file 1.0 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/append/1.0: file 1.0 was added on branch - modules-3-2-3 on 2006-06-08 04:23:35 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/append/1.0: file 1.0 was added on branch - modules-3-2-4 on 2006-06-15 20:53:40 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/prepend/1.0: file 1.0 was added on branch - modules-3-2-4 on 2006-06-16 16:10:23 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/: append/1.0, prepend/1.0: file 1.0 was - added on branch modules-3-2-5 on 2007-02-14 05:38:23 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/append/1.0: file 1.0 was added on branch - modules-3-2-8 on 2010-09-14 05:10:06 +0000 - -2006-06-01 12:56 rkowen - - * testsuite/modulefiles/prepend/1.0: file 1.0 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-06-01 12:53 rkowen - - * testsuite/modules.50-cmds/: 042-append-delim.exp, - 047-app-del-undo.exp, 052-prepend-delim.exp, 057-pre-del-undo.exp: - Fixed extra unsetting of a variable. - -2006-06-01 11:47 rkowen - - * NEWS, cmdPath.c, locate_module.c, modules_def.h, - doc/modulefile.4.in, testsuite/modulefiles/prepend/1.0, - testsuite/modules.50-cmds/042-append-delim.exp, - testsuite/modules.50-cmds/047-app-del-undo.exp, - testsuite/modules.50-cmds/052-prepend-delim.exp, - testsuite/modules.50-cmds/057-pre-del-undo.exp: * Added the --delim - option to prepend-path and append-path to allow arbitrary - delimiters instead of the colon ':' - -2006-06-01 11:47 rkowen - - * testsuite/modules.50-cmds/042-append-delim.exp: file - 042-append-delim.exp was initially added on branch modules-3-2-3. - -2006-06-01 11:47 rkowen - - * testsuite/modules.50-cmds/047-app-del-undo.exp: file - 047-app-del-undo.exp was initially added on branch modules-3-2-3. - -2006-06-01 11:47 rkowen - - * testsuite/modules.50-cmds/052-prepend-delim.exp: file - 052-prepend-delim.exp was initially added on branch modules-3-2-3. - -2006-06-01 11:47 rkowen - - * testsuite/modules.50-cmds/057-pre-del-undo.exp: file - 057-pre-del-undo.exp was initially added on branch modules-3-2-3. - -2006-06-01 11:47 rkowen - - * testsuite/modulefiles/prepend/1.0: file 1.0 was initially added - on branch modules-3-2-3. - -2006-06-01 07:54 rkowen - - * ModuleCmd_Init.c, cmdConflict.c, cmdIsLoaded.c, cmdPath.c, - locate_module.c, main.c, modules_def.h: Rolled in the pre-changes - for handling arbitrary delimiters for lists (instead of ':'). - -2006-06-01 07:32 rkowen - - * ModuleCmd_Init.c, cmdConflict.c, cmdIsLoaded.c, cmdPath.c, - locate_module.c, main.c, modules_def.h: The pre-changes for - handling arbitrary delimiters for lists (instead of ':'). - -2006-05-31 13:35 sirdude - - * tcl/modulecmd.tcl: - - * minor typos in error output fixed - * support for modules which are known to have no dependencies. - Presently a - - module switch foo/4 foo/5 - - will reload all modules which have been loaded after foo. But - sometimes this - may be a nuisance, especially if module files implement their - own reloading - mechanism. Hence the modules entered as a ":" separated list - into the - environment variable MODULE_NORELOAD will not be reloaded - during a - module switch. The "module reload" command however still - reloads the complet - e module set. This is upward compatible since the original - functionality is re tained if MODULE_RELOAD is left empty. - - patch provided by Dr. Reinhold Bader - - Kent - -2006-05-25 15:05 rkowen - - * modules.lsm.in: Merged in the working LSM from 3.2.2 - -2006-05-25 15:01 rkowen - - * modules.lsm.in: Merged in the working LSM from 3.2.2 - -2006-05-25 14:59 rkowen - - * modules.lsm.in: Finally got a working LSM for uploading to - ibiblio.org. - -2006-05-25 14:09 rkowen - - * NEWS, utility.c, testsuite/modulefiles/alias/1.0, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp: Rolled in the 3.2.3 - changes * the set-alias command will for Bourne shell derivatives - substitute the safe ${1+"$@"} for $*. - -2006-05-25 14:09 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was added on branch b320now on 2008-02-12 - 00:06:18 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was added on branch modules-3-2-0 on 2006-06-08 - 04:17:54 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was added on branch modules-3-2-0-tag on - 2010-07-27 19:09:06 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was added on branch modules-3-2-5 on 2007-02-14 - 05:38:24 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was added on branch modules-3-2-8 on 2010-09-14 - 05:10:09 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was added on branch - b320now on 2008-02-12 00:06:15 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was added on branch - modules-3-2-0 on 2006-06-08 04:17:54 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was added on branch - modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was added on branch - modules-3-2-5 on 2007-02-14 05:38:23 +0000 - -2006-05-25 14:09 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was added on branch - modules-3-2-8 on 2010-09-14 05:10:05 +0000 - -2006-05-25 14:07 rkowen - - * NEWS, utility.c, testsuite/modulefiles/alias/1.0, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/076-alias-sub.exp, - testsuite/modules.50-cmds/078-refresh.exp: * the set-alias command - will for Bourne shell derivatives substitute the safe ${1+"$@"} for - $*. Addressed the feature request: [ 705032 ] Bourne shell aliases - should allow arguments. - -2006-05-25 14:07 rkowen - - * testsuite/modules.50-cmds/076-alias-sub.exp: file - 076-alias-sub.exp was initially added on branch modules-3-2-3. - -2006-05-25 14:07 rkowen - - * testsuite/modulefiles/alias/1.0: file 1.0 was initially added on - branch modules-3-2-3. - -2006-05-19 08:53 rkowen - - * Makefile.am, NEWS, init.c: Rolled in the TclX changes from 3-2-2. - -2006-05-15 14:11 rkowen - - * NEWS, error.c, main.c, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/100-loglevel.exp: Rolled in the syslog - related changes from 3.2.3 - -2006-05-15 14:05 rkowen - - * NEWS, error.c, testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.50-cmds/100-loglevel.exp: Addressed bug [ 1471913 - ] syslog facility not working. Actually, it is working, but the - changes will allow it to pass the tests. There may still be a - memory error, but can't find it. - -2006-05-15 11:36 rkowen - - * main.c: Bug fix [ 1471940 ] --with-debug=yes build fails Thanks - to Steven Klass for finding this. - -2006-05-12 15:30 rkowen - - * NEWS: Added a section for 3.3.x - -2006-05-12 15:28 rkowen - - * NEWS, cmdVersion.c: Folded in dgoldendias patch. - -2006-05-12 15:23 rkowen - - * NEWS, cmdVersion.c, version.c: Included the patch by David Golden - Dias [ 1460801 ] to allow version names to be substrings of other - version names. - -2006-05-12 13:58 rkowen - - * modules.lsm.in: Added the Title line, which must have gotten lost - in previous edits. - -2006-05-12 06:34 rkowen - - * modules.lsm.in: Added the Title line, which must have been - dropped by accident. - -2006-05-04 15:03 rkowen - - * main.c: Trivial add of linefeed. - -2006-05-04 15:02 rkowen - - * Makefile.am, NEWS, configure.ac, init.c, main.c, version.c, - config/emtcl.m4, config/tcl.m4: * Updated the TclX init call for - 8.4 - fixed up the TclX config logic. - -2006-05-04 09:55 rkowen - - * NEWS, configure.ac, main.c, config/emtcl.m4, config/tcl.m4: - Rolled in the 3.2.2 configure changes to the main development - trunk. - -2006-05-04 09:36 rkowen - - * main.c: Added more macros to display when given --version - -2006-05-04 07:38 rkowen - - * NEWS, configure.ac, config/emtcl.m4, config/tcl.m4: * Replaced - all strtok() calls with an internal version. * Now can - append/prepend and empty string '' or colons ':' * Added more - --with-tclx-* options in case tclxConfig.sh can not be found, but - the TclX lib does exist. * Expanded the search path for - tclConfig.sh. - -2006-05-01 15:07 rkowen - - * Makefile.am: Don't have a ChangeLog target. - -2006-05-01 07:54 rkowen - - * version.c: Updated release date. - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/append/0.1: file 0.1 was added on branch - b320now on 2008-02-12 00:06:15 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/prepend/0.1: file 0.1 was added on branch - b320now on 2008-02-12 00:06:16 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.1, prepend/0.1: file 0.1 was - added on branch modules-3-2-0 on 2006-06-08 04:17:54 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.1, prepend/0.1: file 0.1 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.1, prepend/0.1: file 0.1 was - added on branch modules-3-2-4 on 2006-06-16 16:10:22 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.1, prepend/0.1: file 0.1 was - added on branch modules-3-2-5 on 2007-02-14 05:38:23 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/append/0.1: file 0.1 was added on branch - modules-3-2-8 on 2010-09-14 05:10:06 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/prepend/0.1: file 0.1 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/append/0.2: file 0.2 was added on branch - b320now on 2008-02-12 00:06:15 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/prepend/0.2: file 0.2 was added on branch - b320now on 2008-02-12 00:06:16 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.2, prepend/0.2: file 0.2 was - added on branch modules-3-2-0 on 2006-06-08 04:17:54 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.2, prepend/0.2: file 0.2 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.2, prepend/0.2: file 0.2 was - added on branch modules-3-2-4 on 2006-06-16 16:10:22 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/: append/0.2, prepend/0.2: file 0.2 was - added on branch modules-3-2-5 on 2007-02-14 05:38:23 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/append/0.2: file 0.2 was added on branch - modules-3-2-8 on 2010-09-14 05:10:06 +0000 - -2006-05-01 07:52 rkowen - - * testsuite/modulefiles/prepend/0.2: file 0.2 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-05-01 07:52 rkowen - - * ModuleCmd_List.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, cmdLog.c, configure.ac, error.c, - locate_module.c, modules_def.h, utility.c, - testsuite/modulefiles/append/0.1, testsuite/modulefiles/append/0.2, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp: Rolled in the - xstrtok changes and tests from modules-3-2-2. - -2006-04-20 15:35 rkowen - - * testsuite/modulefiles/: append/0.1, prepend/0.1: file 0.1 was - initially added on branch modules-3-2-2. - -2006-04-20 15:35 rkowen - - * testsuite/modulefiles/: append/0.2, prepend/0.2: file 0.2 was - initially added on branch modules-3-2-2. - -2006-04-20 15:35 rkowen - - * ModuleCmd_List.c, ModuleCmd_Refresh.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, NEWS, cmdLog.c, configure.ac, error.c, - locate_module.c, modules_def.h, utility.c, version.c, - testsuite/modulefiles/append/0.1, testsuite/modulefiles/append/0.2, - testsuite/modulefiles/prepend/0.1, - testsuite/modulefiles/prepend/0.2, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp: Crafted an internal - version of strtok(), which allows for empty tokens and to obviate - the need to use any "native" strtok()s. - -2006-04-10 13:04 rkowen - - * init/Makefile.am: Rolled in $(top_srcdir) and $(srcdir) changes - from main trunk. - -2006-04-10 13:03 rkowen - - * init/Makefile.am: Change from using . & .. to $(srcdir) and - $(top_srcdir) respectively. (Thanks to suggestion from Boris - Boesler ) - -2006-03-23 15:38 rkowen - - * init/csh.in: Rolled in init csh fix from 3.2.1 - -2006-03-23 15:31 rkowen - - * version.c, init/csh.in: Fixed the csh init script. - -2006-03-23 14:37 rkowen - - * version.c, init/csh.in, testsuite/modules.00-init/006-procs.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.90-avail/050-long.exp: Merged in the 3.2.1 - changes. - -2006-03-23 13:51 rkowen - - * testsuite/: modules.70-maint/045-listlong.exp, - modules.90-avail/050-long.exp: Fixed the tests to use regexps to - allow the date/time stamp to vary for the listed module. - -2006-03-23 13:50 rkowen - - * testsuite/modules.00-init/006-procs.exp: Add '--' to the regexp - call so any tests that have lines that start with '-' will not be - interpreted as command options. - -2006-03-23 13:49 rkowen - - * init/csh.in: Allow the command to pass a non-zero return status. - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/210-exit.exp: file 210-exit.exp was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/210-exit.exp: file 210-exit.exp was - added on branch modules-3-2-8 on 2010-09-14 05:10:09 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/220-continue.exp: file 220-continue.exp - was added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/220-continue.exp: file 220-continue.exp - was added on branch modules-3-2-8 on 2010-09-14 05:10:09 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/230-loop.exp: file 230-loop.exp was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/230-loop.exp: file 230-loop.exp was - added on branch modules-3-2-8 on 2010-09-14 05:10:09 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/999-cleanup.exp: file 999-cleanup.exp - was added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modules.50-cmds/999-cleanup.exp: file 999-cleanup.exp - was added on branch modules-3-2-8 on 2010-09-14 05:10:09 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/1.0, exit/1.0: file 1.0 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/1.0, exit/1.0: file 1.0 was - added on branch modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/2.0, exit/2.0: file 2.0 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/2.0, exit/2.0: file 2.0 was - added on branch modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/3.0, exit/3.0: file 3.0 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: continue/3.0, exit/3.0: file 3.0 was - added on branch modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/: break/4.0, continue/4.0: file 4.0 was - added on branch modules-3-2-0-tag on 2010-07-27 19:09:06 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/break/4.0: file 4.0 was added on branch - modules-3-2-8 on 2010-09-14 05:10:07 +0000 - -2006-03-07 11:43 rkowen - - * testsuite/modulefiles/continue/4.0: file 4.0 was added on branch - modules-3-2-8 on 2010-09-14 05:10:08 +0000 - -2006-03-07 11:43 rkowen - - * ModuleCmd_Load.c, NEWS, cmdModule.c, main.c, modules_def.h, - utility.c, doc/modulefile.4.in, testsuite/config/unix.exp, - testsuite/modulefiles/break/2.0, testsuite/modulefiles/break/4.0, - testsuite/modulefiles/continue/1.0, - testsuite/modulefiles/continue/2.0, - testsuite/modulefiles/continue/3.0, - testsuite/modulefiles/continue/4.0, testsuite/modulefiles/exit/1.0, - testsuite/modulefiles/exit/2.0, testsuite/modulefiles/exit/3.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.50-cmds/999-cleanup.exp: Rolled in the 3.2.0 exit - changes. - -2006-03-07 11:18 rkowen - - * main.c, modules_def.h, utility.c, - testsuite/modules.50-cmds/210-exit.exp: The resultant string to be - evaluated will now append a "test 0 = 1" string if an exit is - called. - -2006-02-21 14:26 rkowen - - * testsuite/modulefiles/: continue/1.0, exit/1.0: file 1.0 was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modulefiles/: continue/2.0, exit/2.0: file 2.0 was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modules.50-cmds/210-exit.exp: file 210-exit.exp was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modules.50-cmds/220-continue.exp: file 220-continue.exp - was initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modules.50-cmds/230-loop.exp: file 230-loop.exp was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modulefiles/: continue/3.0, exit/3.0: file 3.0 was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modulefiles/: break/4.0, continue/4.0: file 4.0 was - initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * testsuite/modules.50-cmds/999-cleanup.exp: file 999-cleanup.exp - was initially added on branch modules-3-2-0. - -2006-02-21 14:26 rkowen - - * ModuleCmd_Load.c, NEWS, cmdModule.c, modules_def.h, utility.c, - doc/modulefile.4.in, testsuite/config/unix.exp, - testsuite/modulefiles/break/2.0, testsuite/modulefiles/break/4.0, - testsuite/modulefiles/continue/1.0, - testsuite/modulefiles/continue/2.0, - testsuite/modulefiles/continue/3.0, - testsuite/modulefiles/continue/4.0, testsuite/modulefiles/exit/1.0, - testsuite/modulefiles/exit/2.0, testsuite/modulefiles/exit/3.0, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.50-cmds/210-exit.exp, - testsuite/modules.50-cmds/220-continue.exp, - testsuite/modules.50-cmds/230-loop.exp, - testsuite/modules.50-cmds/999-cleanup.exp: Added or fixed up the - Tcl "break", "continue", and "exit N" commands to have definite - meanings, and also added tests for the same. - -2006-02-21 10:05 rkowen - - * testsuite/config/unix.exp: Catch the exit return code too. - -2006-02-13 09:42 rkowen - - * ModuleCmd_Load.c, main.c, modules_def.h, utility.c: Added the - ReturnValue() fn to consolidate Tcl exit & result string testing. - -2006-02-09 13:32 rkowen - - * init/: Makefile.am: Fixed the tcsh target. - -2006-02-06 14:03 rkowen - - * cmdModule.c, cmdPath.c, init.c, modules_def.h: Rolled in the - Tcl_GetStringResult() changes from 3.2.0 - -2006-02-06 13:52 rkowen - - * cmdModule.c, cmdPath.c, init.c, modules_def.h: Got rid of all - explicit interp->result statements. Such access is deprecated. - Replaced with tcl_GetStringResult() which may be a macro for Tcl - versions before 8.0. - -2006-02-06 09:30 rkowen - - * .cvsignore, Makefile.am, modulefiles/Makefile.am: Added the lang - modulefiles and upgraded the Makefile.am-s to create a working - distribution tar ball. - -2006-02-04 21:11 rkowen - - * Makefile.am: After 'gettextize'. - -2006-02-04 21:08 rkowen - - * configure.ac: The changes of 'gettextize', note that autopoint is - not too smart with AC_CONFIG_AUX_DIR ... it appends on any text - after macro to the directory name. So do not add 'dnl' for - comments or to escape the \n. - -2006-02-04 13:54 rkowen - - * version.c: The current version for the i18n mods is 3.3 alpha - -2006-02-04 13:53 rkowen - - * main.c: Alert translators to the "common" strings. - -2006-02-04 13:06 rkowen - - * error.c, init.c, utility.c, init/perl.in: Rolled in fixes from - the main trunk to the 3.2.0 branch. - -2006-02-04 12:44 rkowen - - * error.c: Fixed grammar error. - -2006-02-04 09:04 rkowen - - * utility.c: [ 730293 ] remove-path won't remove paths with a $ in - it. Made the change and the tests ran fine. I'm not sure what - cleanse_path() is supposed to do. - -2006-02-04 08:33 rkowen - - * init.c: [ 672612 ] Tcl command execution failed and modules use - pointed out the use of the deprecated Tcl fn Tcl_VarEval(). - Replaced this with Tcl_Eval() and added some Tcl logic to handle - when $auto_path is not set. - -2006-02-04 00:36 rkowen - - * init/perl.in: Fixed where it needs to reference $ENV{...} [ - 705033 ] Bug in init/perl - -2006-02-03 17:41 rkowen - - * init/perl.in: Added 1 at end so perl/init can be used by the perl - require. - -2006-02-03 17:12 rkowen - - * cmdConflict.c: Removed i18n from the debugging statements ... not - necessary. - -2006-02-03 17:10 rkowen - - * Makefile.am, utility.c: Rolled in the changes from 3-2-0 patch1 - -2006-02-03 16:46 rkowen - - * Makefile.am: Added macros for gzip and bzip2 - -2006-02-03 16:45 rkowen - - * version.c: Trying to get the patching working. - -2006-02-03 16:21 rkowen - - * version.c: Set to patch level 1 - -2006-02-03 16:20 rkowen - - * utility.c: Fixed the sh alias function syntax when being eval'd. - -2006-02-03 16:11 rkowen - - * Makefile.am: Forgot to add the LICENSE.GPL to the distribution. - -2006-02-03 14:36 rkowen - - * utility.c: Added ';' in the list of escaped chars. - -2006-01-30 20:16 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, cmdConflict.c, cmdModule.c, cmdUname.c, - cmdVersion.c, cmdXResource.c, configure.ac, error.c, getopt.c, - init.c, locate_module.c, main.c, modules_def.h, utility.c: First - pass through tagging all the translateable text with _(...), etc. - for easy extraction by xgettext. Passes all tests. - -2006-01-26 11:55 rkowen - - * Makefile.am, configure.ac, main.c, modules_def.h: Setting up - autoconf for handling i18n & l10n. - -2006-01-26 10:07 rkowen - - * configure.ac: The AC_AIX check needs to be before any compiler - tests. Added the AM_GNU_GETTEXT macro for i18n & l10n. - -2006-01-23 13:44 rkowen - - * Makefile.am, modules.lsm.in: Changed over to the newer - ibiblio.org version 4 LSM format. - -2006-01-23 13:33 rkowen - - * Makefile.am, modules.lsm.in: Updated for LSM version 4 - -2006-01-19 13:29 rkowen - - * Makefile.am, modules.lsm.in: Changed from sunsite to ibiblio - (same thing though). - -2006-01-19 10:23 rkowen - - * modules.lsm.in: Can't ftp into the SourceForge.net site. - -2006-01-17 21:37 rkowen - - * version.c: Ready for the 3.2.0 release - -2006-01-17 21:24 rkowen - - * MACHINES, NEWS: News about eliminating --with-force-path. - -2006-01-17 14:58 rkowen - - * README, cmdModule.c, configure.ac, modules_def.h, utility.c: - Removed the --with-force-path option ... which basically makes sure - that PATH and LD_LIBRARY_PATH have some minimum values, given by a - couple of MODULE_*_SACRED env.vars. If you need something like - this, then you've probably written your modulefiles wrong! - -2006-01-17 14:51 rkowen - - * cmdXResource.c: Eliminated the C++ style commented lines. - -2006-01-17 12:59 rkowen - - * config/emtcl.m4: Shortened option to --with-tcl-ver and fixed - some minor problems with it. - -2006-01-17 12:58 rkowen - - * configure.ac: Fixed what happens when no /bin/csh and the - split_size is not set. - -2006-01-17 12:57 rkowen - - * utility.c: Add some casts to eliminate warning messages. - -2006-01-12 13:15 rkowen - - * cvs2cl.pl: Don't need to track xref/ changes. - -2006-01-12 12:31 rkowen - - * version.c: Updated version date. - -2006-01-12 12:31 rkowen - - * main.c, modules_def.h: Have --version list out the version date - also. - -2006-01-12 11:44 rkowen - - * testsuite/home/.cvsignore: Ignore the test generated file. - -2006-01-12 11:44 rkowen - - * testsuite/home/.modules: This gets made when a test is performed. - -2006-01-12 11:19 rkowen - - * .cvsignore, doc/.cvsignore, etc/.cvsignore, init/.cvsignore: More - things to ignore. - -2006-01-12 11:15 rkowen - - * ModuleCmd_Init.c, NEWS, version.c: Reworked the "module init*" - subcommand to handle dot files with multiple "module load" lines. - -2006-01-12 11:14 rkowen - - * INSTALL: Added the documentation related to --with-tcl-*. - -2006-01-12 11:09 rkowen - - * config/emtcl.m4, config/tcl.m4, configure.ac: Reintroduced (or - added) the configure options --with-tcl-{versions|lib|include} to - allow the user to specify any values which may be missing from the - tclConfig.sh script. - -2006-01-12 10:53 rkowen - - * testsuite/: home/.modules, home/.modules.save, - modules.60-initx/005-init.exp, modules.60-initx/010-list.exp, - modules.60-initx/020-add.exp, modules.60-initx/030-switch.exp, - modules.60-initx/040-prepend.exp, modules.60-initx/050-rm.exp, - modules.60-initx/060-2nd.exp, modules.60-initx/095-cleanup.exp: - Added a test suite for the "module init*" subcommands. - -2006-01-12 10:51 rkowen - - * testsuite/modules.50-cmds/070-alias-proc.exp: Use the "native" - Tcl file remove command. - -2006-01-12 10:46 rkowen - - * utility.c: Minor formatting changes. - -2006-01-12 10:44 rkowen - - * modules_def.h: Minor reformatting. - -2006-01-12 10:43 rkowen - - * Makefile.am: Added INSTALL.RH7x to the distribution pkg. - -2005-12-15 10:25 rkowen - - * INSTALL: Updating the INSTALL doc for 3.2.0 - -2005-12-15 09:35 rkowen - - * version.c: Time for the 3.2.0 release - -2005-12-14 11:14 sirdude - - * tcl/modulecmd.tcl: - - Added the system command. - - Kent - -2005-12-13 08:49 sirdude - - * tcl/modulecmd.tcl: - - Fix by Marcus Wagner. - - Makes it so module unload works the same way module load does. - Specifically for the break command. - - Kent - -2005-12-12 13:00 sirdude - - * tcl/modulecmd.tcl: - - Fix provided by Mark Moraes. - - Prevents modulefilename collisions by prepending slaves with __ - before commit if you had a module file named: module-info and tried - to do a module show module-info you would get: bad option "mode": - must be alias, aliases, eval, expose, hide, hidden, issafe, - invokehidden, or marktrusted invoked from within - "module-info mode whatis " Now it works. - - Kent - -2005-12-12 12:49 sirdude - - * tcl/modulecmd.tcl: - - removed unused variable junk from 3 places in the code. (was just - setting it to "" in all 3 places) - - Kent - -2005-12-05 15:09 rkowen - - * cvs2cl.pl: Changed the ChangeLog script to not record changes - about itself to itself. - -2005-12-05 14:42 rkowen - - * testsuite/modules.50-cmds/170-swap.exp: Added more single - argument "swap" tests. - -2005-12-05 10:48 rkowen - - * Makefile.am, NEWS, cvs2cl.pl, stripmkf, version.c: Added the - cvs2cl.pl perl script for generating the ChangeLog - semi-automatically. Removed stripmkf - an artifact from older - releases. - -2005-12-05 08:38 rkowen - - * etc/Makefile.am, ext/Makefile.am: Put the add.modules/add.ext & - mkroot scripts under the --prefix bin directory since those scripts - are platform independent, and the modules modulefile will point to - these scripts. - -2005-12-01 23:07 rkowen - - * configure.ac, init/Makefile.am, modulefiles/Makefile.am: Put the - init/ scripts under the --exec-prefix directory, because they point - to the platform specific modulecmd. - -2005-11-30 10:53 rkowen - - * cmdSetenv.c, configure.ac, modules_def.h, utility.c, version.c, - init/.modulespath.in, modulefiles/Makefile.am: * Eliminated any - warnings caused by using Tcl 8.4 * Fixed any mixed size differences - when using ints and pointers. (Only an issue with 64 bit - machines.) - -2005-11-28 20:26 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Clear.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_List.c, ModuleCmd_Load.c, - ModuleCmd_Switch.c, ModuleCmd_Whatis.c, cmdAlias.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdTrace.c, - cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, - error.c, getopt.c, init.c, locate_module.c, main.c, utility.c: Made - all the 'First Edition' years to be 4 digits. - -2005-11-28 20:16 rkowen - - * ModuleCmd_Clear.c, ModuleCmd_Init.c, ModuleCmd_Purge.c, - ModuleCmd_Refresh.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - cmdAlias.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, - cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, - cmdUlvl.c, cmdUname.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, - cmdXResource.c, init.c, locate_module.c, main.c, modules_def.h, - utility.c, version.c: Added the CONST84 qualifier to eliminate - compiler warnings, and the side effects. - -2005-11-26 23:24 rkowen - - * config/tcl.m4: It's not an error (exit) if it can't find - tclxConfig.sh! - -2005-11-26 10:11 rkowen - - * Makefile.am: Should read the sf.net file-release-system notes - before changing the ftp-sourceforge target. - -2005-11-26 09:30 rkowen - - * Makefile.am, configure.ac, modules.lsm.in: Updated the LSM and - the creation and handling of distribution tarballs. - -2005-11-25 20:40 rkowen - - * Makefile.am, modulefiles/Makefile.am: Rolled in the Make - versioning install fragment from the predeep branch. - -2005-11-25 11:40 rkowen - - * Makefile.am: Need to include ./docs in SUBDIRS - -2005-11-25 11:25 rkowen - - * configure.ac, testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/078-refresh.exp: Finished the - alias/refresh tests for sourcing a tmpfile, and also the special - case for the Bourne shell where funcs and no aliases. - -2005-11-21 22:16 rkowen - - * ModuleCmd_Refresh.c, ModuleCmd_Update.c, main.c, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/078-refresh.exp: Cleaned up the test proc - code, and normalized the "refresh" code to the existing standard. - -2005-11-21 12:13 rkowen - - * Makefile.am, ModuleCmd_Refresh.c, cmdConflict.c, cmdInfo.c, - cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, main.c, - modules_def.h, doc/module.1.in: * ModuleCmd_Refresh.c: Like - "update" but refreshes only the non-persistent attributes of the - currently loaded modules, regardless of the state of the loaded - modules (i.e. refresh aliases). (still needs some test code) - -2005-11-21 11:32 rkowen - - * cmdConflict.c, version.c: * cmdConflict.c: Fixed memory - allocation bug in cmdPrereq(). When there is more than 1 - argument to the prereq command, both savedlens and savedlists - were indexed past what the initial malloc allowed. - -2005-11-15 13:28 sirdude - - * tcl/modulecmd.tcl: - Updated alias function so that it also works on ksh. I tested it - on a couple of different sh shells and everything seems to work - this way, and it wasn't working on some of them before. - - Kent - -2005-11-14 19:43 rkowen - - * .cxref, Makefile.am: Updated the cxref docs - -2005-11-14 15:51 rkowen - - * Makefile.am, ModuleCmd_Avail.c, ModuleCmd_Bootstrap.c, - ModuleCmd_Init.c, ModuleCmd_List.c, ModuleCmd_Update.c, - ModuleCmd_Use.c, README, acinclude.m4, cmdConflict.c, cmdInfo.c, - cmdIsLoaded.c, cmdModule.c, cmdPath.c, cmdTrace.c, cmdUlvl.c, - cmdVersion.c, configure.ac, error.c, init.c, locate_module.c, - main.c, modules_def.h, utility.c, version.c, config/tcl.m4, - doc/module.1.in, modulefiles/module-cvs.in, testsuite/.cvsignore, - testsuite/config/unix.exp, - testsuite/modules.00-init/005-init_ts.exp, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/015-version.exp, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/050-modpath.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/045-symvers.exp, - testsuite/modules.20-locate/046-getsym.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.20-locate/048-symexec.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.30-userlvl/050-expert.exp, - testsuite/modules.30-userlvl/055-exp.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/017-use-undo.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/081-info-user.exp, - testsuite/modules.50-cmds/082-info-user-exp.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/085-info-flags.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/110-verbose.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp, - testsuite/modules.50-cmds/140-system.exp, - testsuite/modules.50-cmds/150-module.exp, - testsuite/modules.50-cmds/170-swap.exp, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/030-purge.exp, - testsuite/modules.70-maint/050-whatis-load.exp, - testsuite/modules.70-maint/060-apropos.exp, - testsuite/modules.70-maint/095-cleanup.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp, - testsuite/modules.95-version/999-cleanup.exp: Merged in the - modules_3_2_predeep_branch branch to the main trunk. Removed the - hash library. - -2005-11-14 11:07 rkowen - - * error.c: Fixed segfault in scan_facility() - only when optimized. - -2005-11-14 09:22 rkowen - - * init/Makefile.in, modulefiles/Makefile.in: [no log message] - -2005-11-14 09:22 rkowen - - * Makefile.am, Makefile.in, acinclude.m4, aclocal.m4, configure, - configure.ac, modules_def.h, config/compile, config/depcomp, - config/install-sh, config/missing, config/mkinstalldirs, - config/tcl.m4, etc/Makefile.in, ext/Makefile.in: Reordered the - configure.ac ... look for X11 libs after testing for special fns. - -2005-11-11 17:33 rkowen - - * Makefile.am, Makefile.in: Fixed the "make disthelp" with regards - to "make dist" which no longer does a tag first. - -2005-11-11 17:29 rkowen - - * modules_def.h: Added the countTclHash() declaration. - -2005-11-11 14:51 rkowen - - * Makefile.am, Makefile.in, configure, configure.ac, version.c, - config/tcl.m4, etc/Makefile.in, ext/Makefile.in, init/Makefile.in, - modulefiles/Makefile.in, modulefiles/module-cvs.in: * Updated the - config/tcl.m4 (used by configure) - -2005-11-04 08:43 rkowen - - * Makefile.in, README, config.h.in, configure, configure.ac: * The - configure script now tests how large env.vars. can be for - /bin/csh, the default behavior is if > 4000 then do not set - --with-split-size, else if smaller then set to the tested value - - 20. If the option is given, but no value, then set to 1000. - -2005-10-31 14:38 rkowen - - * Makefile.am, Makefile.in, configure, configure.ac, utility.c, - version.c, init/.modulespath.in, modulefiles/module-cvs.in: * - Expand '$$' to the current process id when performing one level - of variable expansion for the MODULESBEGINENV env.var * Fixed up - the automake/autoconf scripts to create a workable distribution - tarball * Fixed the configuration behavior if --exec-prefix is - given - -2005-10-17 15:38 rkowen - - * modulefiles/: Makefile.am, Makefile.in: Got the version file - installing/uninstalling just right. - -2005-10-11 15:57 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Use.c, README, - config.h.in, configure, configure.ac, error.c, init.c, - modules_def.h, doc/module.1.in, testsuite/.cvsignore, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/030-purge.exp, - testsuite/modules.95-version/999-cleanup.exp: * Added and set the - default for --enable-beginenv=test, which means that this feature - is enabled by the user by setting the MODULESBEGINENV env.var. - for a file name (allows one level of variable expansion). - -2005-10-03 16:19 rkowen - - * ModuleCmd_Avail.c: Better comments. - -2005-10-03 16:14 rkowen - - * ModuleCmd_Avail.c, testsuite/modulefiles/.moduleavailcache, - testsuite/modulefiles/.moduleavailcachedir: * Have the caching skip - version control directories (CVS, RCS, .svn) unless they have a - .version file then assume the directory is a genuine modulefiles - directory. - -2005-10-03 12:41 rkowen - - * error.c, init.c, testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/095-cleanup.exp: * Fixed the tests to - work when --enable-beginenv ... also changed the error message - when disabled. - -2005-09-29 13:12 rkowen - - * utility.c, testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp: * Added or Fine-tuned - the --enable-shell-funcs, --enable-shell-alias and - --enable-shell-eval configure options. The configure script will - test for the existence of the first two properties in /bin/sh - where the options can override the tested values. Made the - associated tests conditional on the existence of these properties. - -2005-09-26 22:15 rkowen - - * utility.c, testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp: Made the sh alias more - dependent on HAS_BOURNE_{FUNCS|ALIAS} (or variable set versions of - them). - -2005-09-26 11:44 rkowen - - * config.h.in, configure, configure.ac, main.c: Have the configure - script test whether the Bourne shell has functions and/or aliases. - -2005-09-25 13:16 rkowen - - * Makefile.in, configure, configure.ac, utility.c, version.c, - testsuite/config/unix.exp, - testsuite/modules.00-init/005-init_ts.exp, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/015-version.exp, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/050-modpath.exp: Fixed the version_test() - macro for testing, and fixed up some tests. Mostly just - miscellaneous. - -2005-09-22 14:19 rkowen - - * Makefile.am, Makefile.in, config.h.in, configure, configure.ac, - utility.c, init/Makefile.in, modulefiles/Makefile.in, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.50-cmds/075-alias.exp: Upgraded to autoconf 2.59 - and make the sh alias test conditional on HAS_BOURNE_FUNCS - -2005-09-22 12:40 rkowen - - * testsuite/modules.20-locate/048-symexec.exp: Fixed a broken test. - -2005-09-22 12:06 rkowen - - * README, cmdPath.c: * Fixed bug in "Switch" command when - --enable-free was set which caused some of the tests to fail. - -2005-09-19 16:02 rkowen - - * Makefile.in, aclocal.m4, cmdUlvl.c, configure, config/compile, - config/depcomp, config/install-sh, config/missing, - config/mkinstalldirs, etc/Makefile.in, ext/Makefile.in, - init/Makefile.in, modulefiles/Makefile.in: * Fixed the UserLevel - check code (which failed when optimized) - -2005-09-19 15:19 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Bootstrap.c, cmdModule.c, - cmdTrace.c, main.c, modules_def.h: Removed the BootStrap code, - since Mark Lakata didn't finish the job. - -2005-09-19 15:10 rkowen - - * utility.c, testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/045-symvers.exp, - testsuite/modules.20-locate/046-getsym.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.20-locate/048-symexec.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.30-userlvl/050-expert.exp, - testsuite/modules.30-userlvl/055-exp.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/017-use-undo.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/081-info-user.exp, - testsuite/modules.50-cmds/082-info-user-exp.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/085-info-flags.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/110-verbose.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp, - testsuite/modules.50-cmds/140-system.exp, - testsuite/modules.50-cmds/150-module.exp, - testsuite/modules.50-cmds/170-swap.exp, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp, - testsuite/modules.70-maint/030-purge.exp, - testsuite/modules.70-maint/050-whatis-load.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp: The modulecmd was not - deterministic (i.e. it spit things out according to how TclHash had - them stored). This is bad for testing and when libtcl changes (as - in the case of Tcl 8.4). The output is now deterministic, but this - required that some 390 of the 520 tests be reworked for this new - order. - -2005-09-19 11:45 rkowen - - * testsuite/: modules.50-cmds/085-info-flags.exp, - modules.50-cmds/200-break.exp, modules.70-maint/060-apropos.exp: - Finished working through the tests, and setting them to pass. This - is before any deterministic sorting, so these tests may fail with a - different Tcl library (and hash order). - -2005-09-08 19:35 rkowen - - * Makefile.am, Makefile.in, aclocal.m4, configure, etc/Makefile.in, - init/Makefile.in, modulefiles/Makefile.in, - testsuite/config/unix.exp, testsuite/modules.00-init/006-procs.exp, - testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp: Got most of the - test nits. The only ones left are due to "break"s - -2005-07-21 13:18 sirdude - - * tcl/modulecmd.tcl: - - Made it so g_debug is passed to the module files. - -2005-05-09 09:15 sirdude - - * tcl/modulecmd.tcl: - - Removed error message that shouldn't be print there. It was - printing an error complaining it couldn't find a module even though - it could. - -2005-05-05 07:16 sirdude - - * tcl/modulecmd.tcl: - - Added a space between columns in module list command. - - Kent - -2005-04-27 10:48 sirdude - - * tcl/modulecmd.tcl: - - Fix so module swap perl perl works the same as module swap perl - - (before was different if you had a different version than the - default loaded) - - Kent - -2005-04-27 09:31 sirdude - - * tcl/modulecmd.tcl: - - Ran modulecmd.tcl through frink since no one complained about doing - it. - - Kent - -2005-04-27 09:21 sirdude - - * tcl/modulecmd.tcl: - - added lazy find for module switch - - Example: Say you have the following modules perl/5.6 - perl/5.8(default) and you have perl/5.6 loaded currently. Now you - can do module switch perl perl and it will unload perl/5.6 and load - perl/5.8 before it would error saying the perl module is not - loaded. - - Kent - -2005-04-19 10:14 sirdude - - * tcl/modulecmd.tcl: - - I added -l and -t options for module list and module avail also - fixed resolveModuleVersionOrAlias up a bit so it deals with - module(default) - - Kent - -2005-04-15 08:02 sirdude - - * tcl/modulecmd.tcl: - - fix (default) display on modules that are "deep" soft/xemacs/21.4 - etc.... - - Kent - -2005-04-15 05:18 sirdude - - * tcl/modulecmd.tcl: - - made reload unload all modules then load them all in the proper - order. Similar to module swap. - - Kent - -2005-04-14 11:47 sirdude - - * tcl/modulecmd.tcl: - - Modified module switch so it unloaded last module first down to the - module its swapping out and then reloaded everything in order. - - Before it was unloading them starting at the module to be swapped - out to the end and then loading them in the same order. Probably - not a big deal but code is actually shorter now and is probably - more correct. - - I also added -a and -append as alternatives to --append and - --prepend for module use. (There were comments saying it would be - nice to have that) - - Kent - -2005-04-14 08:03 sirdude - - * tcl/modulecmd.tcl: - - fixes module whatis problem with (default) before it wasn't able to - find modules that had a .version file. - - Kent - -2005-04-14 07:31 sirdude - - * tcl/modulecmd.tcl: - - Added two more globals DEF_COLUMNS and MODULES_CURRENT_VERSION and - removed hardcoded bits relating to them. - - Also removed some misc code that was commented out and no longer - used. - - Kent - -2005-04-11 11:21 rkowen - - * .cvsignore: Be less specific when ignoring the autom4te.cache - -2005-04-11 10:57 rkowen - - * .cvsignore, doc/.cvsignore, etc/.cvsignore, - etc/global/.cvsignore, etc/skel/.cvsignore, ext/.cvsignore, - ext/common/.cvsignore, init/.cvsignore, modulefiles/.cvsignore, - testsuite/.cvsignore: Added a bunch of .cvsignore files to quit - carping about "made" files. - -2005-04-11 10:32 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Avail.c, acconfig.h, - acinclude.m4, aclocal.m4, config.h.in, configure, configure.ac, - configure.in, main.c, utility.c, version.c, config/.cvsignore, - config/tcl.m4, doc/Makefile.am, doc/Makefile.in, etc/Makefile.am, - etc/Makefile.in, etc/add.modules.in, etc/global/bashrc.in, - etc/global/csh.cshrc.in, etc/skel/.cshrc.in, etc/skel/.kshenv.in, - init/.modulespath.in, init/Makefile.am, init/Makefile.in, - init/bash.in, init/csh.in, init/ksh.in, init/perl.in, - init/python.in, init/sh.in, init/tcsh.in, init/zsh.in, - modulefiles/Makefile.am, testsuite/modulefiles/system/2.0, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/050-modpath.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/065-rcerrs.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.70-maint/010-init_ts.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/070-display.exp: Setting the 3.1.7 line - to use the same automake & autoconf as the 3.2.x line. - -2005-04-11 10:04 rkowen - - * version.c: Trial of branch check-ins - -2005-04-08 04:35 sirdude - - * tcl/modulecmd.tcl: - - Fix module swap so that it unloads old module and everything after - it then loads new and everything that was after old. - - Kent - -2005-04-08 02:29 sirdude - - * tcl/modulecmd.tcl: - - Fix up module init(cmds) I made them behave like the c versions - example before the initadd added a module to every module load - line now it just does the first. - - I have a ~/.modules directory and before this caused the init(cmds) - to fail. - - Also made it so it only changes one file not all . files it goes - through. - - Kent - -2005-04-07 05:58 sirdude - - * tcl/modulecmd.tcl: - - Moved some global variables up to the top of the file. - - Kent - -2005-04-06 05:57 sirdude - - * tcl/modulecmd.tcl: - - Modified patch for prereq's I also fixed a small problem in the - module show for prereq's - - Kent - -2005-04-06 05:19 sirdude - - * tcl/modulecmd.tcl: - - Rodney Mach's unalias fix - - Kent - -2004-11-18 08:37 lakata - - * tcl/: README-EMACS.txt, init/lisp.in, init/.cvsignore: submitted - by tbennett@nvidia.com - -2004-11-18 08:35 lakata - - * tcl/: modulecmd.tcl, init/Makefile: patch for Emacs from - tbennett@nvidia.com - -2004-11-05 11:25 lakata - - * tcl/modulecmd.tcl: added more error checking to init/modulerc. - probably should change this yet again to standardize the naming - convention - -2004-11-05 11:13 lakata - - * tcl/modulecmd.tcl: changed hardcoded path to /home/Mark etc to - $MODULESHOME - -2004-10-22 00:57 lakata - - * tcl/init/README.txt: added instructions on using the new autoinit - feature - -2004-10-22 00:52 lakata - - * tcl/modulecmd.tcl: added autoinit feature. not documented until - we get some feedback - -2004-10-21 18:34 harlan - - * locate_module.c: cleanup/refactor - -2004-10-21 18:33 harlan - - * configure.ac: cleanup - -2004-10-21 18:32 harlan - - * ModuleCmd_Avail.c: USE_COLCOMP -> DEF_COLLATE_BY_NUMBER - -2004-10-21 18:31 harlan - - * Makefile.am: Alphabetize... - -2004-10-15 11:20 lakata - - * tcl/modulecmd.tcl: * made compatibility changes with tcl < 8.1. - string equal changed to string match and changes to regular - expressions. There is now a caveat: module init* commands won't - work if there are tabs in your startup file around the module - commands if tcl < 8.1. * Fixed display so that setenv values don't - give an error if used later in the module during display - - * Fixed bug with Perl. rendersetting output now ends with "1;" for - perl so that the require command works correctly - - * Changed noexistent path error to warning in cmdModuleUse. - Otherwise, if you gave more than one path, some of the other legal - paths may not get added. This is a revert back to how modulecmd - was originally and probably breaks compatability with the C version - in this regard - -2004-10-12 17:38 lakata - - * tcl/modulecmd.tcl: * Fixed ModulesHelp so that it doesn't error - out when not present * Added module-verision,module-alias, - module-trace, module-user, module-verbosity, and module-log to - module file execution. All but module-version and module-alias - give a warning that it is not implemented * Added module-trace, - module-user, module-verbosity, and module-log to modulerc - execution. All give warnings that the funcionatlity is not - implemented * Added #%Module checking on .version and .modulerc - files * execute-version will now add version defaults to the global - defaults array like .modulerc files do * .version files are no - longer executed if a .modulerc is executed in the same directory * - module-info symbols command implemented (could use more testing) * - module-info version command implemented (could use more testing) * - moduule-info alias command implemented * module-version - fixed - problem of adding duplicate version aliases to global hash * - module-alias updated to keep track of aliases by module name in - global hash * Fix unload-path so that setenv-path followed by - prepend-path works during unload * fixed bug in is-loaded. It took - a list of modules as an argument but would return true if only one - of the arguments was loaded. Now all arguments have to be loaded - to return true. * Added getVersAliasList function. Returns list - of default and version aliases given a modulename/version * Added - default and version alias information to avail and list output * - Added a few more "----" to the module list output - -2004-10-12 17:37 lakata - - * tcl/modulecmd.tcl: modulecmd.tcl - -2004-10-07 11:52 lakata - - * tcl/modulecmd.tcl: (1) Andrew Barbers changes to fix some bugs. - (2) Mark Lakatas change to sym links under cygwin. removed check - for MODULEPATH, since you can use "module use ..." to set it - -2004-10-05 09:44 lakata - - * tcl/modulecmd.tcl: from Andrew Barber: Here is another update. - This one has some tricky changes. Most of it was done to try and - get the testsuite to pass. I added a few more features too. The - biggest changes were in: getPathToModule - now it can resolve - aliases found in .modulerc and .version files , runModulerc - now - this is responsible for finding and executing the global .modulerc - files (new feature for tcl version) - -2004-10-04 19:30 lakata - - * tcl/modulecmd.tcl: patch from Tony Bennett. need for gentoo - system - -2004-10-01 10:53 lakata - - * tcl/modulecmd.tcl: Andrew Barbers changes: * added - module-verision and module-alias commands, * added automatic of - execution .modulerc files found in module directories, * added - switch processing and -debug switch for debug messages - -2004-09-29 23:58 lakata - - * tcl/modulecmd.tcl: (1) added more commands to the internal - "module" command (2) added all of the init* commands, like initadd - (3) changed the help message slightly - -2004-09-23 09:36 sirdude - - * tcl/modulecmd.tcl: - - David Mores patch so that first module in module list is shown - again. - - Sorry about that I should have caught that before... - - Kent - -2004-09-23 09:32 sirdude - - * tcl/modulecmd.tcl: - - Mark Moe's patch to prevent infinate loop when you have module a - loading module b where module b has a .version that points to - unavailable version of module b - - Kent - -2004-09-21 12:00 sirdude - - * tcl/modulecmd.tcl: - - David Mores, - - patches to the COLUMNS stuff. - - Kent - -2004-09-21 08:04 sirdude - - * tcl/modulecmd.tcl: - - Mark Moe's patch for skipping 0 length modules in module list and - adding the printing of: "Currently Loaded Modulesfiles:" - - Kent - -2004-09-16 10:03 sirdude - - * tcl/modulecmd.tcl: - - Harlan Stenn's Patch from Phong Nguyen, - - It basically wraps the openning of a tmpfile in a catch command - - I also updated the error message after it to use the tmpfile var - instead of hardcoding it... - - Kent - -2004-05-25 12:20 sirdude - - * tcl/init/: bash.in, csh.in, ksh.in, perl.in, python.in, sh.in, - tcsh.in, zsh.in: - tcl version of modules now looks at environment var TCLSH if it - exits and uses that first. - - Suggested by David Astrom. - - Kent - -2004-05-25 08:09 sirdude - - * tcl/modulecmd.tcl: - Use env(COLUMNS) if its defined instead of a hard coded number. - submitted by David Astrom through Mark Lakata. - - Kent - -2004-04-21 11:16 sirdude - - * tcl/modulecmd.tcl: - - David Mores patch to prevent tcl version from hanging with a - .version file that does not set the ModulesVersion correctly. - - Kent - -2004-01-16 07:26 sirdude - - * tcl/Makefile: - - removed clean and test from the default make. - - Kent - -2004-01-15 22:28 sirdude - - * tcl/Makefile, testsuite/config/unix.exp: - - Made it so that the testsuite works with the tcl version of - modules. Current stats for the tcl version are: # of expected - passes 146 # of unexpected failures 376 - - Not too shabby, I'm guessing it will be fairly straight forward to - increase this by quite a bit. - - Kent - -2004-01-15 07:53 sirdude - - * tcl/init/: bash.in, csh.in, ksh.in, perl.in, python.in, sh.in, - tcsh.in, zsh.in: - - Modified the tcl init files so that they try to find tclsh, this - should make them quite a bit faster assuming they find it. (This - way it locates the shell just once instead of for every single - command.) - - Kent - -2004-01-15 07:49 sirdude - - * tcl/modulecmd.tcl: - - Improved module help functionatlity for the tcl version of modules. - now you can type module help (module) - - also commiting the patch someone submitted to the board that allows - for .version files in directorys other than the top level. (for tcl - version only) - - Kent Mein - -2003-10-29 19:05 harlan - - * tcl/modulecmd.tcl: bash requires a space after the { on function - definitions. - -2003-10-29 16:25 harlan - - * tcl/modulecmd.tcl: Remove the /tmp file early. Use the - "function" keyword when creating sh functions; otherwise if the - function already exists the name gets expanded on some shells. - -2003-10-28 11:11 lakata - - * tcl/modulecmd.tcl: prevent "break" from generating an error - message - -2003-10-27 09:46 lakata - - * tcl/modulecmd.tcl: 1) module-info shell and shelltype would - generate an TCL error when used (FIXED) 2) remove-path had two - typos in it (FIXED) 3) Added detection of full path in - getPathToModule procedure - -2003-10-20 11:33 lakata - - * tcl/modulecmd.tcl: - - 1) Add support for the other shells that the C version includes 2) - Add support for prereq command 3) Replace the "/bin/uname" calls to - use the tcl_platform variable and "info hostname" command - - Enclosed are my latest modulecmd.tcl updates. I have added most of - the features that I thought it needed and implemented the slave - interpreter to execute modulefile in. I have tested it to some - degree but not very seriously. - - Richard.M.Born@seagate.com - -2003-10-15 15:27 lakata - - * tcl/modulecmd.tcl: fixed two bugs in the display command - -2003-10-07 14:24 lakata - - * tcl/modulecmd.tcl: cleaned up the mode and modulename settings - that used to be access via the upvar. also changed the calling - convention for getPathToModule, which now does not throw an - exception for minor warnings - -2003-10-07 10:14 lakata - - * tcl/modulecmd.tcl: fixed a bug where the result of the catch is - either an error or the last command - -2003-10-06 15:35 lakata - - * tcl/modulecmd.tcl: fixed a bug in the popMode command and made it - backward compatible with tcl 8.0 - -2003-10-06 15:22 lakata - - * tcl/modulecmd.tcl: 1. pulled all references to puts stderr to - report/reportWarnings/reportInternalBug. 2. changed the way the - g_mode variable is handled. Instead of relying on the call stack, - it now uses an explicit stack, which should solve any problems with - using other namespaces 3. removed a bunch of debugging statements. - 4. fixed the way errors are handled, giving more meaningful - responses. 5. if an error is caught in load, the env/alias settings - are NOT updated and restored to a previous state. for instance, in - a conflict this is important. - -2003-10-06 12:04 lakata - - * tcl/modulecmd.tcl: fixed bug in listModules that was failing on - cygwin - -2003-10-03 11:05 lakata - - * tcl/modulecmd.tcl: Proxy check in for Richard.M.Born@seagate.com. - He wrote: - - 1) It didn't handle modulefiles in the main directory for commands - like module avail 2) It didn't define the ModulesCurrentModulefile - variable 3) It didn't ignore certain temp files (*~, #*#) 4) It - didn't look for the Modulefile MagicCookie to filter out - non-modulefiles - - I have updated modulecmd.tcl to address these issues. I have - removed lsHack and replaced it with listModules procedure. I am - not familiar with the glob issue that you noted for Cygwin so you - may want to run a few test cases to see if the new function still - works for you. I also updated the module paths command to what I - think you were intending. - -2003-08-07 18:39 harlan - - * tcl/modulecmd.tcl: Changes to lsHack for cmdModulePath and - friends. - -2003-08-07 14:23 harlan - - * tcl/modulecmd.tcl: Typo - -2003-08-07 14:07 harlan - - * tcl/modulecmd.tcl: Add $Revision: 1.50.6.4 $ to the version - -2003-08-07 12:52 harlan - - * tcl/modulecmd.tcl: Initial support for "module path". - -2003-08-01 19:00 harlan - - * tcl/modulecmd.tcl: /bin/sh has no shell functions. Avoid an - extra call to getPathToModule - -2003-07-31 17:18 harlan - - * tcl/modulecmd.tcl: whitespace cleanup, lose cruft. - -2003-07-29 17:48 lakata - - * tcl/: README.txt, modulecmd.tcl: version 0.98: fixed a bug in the - error_count (missing closing brace). also implemented check to - abort the tempfile sourcing if the tempfile is empty. this is to be - more blackboxish, avoiding relying on the shell to do a clean up. - one of our users is not using the module command correctly, and it - is created a whole bunch of empty /tmp/modulescript files in the - /tmp dir. - -2003-07-15 14:36 harlan - - * tcl/modulecmd.tcl: Begin to handle errors. - -2003-07-09 18:12 harlan - - * tcl/modulecmd.tcl: * tcl/modulecmd.tcl: If g_force is set, ignore - *_modshare. - - When we produce a shell function, preface the definition with - "function" in case it's already defined. - - Default g_force to 1 now. - -2003-06-25 20:21 harlan - - * tcl/modulecmd.tcl: ModuleTcl: 0.97 Aliases: add/load, rm/inload, - nodename/node We need to eval more "cmdModule{Unl,L}oad $arg" lines - to: Implement --append (and --prepend) for cmdModuleUse Use - -dictionary lsorts to provide an easy substitute for colcomp(). - Added SCCS and RCS to the ignoreDir list. Moved ignoreDir - processing to lsHack to fix a problem. Make sure an empty - modulefile direcoty doesn't cause an error. - -2003-06-02 16:25 harlan - - * tcl/init/README.txt: Reformat some long lines. - -2003-05-30 11:55 lakata - - * tcl/init/: README.txt, bash.in, csh.in, ksh.in, modulerc, - perl.in, sh.in, tcsh.in, zsh.in: changed the way MODULEPATH is set - up. since this is another environment variable like all the others, - it is now set using the module command itself. pretty sneaky, huh? - -2003-05-30 11:42 lakata - - * tcl/modulecmd.tcl: 1. added the "source" command (experimental) - 2. added sanity checking to verify that something external did not - muck with path and path_modshare variables. 3. fixed a bug if you - use tcsh and your paths get longer than 1024 characters. - Previously, it was truncating the path, but this can get you into - trouble if important things like /usr/bin or /usr/local/bin are - truncated. The real solution is to STOP USING TCSH... use zsh - instead. - -2003-03-28 12:06 lakata - - * tcl/: README.txt, modulecmd.tcl: changes for cygwin. files should - not have cr/lf (DOS) endings. - -2003-03-28 12:05 lakata - - * tcl/init/: Makefile, README.txt, bash, bash.in, csh, csh.in, ksh, - ksh.in, perl, perl.in, python, python.in, sh, sh.in, tcsh, tcsh.in, - zsh, zsh.in: made init files more general - -2003-01-22 11:01 lakata - - * tcl/init/perl: error checking if something goes wrong in perl - -2003-01-22 11:00 lakata - - * tcl/modulecmd.tcl: fixed bugs with corrupted env vars, improved - the reliability of _modshare variables - -2002-11-29 12:41 lakata - - * tcl/modulecmd.tcl: changed help message - -2002-11-29 11:39 lakata - - * tcl/: README.txt, modulecmd.tcl, init/bash, init/csh, init/ksh, - init/perl, init/python, init/sh, init/tcsh, init/zsh, - init/zsh.debug: first check in - -2002-09-17 22:47 harlan - - * Makefile.am: * Makefile.am (modulecmd_CFLAGS): Use X_CFLAGS and - TCL_INCLUDES. - - * lib/tests/Makefile.am (EXTRA_PROGRAMS): Renamed from - noinst_PROGRAMS. Lose the .x suffixes. - - * lib/Makefile.am (ACLOCAL_AMFLAGS): Look in ../config/ . - -2002-09-16 09:49 rkowen - - * Makefile.am, ModuleCmd_List.c, TODO, colcomp.c, configure.ac, - locate_module.c, main.c, modules_def.h, utility.c: 2002-09-16 R.K. - Owen * colcomp.c: removed * - utility.c: added colcomp.c contents * Makefile.am: removed - colcomp.c * main.c: Added DEF_COLLATE_BY_NUMBER output for - --version * configure.ac: changed USE_COLCOMP to - DEF_COLLATE_BY_NUMBER, and added memdebug * locate_module.c: - changed USE_COLCOMP and GetModuleName for deep dirs. * - modules_def.h: check for HAVE_CONFIG_H, and added memdebug * - ModuleCmd_List.c: Simplified using uvec objects - -2002-09-12 21:53 rkowen - - * config/.cvsignore, init/.cvsignore: 2002-09-12 R.K. Owen - * config/.cvsignore: New File: Ignore - autogenerated files. * init/.cvsignore: Ignore autogenerated - files. - -2002-09-12 21:50 rkowen - - * .cvsignore, doc/.cvsignore, etc/.cvsignore, ext/.cvsignore, - modulefiles/.cvsignore: 2002-09-12 R.K. Owen - * .cvsignore: Ignore autogenerated files. - * doc/.cvsignore: Ignore autogenerated files. * - etc/.cvsignore: Ignore autogenerated files. * ext/.cvsignore: - Ignore autogenerated files. * lib/.cvsignore: Ignore - autogenerated files. * lib/tests/.cvsignore: Ignore autogenerated - files. * modulefiles/.cvsignore: Ignore autogenerated files. - * lib/tests/Makefile.am: Tweeked for autoreconf - -2002-09-12 21:36 rkowen - - * README: 2002-09-12 R.K. Owen * README: - Updated the anonymous CVS invocation. * lib/aclocal.m4: - Deleted auto* generated file. * lib/configure.ac: Tweeked - to autoreconf * lib/Makefile.am: Tweeked to autoreconf - * lib/uvec.h: Added uvec_strfree * lib/uvec/uvec_copy_str.c: - Uses uvec string fns * lib/uvec/uvec_copy_vec.c: Uses uvec - string fns * lib/uvec/uvec_strfree.c: New file: to dealloc - uvec2str() generated strings * lib/tests/tuvec.c: - Updated for uvec changes - -2002-09-11 23:50 harlan - - * doc/Makefile.am: * doc/Makefile.am: Added file. - - * lib/configure: Remove auto*-generated file. * lib/config.h.in: - Ditto. - -2002-09-11 23:16 harlan - - * Makefile.in, README, aclocal.m4, config.h.in, configure, - config/compile, config/depcomp, config/install-sh, config/missing, - config/mkinstalldirs, doc/Makefile.in, etc/Makefile.in, - ext/Makefile.in, init/Makefile.in, modulefiles/Makefile.in: * - README: Update the instructions for using the CVS version of - modules. - - * modulefiles/Makefile.in: Deleted auto* generated file. * - lib/tests/Makefile.in: Ditto. * lib/Makefile.in: Ditto. * - init/Makefile.in: Ditto. * ext/Makefile.in: Ditto. * - etc/Makefile.in: Ditto. * doc/Makefile.in: Ditto. * - config/mkinstalldirs: Ditto. * config/missing: Ditto. * - config/install-sh: Ditto. * config/depcomp: Ditto. * - config/compile: Ditto. * configure: Ditto. * config.h.in: Ditto. - * aclocal.m4: Ditto. * Makefile.in: Ditto. - -2002-09-11 22:59 harlan - - * Makefile.am, ModuleCmd_Avail.c, NEWS, colcomp.c, configure.ac, - locate_module.c: * colcomp.c: New file. Alternative collating - algorithm that sorts numeric substrings numerically (mostly). - - * lib/Makefile: Remove auto*-generated file. - - * locate_module.c (SortedDirList): Ignore SCCS/ subdirs, too. - - * configure.ac: Disable our "look" for RUNTEST; it drives auto* - crazy. Added the --with-file-collate={string,number} test, which - provides a way to enable USE_COLCOMP. - - * ModuleCmd_Avail.c (fi_ent_cmp): USE_COLCOMP when told to do so. - * locate_module.c (filename_compare): Ditto. - - * Makefile.am (modulecmd_LDFLAGS): lib is in the builddir, not the - srcdir. (modulecmd_SOURCES): Added colcomp.c . - -2002-09-11 22:38 harlan - - * NEWS: Rename ChangeLog to NEWS. - -2002-08-22 14:39 rkowen - - * cmdVersion.c, locate_module.c, modules_def.h: Fixed up GetDefault - to handle .modulerc and .version files, where the latter will read - the env.var. defined in .version and do a module-version so that - the modlist data can be updated. These mods handle deep dirs on - "module load" ... now need to fix up the rest! There's also now an - amazing amount of cruft to weed out. - -2002-08-14 14:09 lakata - - * README: updated docs to reflect new configure (TCL paths) - -2002-08-14 14:07 lakata - - * locate_module.c, modules_def.h: removed compiler warnings about - const char* - -2002-08-14 14:07 lakata - - * configure, configure.ac: added hack for linux that cant do -lX11 - with -L/usr/X11R6/lib - -2002-08-14 14:05 lakata - - * cmdInfo.c, cmdVersion.c: removed compiler warnings - -2002-08-14 14:04 lakata - - * Makefile.in: fixed LDFLAGS build problem when not building in - orig dist. directory - -2002-08-02 15:11 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Display.c, - ModuleCmd_Init.c, ModuleCmd_Load.c, ModuleCmd_Switch.c, aclocal.m4, - cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdPath.c, cmdVersion.c, - configure, configure.ac, error.c, locate_module.c, main.c, - modules_def.h, utility.c, etc/Makefile.in, ext/Makefile.in, - init/Makefile.in, modulefiles/Makefile.in, - testsuite/modules.00-init/080-begenv.exp: A whole slew of changes - progressing to deap modulefile directories. The current is not - usuable, but will eventually be. These changes are checked in for - safe keeping while R.K.Owen is on vacation. - -2002-06-17 09:32 rkowen - - * RKOConfigure, locate_module.c: Minor changes in preparation for - big ones. - -2002-06-16 22:58 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - config.h.in, configure, configure.ac, error.c, init.c, main.c, - modules_def.h, doc/module.1.in, testsuite/config/unix.exp, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.70-maint/020-update.exp: * Made the - .modulesbeginenv facility optional (default is not to have it) * - default for cache is now "no" * Added version_test() to testsuite - to make some of the tests conditional on the values generated by - --version. - the configure options help is formatted with - AC_HELP_STRING - -2002-06-14 14:57 rkowen - - * .cvsignore, Makefile.am, Makefile.in, config.h.in, configure, - configure.ac, config/compile, doc/Makefile.in, etc/.cvsignore, - etc/Makefile.am, etc/Makefile.in, ext/.cvsignore, ext/Makefile.am, - ext/Makefile.in, init/Makefile.am, init/Makefile.in, init/filter, - init/zsh.in, modulefiles/Makefile.am, modulefiles/Makefile.in, - testsuite/etc/.cvsignore: * Reworked every configure-based file - - uses automake to generate most of the Makefile.in - renamed - configure.in to configure.ac per autoconf - Versioning is - optional now with a configure option - reworked the init scripts - for versioning or not - eliminated acconfig.h and put templates - in configure.ac - make install now honors the DESTDIR variable - for package builds - honors bindir for modulecmd location (but - the init scripts are only correct if no versioning) * Collected the - usage info and now it can be displayed with the --help or -H - option (same as help) * --version now gives most of the optional - configure parameters for easy debugging of problems * Fixed - bootstrap to just source the appropriate init script - -2002-06-13 23:15 rkowen - - * Makefile.am, Makefile.in, acconfig.h, config.h.in, configure, - configure.ac, etc/Makefile.am, etc/Makefile.in, etc/add.modules.in, - etc/global/bashrc.in, etc/global/csh.cshrc.in, etc/skel/.cshrc.in, - etc/skel/.kshenv.in, ext/Makefile.am, ext/Makefile.in, - ext/add.ext.in, ext/common/.cshrc.in, ext/common/.kshenv.in, - init/.modulespath.in, init/bash.in, init/csh.in, init/ksh.in, - init/perl.in, init/python.in, init/sh.in, init/zsh.in: Removed the - acconfig.h file since it's essentially in the configure.ac now. - Reworked all the init,skel,add.* files to handle versioning or no. - Added Makefile.am to ./etc/ and ./ext/ for cleaner installs. - -2002-06-13 15:54 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Help.c, acconfig.h, - config.h.in, main.c, modules_def.h, doc/module.1.in, - testsuite/modules.00-init/015-version.exp: The version info - displays some of the configuration options. Moved the usage info - into module_usage() that can be displayed with the --help or -H - switch. - -2002-06-13 09:16 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Whatis.c, acconfig.h, - config.h.in, configure, configure.ac, main.c: Renamed INSTPATH to - PREFIX and is no longer passed as a compiler -D argument, but is - now entered directly into the config.h header. - -2002-06-12 13:07 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Bootstrap.c, init.c, main.c, - modules_def.h, utility.c: Converted the configure scripts over to - automake,autoconf generation. Modified "module bootstrap" to - source the init files. Put the shell properties and moved - set_derelict and renamed it set_shell_properties into init.c . - Created a matrix of shell properties { name, derelict, init, cmd - separator }. - -2002-06-12 13:00 rkowen - - * testsuite/: etc/apropos.cache, modules.50-cmds/095-uname.exp: - Fixed test syntax - it didn't like "dangling" ('s and )'s in regexp - string. Just escaped them. Removed apropos.cache - it gets - regenerated with each test. - -2002-06-12 12:54 rkowen - - * ModuleCmd_Switch.c, testsuite/modules.50-cmds/170-swap.exp: Fixed - up "module switch" one argument form (use stringer alloc) and added - more tests (one for each of the major shells). - -2002-06-10 22:23 rkowen - - * acconfig.h, config.h.in, configure, configure.ac: Added - MODULES_INIT_DIR to the configure files. - -2002-06-10 15:00 rkowen - - * Makefile.am, Makefile.in, ModuleCmd_Bootstrap.c, acconfig.h, - acinclude.m4, aclocal.m4, config.h.in, configure, configure.ac: - Upgraded the auto-configuration to use automake/1.6 and - autoconf/2.53 to auto-generate some of the files. - -2002-06-10 14:58 rkowen - - * init/: bash.in, csh.in, ksh.in, perl.in, sh.in, zsh.in: - Re-introduced the init files with versioning. - -2002-06-10 14:53 rkowen - - * config/: depcomp, install-sh, install.sh, missing, mkinstalldirs: - Upgraded install scripts to automake/1.6 autoconf/2.53 standards. - -2002-06-06 13:17 rkowen - - * configure.ac, configure.in: configure.ac is actually the - continuation of configure.in. do "cvs log configure.in" for a - history. - -2002-05-06 13:31 rkowen - - * .cvsignore, doc/.cvsignore, etc/.cvsignore, - etc/global/.cvsignore, etc/skel/.cvsignore, ext/.cvsignore, - ext/common/.cvsignore, init/.cvsignore, modulefiles/.cvsignore, - testsuite/.cvsignore: Added a bunch of .cvsignore files to avoid - CVS in listing the known (but made) files. - -2002-05-02 21:56 rkowen - - * utility.c, testsuite/modulefiles/eschars/1.0, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.50-cmds/022-setenv-eschars.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp: Added - EscapePerlString to utility.c, added '*' to list of csh special - chars. Fixed up tests to reflect these changes. Added - testsuite/modules.50-cmds/022-setenv-eschars.exp to test out - escaping special chars. - -2002-04-30 12:32 rkowen - - * install.sh, version.c: Moved install.sh to config/ and updated - the version to 3.2.0a . - -2002-04-30 10:29 lakata - - * ModuleCmd_Bootstrap.c: fixed getexecname() problem. - -2002-04-29 14:57 rkowen - - * RKOConfigure: Eliminated a lot of the extraneous options now that - configure/tclConfig.sh . - -2002-04-29 14:16 rkowen - - * configure.ac, configure.in: * Upgraded configure.in to autoconf - 2.52. - - * Changed the configure to search for libTcl.sh to acquire all - it's necessary Tcl env.vars from it. - -2002-04-29 14:16 rkowen - - * Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Init.c, - ModuleCmd_Load.c, ModuleCmd_Purge.c, ModuleCmd_Switch.c, - ModuleCmd_Update.c, ModuleCmd_Whatis.c, aclocal.m4, cmdConflict.c, - cmdLog.c, cmdModule.c, cmdPath.c, cmdTrace.c, cmdVersion.c, - cmdXResource.c, configure, configure.in, error.c, init.c, - locate_module.c, main.c, modules_def.h, utility.c, - config/install.sh, config/tcl.m4: * Upgraded configure.in to - autoconf 2.52. - - * Changed the configure to search for libTcl.sh to acquire all - it's necessary Tcl env.vars from it. - - * created a utility function stringer() to handle most of the - strcpy/strcat operations and to automatically allocate string - memory. - - * Mostly changed the memory malloc/free to use stringer/null_free. - - * rewrote some of the code logic to have a single point of exit - with unwinding of memory allocations. - -2002-04-29 13:19 lakata - - * ModuleCmd_Bootstrap.c: fixed bug with binary_name without an - absolute path - -2002-04-29 13:07 lakata - - * ModuleCmd_Help.c: fixed help for swap|switch, to reflect optional - first modulefile1 - -2002-04-29 12:58 lakata - - * ModuleCmd_Bootstrap.c, config.h.in, configure, configure.in: - added PREFIX to config.h and propagated to bootstrap code as - MODULESHOME - -2002-04-29 12:17 lakata - - * doc/module.1.in: updated docs regarding "switch" and MODULESHOME - -2002-04-29 11:45 lakata - - * ModuleCmd_Bootstrap.c, ModuleCmd_Switch.c, error.c, - modules_def.h: added support for 1-arg form of "swap/switch" - command - -2002-04-29 11:45 lakata - - * ModuleCmd_List.c: sanity check added in case _LMFILES_ and - LOADEDMODULES env vars get corrupted externally - -2002-04-29 11:43 lakata - - * testsuite/modules.50-cmds/170-swap.exp: added test for - one-argument form of swap/switch command - -2002-04-26 18:15 lakata - - * Makefile.in, ModuleCmd_Bootstrap.c, cmdModule.c, cmdTrace.c, - config.h.in, main.c, modules_def.h, utility.c, doc/module.1.in, - init/bash.in, init/csh.in, init/ksh.in, init/perl.in, init/sh.in, - init/zsh.in: added the bootstrap command - -2002-04-23 18:16 lakata - - * init/tcsh.in: tcsh is now generated from csh, not tcsh.in - -2002-04-23 18:16 lakata - - * init/Makefile.in: tcsh script is copy of csh script - -2002-04-23 18:15 lakata - - * init/csh.in: fixed csh init script to deal with funny shell chars - like * and {} - -2002-04-23 18:14 lakata - - * utility.c: (1) removed unset -f for zsh unaliasing (2) removed - single quotes for quoting env vars. This breaks if the env var - itself has single quotes. The more robust method is to individually - escape all the dangerous characters. Old method: setenv foo 'bar - bar' New method: setenv foo bar\ bar (3) removed tmpnam and - tempname stuff, replacing with safer tmpfile_mod() - -2002-04-23 18:08 lakata - - * config.h.in, configure, configure.in: added TMP_DIR define - -2002-04-23 18:07 lakata - - * cmdXResource.c: suppress warning if DISPLAY is not set - -2002-04-23 18:06 lakata - - * cmdModule.c: fixed help message - -2002-04-23 18:04 lakata - - * aclocal.m4: fixed problem with finding tcl lib using glob - -2002-04-23 18:03 lakata - - * testsuite/: modules.00-init/080-begenv.exp, - modules.10-use/030-use.exp, modules.10-use/031-append.exp, - modules.10-use/070-unuse.exp, modules.20-locate/040-alias.exp, - modules.20-locate/045-symvers.exp, - modules.20-locate/046-getsym.exp, - modules.20-locate/047-symerrs.exp, - modules.20-locate/048-symexec.exp, modules.20-locate/050-locrc.exp, - modules.20-locate/060-rc.exp, modules.20-locate/070-homerc.exp, - modules.30-userlvl/040-advanced.exp, - modules.30-userlvl/045-adv.exp, modules.30-userlvl/050-expert.exp, - modules.30-userlvl/055-exp.exp, modules.35-trace/010-init_ts.exp, - modules.35-trace/020-default.exp, modules.35-trace/030-all-on.exp, - modules.35-trace/031-all-off.exp, - modules.35-trace/040-load-all.exp, - modules.35-trace/041-load-all.exp, - modules.35-trace/042-load-on.exp, - modules.35-trace/043-load-onoff.exp, - modules.35-trace/044-load-ovr.exp, - modules.35-trace/050-disp-onoff.exp, - modules.35-trace/060-dilo-onoff.exp, - modules.35-trace/070-colon.exp, modules.35-trace/095-cleanup.exp, - modules.50-cmds/015-use.exp, modules.50-cmds/017-use-undo.exp, - modules.50-cmds/020-setenv.exp, modules.50-cmds/030-unsetenv.exp, - modules.50-cmds/035-unsetenv-undo.exp, - modules.50-cmds/036-unsetenv-x.exp, modules.50-cmds/040-append.exp, - modules.50-cmds/045-append-undo.exp, - modules.50-cmds/050-prepend.exp, - modules.50-cmds/055-prepend-undo.exp, - modules.50-cmds/060-remove.exp, - modules.50-cmds/065-remove-undo.exp, modules.50-cmds/075-alias.exp, - modules.50-cmds/077-alias-undo.exp, - modules.50-cmds/080-info-name.exp, - modules.50-cmds/081-info-user.exp, - modules.50-cmds/082-info-user-exp.exp, - modules.50-cmds/083-info-mode.exp, - modules.50-cmds/084-info-mode-exp.exp, - modules.50-cmds/085-info-flags.exp, - modules.50-cmds/086-info-shells.exp, - modules.50-cmds/087-info-shells-exp.exp, - modules.50-cmds/088-info-isloaded.exp, - modules.50-cmds/095-uname.exp, modules.50-cmds/101-badfac.exp, - modules.50-cmds/110-verbose.exp, - modules.50-cmds/115-verbose-msg.exp, - modules.50-cmds/120-prereq-full.exp, - modules.50-cmds/121-prereq-module.exp, - modules.50-cmds/130-conflict-full.exp, - modules.50-cmds/131-conflict-module.exp, - modules.50-cmds/140-system.exp, modules.50-cmds/150-module.exp, - modules.50-cmds/170-swap.exp, modules.50-cmds/190-load.exp, - modules.50-cmds/200-break.exp, modules.70-maint/020-update.exp, - modules.70-maint/050-whatis-load.exp, - modules.95-version/020-load.exp, modules.95-version/020-unload.exp, - modules.95-version/022-load2.exp, - modules.95-version/022-unload2.exp, - modules.95-version/040-xgetenv.exp: changed tests to match new - syntax for setting env vars. rather than quoting, special - characters are escaped - -2002-04-09 15:12 lakata - - * Makefile.in: simplified installation of deep directories - -2002-03-18 13:20 rkowen - - * Makefile.in: Un-escaped the --srcdir $$TESTSUITEDIR, because it - caused problems on Linux dejagnu 1.4.1 . The variable is being - interpolated before the runtest command is executed. - -2002-03-11 15:21 lakata - - * configure, configure.in, aclocal.m4: more TCL smarts, if tclsh - does not exist on path - -2002-03-11 15:20 lakata - - * INSTALL: added hints on how to recognize a bad TCL install - -2002-03-11 13:50 lakata - - * testsuite/: modules.00-init/015-version.exp.in, - modules.50-cmds/100-loglevel.exp.in: removed *.in versions - (configure processed) - -2002-03-11 13:49 lakata - - * testsuite/: modules.00-init/015-version.exp, - modules.50-cmds/100-loglevel.exp: renamed from *.in versions - (configure processed) - -2002-03-11 13:48 lakata - - * testsuite/: config/unix.exp, modulefiles/system/2.0, - modulefiles/use/1.0, modulefiles/use/1.0.in, modulefiles/use/2.0, - modulefiles/use/2.0.in, modulefiles/use/2.1, - modulefiles/use/2.1.in, modulefiles/use/2.2, - modulefiles/use/2.2.in, modules.00-init/010-environ.exp, - modules.00-init/015-version.exp.in, - modules.00-init/050-modpath.exp, modules.00-init/080-begenv.exp, - modules.10-use/030-use.exp, modules.10-use/031-append.exp, - modules.10-use/070-unuse.exp, modules.20-locate/060-rc.exp, - modules.20-locate/065-rcerrs.exp, modules.20-locate/070-homerc.exp, - modules.50-cmds/015-use.exp, modules.50-cmds/017-use-undo.exp, - modules.70-maint/010-init_ts.exp, modules.70-maint/020-update.exp, - modules.70-maint/070-display.exp, - modules.95-version/010-init_ts.exp: (a) updated testsuite by - centering source on TESTSUITEDIR, rather than rely on "pwd" or - relative paths, which prohibit running the testsuite from a - different dir (b) removed autoconf/configure processing of - testsuite - -2002-03-11 13:45 lakata - - * INSTALL: Added more information about configuring TCL and a few - other prerequisites. - -2002-03-11 13:35 lakata - - * configure: reran autoconf. see configure.in log - -2002-03-11 13:35 lakata - - * probetcl: probetcl functionality is now in aclocal.m4 - -2002-03-11 13:34 lakata - - * configure.in: (a) reordered configuration, so that critical - things are done first (aids in debugging to get the hardstuff done - first). (b) removed some of the testsuite configuration (c) added - -with-tcl-library configuration (d) changed the help messages - -2002-03-11 13:32 lakata - - * config.h.in: removed redundant lines - -2002-03-11 13:32 lakata - - * cmdXResource.c: (a) fixed regular expression for XRDB parsing (b) - fixed spelling of "resource" (i think it was using the French - spelling before) - -2002-03-11 13:30 lakata - - * Makefile.in: (a) change the way testsuite is configured, so - "clean" was updated (b) changed -I include path to point to cwd - instead .. - -2002-03-11 13:29 lakata - - * aclocal.m4: fixed the way TCL was configured - -2002-03-09 23:22 rkowen - - * ModuleCmd_Avail.c: Due to Mark Lakata. Fixed bug in mkdirnm. - There was a check to see if the dir eq ".", but was done using a - char comparison, not string comparison. Caused severe problems if - dir was "..", since only first character was used. - -2002-03-09 23:18 rkowen - - * init/: csh.in: Fixed bug in init/csh script, which only affected - those that changed their history character. Found by Barb Mauzy of - Cray Inc. - -2002-03-09 23:09 rkowen - - * Makefile.in: Updated the dist tarball upload targets. - -2002-03-09 23:09 rkowen - - * modulefiles/module-cvs.in: Fixed up module-ftp alias to reflect - the current SourceForge.Net ftp situation. - -2002-03-09 23:02 rkowen - - * version.c: Preparing the version move to 3.1.7 - -2002-03-09 23:01 rkowen - - * .ftp: Made the tarball ftp uploading script more generic. - -2002-03-09 22:59 rkowen - - * modules.lsm.in: Changed the primary & alternate ftp site to the - current SourceForge.Net set up. - -2002-03-09 22:08 rkowen - - * .ftp, Makefile.in, ModuleCmd_Load.c, PROBLEMS, RKOConfigure, - init.c, locate_module.c, version.c, modulefiles/module-cvs.in, - testsuite/modulefiles/break/1.0, testsuite/modulefiles/break/2.0, - testsuite/modulefiles/break/3.0, - testsuite/modules.50-cmds/190-load.exp, - testsuite/modules.50-cmds/200-break.exp: Included the Tcl break - code. - -2002-03-08 17:18 lakata - - * ModuleCmd_Avail.c: Fixed bug in mkdirnm. There was a check to see - if the dir eq ".", but was done using a char comparison, not string - comparison. Caused severe problems if dir was "..", since only - first character was used. - -2002-03-08 11:35 lakata - - * INSTALL: Simplified docs by removing details of RKOConfigure and - describing a typical install on a standard unix box - -2002-01-03 21:07 rkowen - - * version.c: Minor change to date. - -2002-01-03 20:59 rkowen - - * ModuleCmd_Load.c, PROBLEMS, RKOConfigure, init.c, - doc/modulefile.4.in, testsuite/modulefiles/break/1.0, - testsuite/modulefiles/break/2.0, testsuite/modulefiles/break/3.0, - testsuite/modules.50-cmds/200-break.exp: * A 'break' in a - modulefile will cause the modulefile to not be added to - $LOADEDMODULES, but will be considered a successful execution to - not affect other modulefiles being loaded concurrently (Patch due - to Scott Gaskins). * Tests and docs added for the above. - -2001-12-20 14:09 rkowen - - * TODO: Added Harlan Stenn's suggestions, and cleaned it up a bit. - -2001-11-05 13:50 rkowen - - * Makefile.in, PROBLEMS, RKOConfigure, configure, configure.in, - locate_module.c, probetcl, version.c, doc/Modules-Paper.pdf, - testsuite/modules.50-cmds/190-load.exp: * Fixed problem with module - load when the full path is given (patch due to Scott Gaskins). * - Added tests for the above problem. * Added the Modules-Paper in - PDF format (thanks to Philip Kearns and Leo Butler for raising - the issue). * Modified probetcl to avoid using the -c option - (patch due to Philip Kearns). * Modified probetcl to use tclsh - first then tcl * Added TCL_VERSION to configure and use it in the - Makefile to use the -ltcl@TCL_VERSION@ library. - -2001-09-06 21:26 rkowen - - * ModuleCmd_Init.c: Fixed cast. - -2001-09-06 15:59 rkowen - - * ModuleCmd_Whatis.c, cmdConflict.c, config.h.in, configure, - configure.in, utility.c, testsuite/modules.50-cmds/075-alias.exp: - Added mktemp to the list of tempfilename creating functions. (Was - hoping to eliminate the annoying Linux/gcc/ldr message about not - using tempnam ... just says the same about mktemp too.) Cleaned the - code and test to accept all the variants. Also resolved a bug with - the Whatis cache_file free. - -2001-09-06 13:14 rkowen - - * ModuleCmd_Init.c, error.c, init.c, main.c, modules_def.h: Further - code clean-up replacing free with null_free. Also removed - shell_startups as a global variable (wasn't being used as such). - -2001-09-05 14:41 rkowen - - * ModuleCmd_Init.c, ModuleCmd_Load.c, ModuleCmd_Purge.c, - ModuleCmd_Update.c, cmdLog.c, cmdModule.c, cmdTrace.c, - cmdVersion.c, cmdWhatis.c, cmdXResource.c, utility.c: Further - changes to using stringer for memory allocation. - -2001-08-30 18:19 rkowen - - * ModuleCmd_Switch.c, ModuleCmd_Whatis.c, RKOConfigure, - cmdConflict.c, cmdPath.c, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp: Further code - clean-up ... using stringer() where possible. Also fixed some - trailing '(space)' output. - -2001-08-30 10:50 rkowen - - * ModuleCmd_Avail.c, ModuleCmd_Init.c, ModuleCmd_Update.c, - ModuleCmd_Whatis.c, PROBLEMS, RKOConfigure, TODO, cmdConflict.c, - cmdTrace.c, configure, error.c, locate_module.c, main.c, - modules_def.h, utility.c, config/tcl.m4: Added stringer() and - started implementation. Also resolved a lot of memory allocation - issues (got --enable-free to actually mean something and to work). - Also fixed the configuration script to not look for libtclx unless - --with-tclx is given. - -2001-08-24 12:51 rkowen - - * config/install.sh: file install.sh was initially added on branch - modules-3-2-branch. - -2001-08-24 12:51 rkowen - - * config/tcl.m4: file tcl.m4 was initially added on branch - modules-3-2-branch. - -2001-08-24 12:51 rkowen - - * Makefile.in, ModuleCmd_Load.c, RKOConfigure, TODO, acconfig.h, - aclocal.m4, cmdPath.c, config.h.in, configure, configure.in, - install.sh, modules_def.h, probetcl, utility.c, version.c, - config/install.sh, config/tcl.m4: Modernized the configure.in - script - it now gets all the appropriate Tcl objects from - tclConfig.sh. Also applied the patches used to update 3.1.X. - -2001-08-18 07:36 rkowen - - * version.c: Release 3.1.5 - -2001-08-17 10:46 rkowen - - * ModuleCmd_Load.c, cmdPath.c, version.c: * Fixed up cmdPath to - remove individual items from a path (patch due to Eric Stanley). - -2001-08-03 14:26 rkowen - - * .ftp, Makefile.in, version.c: Minor fixes for distribution - uploading. - -2001-08-03 13:18 rkowen - - * Makefile.in: Fixed the ftp-local bz2 patch target. - -2001-08-03 12:59 rkowen - - * .spec.in, Makefile.in, version.c: * Added bz2 files to - distribution mix. - -2001-07-25 21:59 rkowen - - * cmdPath.c, version.c, testsuite/modulefiles/info/isloaded, - testsuite/modulefiles/loc_dv1/1.0, - testsuite/modulefiles/loc_dv1/2.0, - testsuite/modules.50-cmds/088-info-isloaded.exp, - testsuite/modules.50-cmds/170-swap.exp: * Fixed "module swap" to - put the substituted module in the same path location as the old. - Also added a number of tests for this feature. (Bug was - pointed out by Leo Butler ) * Added tests for - the "is-loaded" modulefile command introduced back in 3.0.8-rko. - -2001-07-16 12:05 rkowen - - * version.c: Testing to see if a really minor update could be done. - -2001-07-16 12:04 rkowen - - * INSTALL.RH7x, etc/global/bashrc.in, etc/global/profile.in: Fixed - some embarrassing typos and editting mistakes. - -2001-07-11 15:20 rkowen - - * testsuite/modulefiles/versions/: 1.1, 1.2, 1.3: More test - stragglers for 3.1.3 - -2001-07-11 15:11 rkowen - - * testsuite/: modulefiles/unsetenv/0.9, - modulefiles.other/1.1/version, modulefiles.other/1.2/version, - modulefiles.other/1.3/version: Forgot some straggler test files for - 3.1.3 - -2001-07-11 14:56 rkowen - - * README.perl, configure, configure.in, version.c, - modulefiles/Makefile.in, modulefiles/module-cvs.in, - modulefiles/modules.in, modulefiles/use.own.in, - testsuite/modules.50-cmds/017-use-undo.exp: * Added module-cvs - modulefile for easy CVS/ftp access to the modules CVS repository. - * Added README.perl describing Ron Isaacson's Env::Modulecmd - perl module (Ron.Isaacson@morganstanley.com). * Added further - tests for modulefile "module use dir_path" * Fixed bug of unloading - a modulefile with a "module use dir_path" - -2001-07-11 13:11 rkowen - - * cmdModule.c: Was forcing a "use" even when the "use" was embedded - in modulefile, which was being unloaded. - -2001-07-11 07:09 rkowen - - * version.c: Changed the version to 3.1.3a to note that this is not - a release. - -2001-07-09 11:21 rkowen - - * INSTALL, INSTALL.RH7x, ModuleCmd_Use.c, cmdPath.c, cmdSetenv.c, - configure, configure.in, utility.c, version.c, doc/modulefile.4.in, - etc/Makefile.in, etc/global/bashrc.in, etc/global/csh.cshrc.in, - etc/global/csh.login.in, etc/global/csh.modules.in, - etc/global/profile.in, etc/global/profile.modules.in, - etc/skel/.kshenv.in, etc/skel/.profile.in, modulefiles/use.own.in, - modulefiles/version.in, testsuite/modulefiles/use/.version, - testsuite/modulefiles/use/1.0.in, testsuite/modulefiles/use/2.0.in, - testsuite/modulefiles/use/2.1.in, testsuite/modulefiles/use/2.2.in, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/045-symvers.exp, - testsuite/modules.20-locate/046-getsym.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.20-locate/048-symexec.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.30-userlvl/030-novice.exp, - testsuite/modules.30-userlvl/035-nov.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.30-userlvl/050-expert.exp, - testsuite/modules.30-userlvl/055-exp.exp, - testsuite/modules.30-userlvl/090-undef.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.50-cmds/010-init_ts.exp, - testsuite/modules.50-cmds/015-use.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/036-unsetenv-x.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/081-info-user.exp, - testsuite/modules.50-cmds/082-info-user-exp.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/085-info-flags.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/110-verbose.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp, - testsuite/modules.50-cmds/140-system.exp, - testsuite/modules.50-cmds/150-module.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/050-whatis-load.exp, - testsuite/modules.90-avail/040-wild.exp, - testsuite/modules.95-version/010-init_ts.exp, - testsuite/modules.95-version/020-load.exp, - testsuite/modules.95-version/020-unload.exp, - testsuite/modules.95-version/022-load2.exp, - testsuite/modules.95-version/022-unload2.exp, - testsuite/modules.95-version/040-xgetenv.exp, - testsuite/modules.95-version/999-cleanup.exp: - * Added document file INSTALL.RH7x which explains how to set up - an modules environment for all users through the system shell - files. Is specific to Linux/RedHat 7.x, but is of general - applicability. * Added further tests for modulefile "module use - dir_path" (found an unload bug that will be fixed before release) - * Environment variable contents are now quoted to preserve any - embedded environment variables. (Needed for versioning) * Added - over 50 tests specific to module versioning, and testing xgetenv. - * Fixed the unsetenv on unload function, the feature added in - 3.0.6-rko was supposed to set the env.var. to the optional third - argument. This was to allow old env.var. values to be recovered - by unraveling a stack set in an other env.var. Added tests for - this feature. This is used by the version modulefile. * Fixed - and updated the version modulefile to allow stacked versions to - be removed the stack. * Removed an annoying spurious stderr - newline. - -2001-06-22 13:54 rkowen - - * ModuleCmd_Help.c: Spurious fprintf(stderr,...) was adding - anomalous blank lines to the tests. - -2001-06-09 22:35 rkowen - - * Makefile.in, testsuite/modulefiles.other/README: Fixed the way a - distribution tar ball is made. It makes only one CVS connection - instead of one per file. - -2001-06-09 16:13 rkowen - - * Makefile.in: Added targets to aid sending the tarball to the ftp - sites. - -2001-06-09 02:48 rkowen - - * Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Display.c, - ModuleCmd_Help.c, ModuleCmd_Init.c, ModuleCmd_Load.c, - ModuleCmd_Switch.c, ModuleCmd_Use.c, ModuleCmd_Whatis.c, - cmdAlias.c, cmdConflict.c, cmdInfo.c, cmdIsLoaded.c, cmdLog.c, - cmdMisc.c, cmdModule.c, cmdPath.c, cmdSetenv.c, cmdTrace.c, - cmdUlvl.c, cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - error.c, getopt.c, locate_module.c, main.c, modules.lsm.in, - modules_def.h, utility.c, version.c, doc/module.1.in, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp: * Fixed the "module use - --append" feature, and fixed the tests for "module use", "module - use --append", and "module unuse". * Changed the global variable - names (flags,current_module) to (g_flags, g_current_module) to - identify their ubiquity in the module source. - -2001-03-22 10:59 rminsk - - * init/python.in: Was not setting the environment variable - MODULESHOME - -2001-03-22 10:22 rminsk - - * configure: Added python - -2001-02-14 18:40 rminsk - - * version.c: Retracted new version - -2001-02-14 18:39 rminsk - - * version.c: Bumped version for mel addition - -2001-02-14 18:34 rminsk - - * utility.c: Added mel (Maya Extension Language) support - -2001-02-01 13:13 rminsk - - * Makefile.in: Removed other references to "-rko" in version - numbers. - -2001-02-01 13:08 rminsk - - * Makefile.in: Fixed tag rule to use the cvs module "module" - instead of "module-3.1rko" - -2001-02-01 11:24 rminsk - - * configure.in: Added init/python - -2001-02-01 10:34 rminsk - - * Makefile.in: Updated version number of 3.0 to 3.1. - -2001-02-01 10:31 rminsk - - * version.c: Bumped up version number for new release - -2001-01-16 15:25 rminsk - - * init/python.in: Removing blank lines - -2001-01-16 15:24 rminsk - - * init/: Makefile.in, python.in: Fixing typeo's - -2001-01-16 13:09 rminsk - - * init/: Makefile.in, python.in: Adding python init files. - -2001-01-16 12:58 rminsk - - * utility.c: Fixing bug the the _LMFILES_ environment variable. As - the _LMFILES_ shrink in size the extra _LMFILES%03d_ were not being - unset. Made sure extra _LMFILES%03d_ are removed each time - _LMFILES_ is set. - - Added initial support for scheme (scm, guile). - - Made output of ksh (bash, zsh) aliases recognize the escape - charater ("\"). This was important to be able to escape "$". - Anytime an alias had a "$" in it a function was always output. - - Fixed a bug in search of the LOADEDMODULES environment variable. - Would not correctly find a module if only a partial module name was - given. For example "maya/3.0" would be found but "maya" would not. - In the process of fixing this bug a possible memory corruption was - also fixed. - -2001-01-16 12:48 rminsk - - * init/csh.in: Removed variable histchar. It was not being used. - - Modified to store the current prompt and unset prompt while modules - is running. A bug in csh will cause and eval of an eval (eval - `eval ...`) to output a prompt. This cause the first eval to try - to execute the prompt. - -2001-01-16 12:31 rminsk - - * init.c: Fixing bug the the _LMFILES_ environment variable. If - the user is using csh and _LMFILES_ is large than LMSPLIT_SIZE it - gets split into _LMFILES.%03d_. For modules to work correctly the - split _LMFILES.%03d_ must be joined to make _LMFILES_. - -2000-11-03 09:45 rk - - * INSTALL, cmdModule.c: - * Fixed the changed *interpter->result return value with Tcl8.3+ - (patch due to Jens Hamisch). And some document changes. - -2000-06-28 07:39 rk - - * Makefile.in, ModuleCmd_Load.c, README, ccc.h.in: - * Removed warning message for unloading a module that's not - loaded. - * Added source code cross-referencing via - cxref-1.5b(patched) - -2000-06-27 19:45 rk - - * .cxref, Makefile.in: - Added cxref-1.5b(patched) generated HTML files showing the source - code cross-referencing relations. - -2000-06-27 18:21 rk - - * Makefile.in, configure, configure.in, version.c: - Minor updates. - -2000-06-27 17:17 rk - - * .cxref, .ftp, .spec.in, INSTALL, LICENSE.GPL, MACHINES, - Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Purge.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, PROBLEMS, README, RKOConfigure, TODO, - acconfig.h, aclocal.m4, ccc.h.in, cmdAlias.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - config.h.in, configure, configure.in, error.c, getopt.c, getopt.h, - init.c, install.sh, locate_module.c, main.c, modules.lsm.in, - modules_def.h, probetcl, stripmkf, utility.c, version.c, - ext/Makefile.in, ext/README, ext/add.ext.in, ext/mkroot.in, - ext/common/.cshrc.in, ext/common/.kshenv.in, ext/common/.login.in, - ext/common/.profile.in, ext/skel/.cshrc.ext, ext/skel/.kshenv.ext, - ext/skel/.login.ext, ext/skel/.modules, ext/skel/.profile.ext, - doc/Makefile.in, doc/Modules-Paper.doc, doc/module.1.in, - doc/modulefile.4.in, etc/Makefile.in, etc/README, - etc/add.modules.in, etc/mkroot.in, etc/global/csh.login.in, - etc/global/csh.modules.in, etc/global/profile.in, - etc/global/profile.modules.in, etc/skel/.cshrc.in, - etc/skel/.kshenv.in, etc/skel/.login.in, etc/skel/.profile.in, - init/.modulespath.in, init/Makefile.in, init/bash.in, init/csh.in, - init/ksh.in, init/perl.in, init/sh.in, init/tcsh.in, init/zsh.in, - modulefiles/Makefile.in, modulefiles/dot.in, - modulefiles/module-info.in, modulefiles/modules.in, - modulefiles/null.in, modulefiles/use.own.in, - modulefiles/version.in, testsuite/not_installed, testsuite/systest, - testsuite/config/unix.exp, testsuite/etc/apropos.cache, - testsuite/etc/bad, testsuite/etc/empty, testsuite/etc/rc, - testsuite/home/.modulerc, testsuite/modulefiles/.moduleavailcache, - testsuite/modulefiles/.moduleavailcache.202, - testsuite/modulefiles/.moduleavailcachedir, - testsuite/modulefiles/.moduleavailcachedir.202, - testsuite/modulefiles/README, testsuite/modulefiles/alias/2.0, - testsuite/modulefiles/append/2.0, - testsuite/modulefiles/conflict/full, - testsuite/modulefiles/conflict/module, - testsuite/modulefiles/empty/1.0, testsuite/modulefiles/help/2.0, - testsuite/modulefiles/info/mode1, testsuite/modulefiles/info/mode2, - testsuite/modulefiles/info/mode3, testsuite/modulefiles/info/mode4, - testsuite/modulefiles/info/mode5, testsuite/modulefiles/info/mode6, - testsuite/modulefiles/info/name, testsuite/modulefiles/info/shells, - testsuite/modulefiles/info/shellsexp, - testsuite/modulefiles/info/user, - testsuite/modulefiles/info/userexp, - testsuite/modulefiles/loc_dv1/1.0, - testsuite/modulefiles/loc_dv1/2.0, - testsuite/modulefiles/loc_dv1/3.0, - testsuite/modulefiles/loc_dv2/.version, - testsuite/modulefiles/loc_dv2/1.0, - testsuite/modulefiles/loc_dv2/2.0, - testsuite/modulefiles/loc_dv3/.version, - testsuite/modulefiles/loc_dv3/1.0, - testsuite/modulefiles/loc_dv3/2.0, - testsuite/modulefiles/loc_dv4/.version, - testsuite/modulefiles/loc_dv4/1.0, - testsuite/modulefiles/loc_dv4/2.0, - testsuite/modulefiles/loc_dv6/1.0, - testsuite/modulefiles/loc_dv6/2.0/1.0, - testsuite/modulefiles/loc_dv7/.version, - testsuite/modulefiles/loc_dv7/1.0, - testsuite/modulefiles/loc_dv7/3.0, - testsuite/modulefiles/loc_dv7/2.0/1.0, - testsuite/modulefiles/loc_dv8/.version, - testsuite/modulefiles/loc_dv8/1.0, - testsuite/modulefiles/loc_dv8/2.0, - testsuite/modulefiles/loc_fq/1.0, testsuite/modulefiles/loc_fq/2.0, - testsuite/modulefiles/loc_rc1/.modulerc, - testsuite/modulefiles/loc_rc1/1.0, - testsuite/modulefiles/loc_rc1/2.0, - testsuite/modulefiles/loc_rc2/.modulerc, - testsuite/modulefiles/loc_rc2/1.0, - testsuite/modulefiles/loc_rc2/2.0, - testsuite/modulefiles/loc_rc3/.modulerc, - testsuite/modulefiles/loc_rc3/1.0, - testsuite/modulefiles/loc_rc3/2.0, - testsuite/modulefiles/loc_rc3/3.0, - testsuite/modulefiles/loc_rc4/.modulerc, - testsuite/modulefiles/loc_rc4/.version, - testsuite/modulefiles/loc_rc4/1.0, - testsuite/modulefiles/loc_rc4/2.0, - testsuite/modulefiles/loc_rc4/3.0, - testsuite/modulefiles/loc_rc5/.modulerc, - testsuite/modulefiles/loc_rc5/1.0, - testsuite/modulefiles/loc_rc5/2.0, - testsuite/modulefiles/loc_sym/1.0, - testsuite/modulefiles/loc_sym/alias1, - testsuite/modulefiles/loc_sym/alias2, - testsuite/modulefiles/loc_sym/alias3, - testsuite/modulefiles/loc_sym/alias4, - testsuite/modulefiles/loc_sym/alias5, - testsuite/modulefiles/loc_sym/alias6, - testsuite/modulefiles/loc_sym/exec1, - testsuite/modulefiles/loc_sym/exec2, - testsuite/modulefiles/loc_sym/getvers1, - testsuite/modulefiles/loc_sym/getvers2, - testsuite/modulefiles/loc_sym/getvers3, - testsuite/modulefiles/loc_sym/getvers4, - testsuite/modulefiles/loc_sym/getvers5, - testsuite/modulefiles/loc_sym/getvers6, - testsuite/modulefiles/loc_sym/getvers7, - testsuite/modulefiles/loc_sym/getvers8, - testsuite/modulefiles/loc_sym/versinf1, - testsuite/modulefiles/loc_sym/versinf2, - testsuite/modulefiles/loc_sym/versinf3, - testsuite/modulefiles/loc_sym/versinf4, - testsuite/modulefiles/loc_sym/versinf5, - testsuite/modulefiles/loc_sym/versinf6, - testsuite/modulefiles/loc_sym/versinf7, - testsuite/modulefiles/loc_sym/version1, - testsuite/modulefiles/loc_sym/version10, - testsuite/modulefiles/loc_sym/version11, - testsuite/modulefiles/loc_sym/version12, - testsuite/modulefiles/loc_sym/version13, - testsuite/modulefiles/loc_sym/version14, - testsuite/modulefiles/loc_sym/version2, - testsuite/modulefiles/loc_sym/version3, - testsuite/modulefiles/loc_sym/version4, - testsuite/modulefiles/loc_sym/version5, - testsuite/modulefiles/loc_sym/version6, - testsuite/modulefiles/loc_sym/version7, - testsuite/modulefiles/loc_sym/version8, - testsuite/modulefiles/loc_sym/version9, - testsuite/modulefiles/log/badfac, - testsuite/modulefiles/log/err_both_1, - testsuite/modulefiles/log/err_both_2, - testsuite/modulefiles/log/err_file, - testsuite/modulefiles/log/err_syslog, - testsuite/modulefiles/module/2.0, - testsuite/modulefiles/prepend/2.0, - testsuite/modulefiles/prereq/full, - testsuite/modulefiles/prereq/module, - testsuite/modulefiles/remove/2.0, testsuite/modulefiles/system/2.0, - testsuite/modulefiles/trace/all_off, - testsuite/modulefiles/trace/all_on, - testsuite/modulefiles/trace/colon, - testsuite/modulefiles/trace/dilo_onoff, - testsuite/modulefiles/trace/disp_onoff, - testsuite/modulefiles/trace/disptrac, - testsuite/modulefiles/trace/load_all1, - testsuite/modulefiles/trace/load_all2, - testsuite/modulefiles/trace/load_on, - testsuite/modulefiles/trace/load_onoff, - testsuite/modulefiles/trace/load_ovr, - testsuite/modulefiles/uname/domain, - testsuite/modulefiles/uname/machine, - testsuite/modulefiles/uname/nodename, - testsuite/modulefiles/uname/release, - testsuite/modulefiles/uname/sysname, - testsuite/modulefiles/uname/version, - testsuite/modulefiles/unsetenv/1.0, testsuite/modulefiles/user/adv, - testsuite/modulefiles/user/advanced, - testsuite/modulefiles/user/exp, testsuite/modulefiles/user/expert, - testsuite/modulefiles/user/nov, testsuite/modulefiles/user/novice, - testsuite/modulefiles/user/undef, - testsuite/modulefiles/verbose/msg, - testsuite/modulefiles/verbose/off, - testsuite/modulefiles/verbose/on, - testsuite/modulefiles/verbose/undef, - testsuite/modulefiles/whatis/lines, - testsuite/modulefiles/whatis/multiple, - testsuite/modulefiles/whatis/none, - testsuite/modulefiles/whatis/single, - testsuite/modulefiles/whatis/string, - testsuite/modules.00-init/005-init_ts.exp, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/015-version.exp.in, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/050-modpath.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.00-init/090-switches.exp, - testsuite/modules.10-use/010-init_ts.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.20-locate/010-init_ts.exp, - testsuite/modules.20-locate/020-fqual.exp, - testsuite/modules.20-locate/030-defvers.exp, - testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/045-symvers.exp, - testsuite/modules.20-locate/046-getsym.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.20-locate/048-symexec.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.20-locate/055-locrcerrs.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/065-rcerrs.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.20-locate/095-cleanup.exp, - testsuite/modules.30-userlvl/010-init_ts.exp, - testsuite/modules.30-userlvl/030-novice.exp, - testsuite/modules.30-userlvl/035-nov.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.30-userlvl/050-expert.exp, - testsuite/modules.30-userlvl/055-exp.exp, - testsuite/modules.30-userlvl/090-undef.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/010-init_ts.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/081-info-user.exp, - testsuite/modules.50-cmds/082-info-user-exp.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/085-info-flags.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/090-uname-proc.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/099-uname-cleanup.exp, - testsuite/modules.50-cmds/100-loglevel.exp.in, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/110-verbose.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp, - testsuite/modules.50-cmds/140-system.exp, - testsuite/modules.50-cmds/150-module.exp, - testsuite/modules.70-maint/010-init_ts.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/030-purge.exp, - testsuite/modules.70-maint/040-list.exp, - testsuite/modules.70-maint/043-listno.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.70-maint/048-listlongno.exp, - testsuite/modules.70-maint/050-whatis-load.exp, - testsuite/modules.70-maint/055-whatis.exp, - testsuite/modules.70-maint/060-apropos.exp, - testsuite/modules.70-maint/070-display.exp, - testsuite/modules.70-maint/080-help.exp, - testsuite/modules.70-maint/095-cleanup.exp, - testsuite/modules.90-avail/010-init_ts.exp, - testsuite/modules.90-avail/020-single.exp, - testsuite/modules.90-avail/030-multiple.exp, - testsuite/modules.90-avail/040-wild.exp, - testsuite/modules.90-avail/050-long.exp, - testsuite/modules.90-avail/060-empty.exp: - modules is a shell tool for setting-up the user environment on the - fly, as it were. It's a powerful mechanism for dynamically - changing environment variables, aliases, X11 resources, etc. It - uses an embedded Tcl intrepretor, with a few extensions. - Therefore, it has a well defined language syntax. Version 3.1 is - GPL, and includes many improvements over the 3.0beta. - -2000-06-27 17:17 rk - - * .cxref, .ftp, .spec.in, INSTALL, LICENSE.GPL, MACHINES, - Makefile.in, ModuleCmd_Avail.c, ModuleCmd_Clear.c, - ModuleCmd_Display.c, ModuleCmd_Help.c, ModuleCmd_Init.c, - ModuleCmd_List.c, ModuleCmd_Load.c, ModuleCmd_Purge.c, - ModuleCmd_Switch.c, ModuleCmd_Update.c, ModuleCmd_Use.c, - ModuleCmd_Whatis.c, PROBLEMS, README, RKOConfigure, TODO, - acconfig.h, aclocal.m4, ccc.h.in, cmdAlias.c, cmdConflict.c, - cmdInfo.c, cmdIsLoaded.c, cmdLog.c, cmdMisc.c, cmdModule.c, - cmdPath.c, cmdSetenv.c, cmdTrace.c, cmdUlvl.c, cmdUname.c, - cmdVerbose.c, cmdVersion.c, cmdWhatis.c, cmdXResource.c, - config.h.in, configure, configure.in, error.c, getopt.c, getopt.h, - init.c, install.sh, locate_module.c, main.c, modules.lsm.in, - modules_def.h, probetcl, stripmkf, utility.c, version.c, - ext/Makefile.in, ext/README, ext/add.ext.in, ext/mkroot.in, - ext/common/.cshrc.in, ext/common/.kshenv.in, ext/common/.login.in, - ext/common/.profile.in, ext/skel/.cshrc.ext, ext/skel/.kshenv.ext, - ext/skel/.login.ext, ext/skel/.modules, ext/skel/.profile.ext, - doc/Makefile.in, doc/Modules-Paper.doc, doc/module.1.in, - doc/modulefile.4.in, etc/Makefile.in, etc/README, - etc/add.modules.in, etc/mkroot.in, etc/global/csh.login.in, - etc/global/csh.modules.in, etc/global/profile.in, - etc/global/profile.modules.in, etc/skel/.cshrc.in, - etc/skel/.kshenv.in, etc/skel/.login.in, etc/skel/.profile.in, - init/.modulespath.in, init/Makefile.in, init/bash.in, init/csh.in, - init/ksh.in, init/perl.in, init/sh.in, init/tcsh.in, init/zsh.in, - modulefiles/Makefile.in, modulefiles/dot.in, - modulefiles/module-info.in, modulefiles/modules.in, - modulefiles/null.in, modulefiles/use.own.in, - modulefiles/version.in, testsuite/not_installed, testsuite/systest, - testsuite/config/unix.exp, testsuite/etc/apropos.cache, - testsuite/etc/bad, testsuite/etc/empty, testsuite/etc/rc, - testsuite/home/.modulerc, testsuite/modulefiles/.moduleavailcache, - testsuite/modulefiles/.moduleavailcache.202, - testsuite/modulefiles/.moduleavailcachedir, - testsuite/modulefiles/.moduleavailcachedir.202, - testsuite/modulefiles/README, testsuite/modulefiles/alias/2.0, - testsuite/modulefiles/append/2.0, - testsuite/modulefiles/conflict/full, - testsuite/modulefiles/conflict/module, - testsuite/modulefiles/empty/1.0, testsuite/modulefiles/help/2.0, - testsuite/modulefiles/info/mode1, testsuite/modulefiles/info/mode2, - testsuite/modulefiles/info/mode3, testsuite/modulefiles/info/mode4, - testsuite/modulefiles/info/mode5, testsuite/modulefiles/info/mode6, - testsuite/modulefiles/info/name, testsuite/modulefiles/info/shells, - testsuite/modulefiles/info/shellsexp, - testsuite/modulefiles/info/user, - testsuite/modulefiles/info/userexp, - testsuite/modulefiles/loc_dv1/1.0, - testsuite/modulefiles/loc_dv1/2.0, - testsuite/modulefiles/loc_dv1/3.0, - testsuite/modulefiles/loc_dv2/.version, - testsuite/modulefiles/loc_dv2/1.0, - testsuite/modulefiles/loc_dv2/2.0, - testsuite/modulefiles/loc_dv3/.version, - testsuite/modulefiles/loc_dv3/1.0, - testsuite/modulefiles/loc_dv3/2.0, - testsuite/modulefiles/loc_dv4/.version, - testsuite/modulefiles/loc_dv4/1.0, - testsuite/modulefiles/loc_dv4/2.0, - testsuite/modulefiles/loc_dv6/1.0, - testsuite/modulefiles/loc_dv6/2.0/1.0, - testsuite/modulefiles/loc_dv7/.version, - testsuite/modulefiles/loc_dv7/1.0, - testsuite/modulefiles/loc_dv7/3.0, - testsuite/modulefiles/loc_dv7/2.0/1.0, - testsuite/modulefiles/loc_dv8/.version, - testsuite/modulefiles/loc_dv8/1.0, - testsuite/modulefiles/loc_dv8/2.0, - testsuite/modulefiles/loc_fq/1.0, testsuite/modulefiles/loc_fq/2.0, - testsuite/modulefiles/loc_rc1/.modulerc, - testsuite/modulefiles/loc_rc1/1.0, - testsuite/modulefiles/loc_rc1/2.0, - testsuite/modulefiles/loc_rc2/.modulerc, - testsuite/modulefiles/loc_rc2/1.0, - testsuite/modulefiles/loc_rc2/2.0, - testsuite/modulefiles/loc_rc3/.modulerc, - testsuite/modulefiles/loc_rc3/1.0, - testsuite/modulefiles/loc_rc3/2.0, - testsuite/modulefiles/loc_rc3/3.0, - testsuite/modulefiles/loc_rc4/.modulerc, - testsuite/modulefiles/loc_rc4/.version, - testsuite/modulefiles/loc_rc4/1.0, - testsuite/modulefiles/loc_rc4/2.0, - testsuite/modulefiles/loc_rc4/3.0, - testsuite/modulefiles/loc_rc5/.modulerc, - testsuite/modulefiles/loc_rc5/1.0, - testsuite/modulefiles/loc_rc5/2.0, - testsuite/modulefiles/loc_sym/1.0, - testsuite/modulefiles/loc_sym/alias1, - testsuite/modulefiles/loc_sym/alias2, - testsuite/modulefiles/loc_sym/alias3, - testsuite/modulefiles/loc_sym/alias4, - testsuite/modulefiles/loc_sym/alias5, - testsuite/modulefiles/loc_sym/alias6, - testsuite/modulefiles/loc_sym/exec1, - testsuite/modulefiles/loc_sym/exec2, - testsuite/modulefiles/loc_sym/getvers1, - testsuite/modulefiles/loc_sym/getvers2, - testsuite/modulefiles/loc_sym/getvers3, - testsuite/modulefiles/loc_sym/getvers4, - testsuite/modulefiles/loc_sym/getvers5, - testsuite/modulefiles/loc_sym/getvers6, - testsuite/modulefiles/loc_sym/getvers7, - testsuite/modulefiles/loc_sym/getvers8, - testsuite/modulefiles/loc_sym/versinf1, - testsuite/modulefiles/loc_sym/versinf2, - testsuite/modulefiles/loc_sym/versinf3, - testsuite/modulefiles/loc_sym/versinf4, - testsuite/modulefiles/loc_sym/versinf5, - testsuite/modulefiles/loc_sym/versinf6, - testsuite/modulefiles/loc_sym/versinf7, - testsuite/modulefiles/loc_sym/version1, - testsuite/modulefiles/loc_sym/version10, - testsuite/modulefiles/loc_sym/version11, - testsuite/modulefiles/loc_sym/version12, - testsuite/modulefiles/loc_sym/version13, - testsuite/modulefiles/loc_sym/version14, - testsuite/modulefiles/loc_sym/version2, - testsuite/modulefiles/loc_sym/version3, - testsuite/modulefiles/loc_sym/version4, - testsuite/modulefiles/loc_sym/version5, - testsuite/modulefiles/loc_sym/version6, - testsuite/modulefiles/loc_sym/version7, - testsuite/modulefiles/loc_sym/version8, - testsuite/modulefiles/loc_sym/version9, - testsuite/modulefiles/log/badfac, - testsuite/modulefiles/log/err_both_1, - testsuite/modulefiles/log/err_both_2, - testsuite/modulefiles/log/err_file, - testsuite/modulefiles/log/err_syslog, - testsuite/modulefiles/module/2.0, - testsuite/modulefiles/prepend/2.0, - testsuite/modulefiles/prereq/full, - testsuite/modulefiles/prereq/module, - testsuite/modulefiles/remove/2.0, testsuite/modulefiles/system/2.0, - testsuite/modulefiles/trace/all_off, - testsuite/modulefiles/trace/all_on, - testsuite/modulefiles/trace/colon, - testsuite/modulefiles/trace/dilo_onoff, - testsuite/modulefiles/trace/disp_onoff, - testsuite/modulefiles/trace/disptrac, - testsuite/modulefiles/trace/load_all1, - testsuite/modulefiles/trace/load_all2, - testsuite/modulefiles/trace/load_on, - testsuite/modulefiles/trace/load_onoff, - testsuite/modulefiles/trace/load_ovr, - testsuite/modulefiles/uname/domain, - testsuite/modulefiles/uname/machine, - testsuite/modulefiles/uname/nodename, - testsuite/modulefiles/uname/release, - testsuite/modulefiles/uname/sysname, - testsuite/modulefiles/uname/version, - testsuite/modulefiles/unsetenv/1.0, testsuite/modulefiles/user/adv, - testsuite/modulefiles/user/advanced, - testsuite/modulefiles/user/exp, testsuite/modulefiles/user/expert, - testsuite/modulefiles/user/nov, testsuite/modulefiles/user/novice, - testsuite/modulefiles/user/undef, - testsuite/modulefiles/verbose/msg, - testsuite/modulefiles/verbose/off, - testsuite/modulefiles/verbose/on, - testsuite/modulefiles/verbose/undef, - testsuite/modulefiles/whatis/lines, - testsuite/modulefiles/whatis/multiple, - testsuite/modulefiles/whatis/none, - testsuite/modulefiles/whatis/single, - testsuite/modulefiles/whatis/string, - testsuite/modules.00-init/005-init_ts.exp, - testsuite/modules.00-init/006-procs.exp, - testsuite/modules.00-init/010-environ.exp, - testsuite/modules.00-init/015-version.exp.in, - testsuite/modules.00-init/030-shells.exp, - testsuite/modules.00-init/050-modpath.exp, - testsuite/modules.00-init/080-begenv.exp, - testsuite/modules.00-init/090-switches.exp, - testsuite/modules.10-use/010-init_ts.exp, - testsuite/modules.10-use/030-use.exp, - testsuite/modules.10-use/031-append.exp, - testsuite/modules.10-use/070-unuse.exp, - testsuite/modules.20-locate/010-init_ts.exp, - testsuite/modules.20-locate/020-fqual.exp, - testsuite/modules.20-locate/030-defvers.exp, - testsuite/modules.20-locate/040-alias.exp, - testsuite/modules.20-locate/045-symvers.exp, - testsuite/modules.20-locate/046-getsym.exp, - testsuite/modules.20-locate/047-symerrs.exp, - testsuite/modules.20-locate/048-symexec.exp, - testsuite/modules.20-locate/050-locrc.exp, - testsuite/modules.20-locate/055-locrcerrs.exp, - testsuite/modules.20-locate/060-rc.exp, - testsuite/modules.20-locate/065-rcerrs.exp, - testsuite/modules.20-locate/070-homerc.exp, - testsuite/modules.20-locate/095-cleanup.exp, - testsuite/modules.30-userlvl/010-init_ts.exp, - testsuite/modules.30-userlvl/030-novice.exp, - testsuite/modules.30-userlvl/035-nov.exp, - testsuite/modules.30-userlvl/040-advanced.exp, - testsuite/modules.30-userlvl/045-adv.exp, - testsuite/modules.30-userlvl/050-expert.exp, - testsuite/modules.30-userlvl/055-exp.exp, - testsuite/modules.30-userlvl/090-undef.exp, - testsuite/modules.35-trace/010-init_ts.exp, - testsuite/modules.35-trace/020-default.exp, - testsuite/modules.35-trace/030-all-on.exp, - testsuite/modules.35-trace/031-all-off.exp, - testsuite/modules.35-trace/040-load-all.exp, - testsuite/modules.35-trace/041-load-all.exp, - testsuite/modules.35-trace/042-load-on.exp, - testsuite/modules.35-trace/043-load-onoff.exp, - testsuite/modules.35-trace/044-load-ovr.exp, - testsuite/modules.35-trace/050-disp-onoff.exp, - testsuite/modules.35-trace/060-dilo-onoff.exp, - testsuite/modules.35-trace/070-colon.exp, - testsuite/modules.35-trace/095-cleanup.exp, - testsuite/modules.50-cmds/010-init_ts.exp, - testsuite/modules.50-cmds/020-setenv.exp, - testsuite/modules.50-cmds/025-setenv-undo.exp, - testsuite/modules.50-cmds/030-unsetenv.exp, - testsuite/modules.50-cmds/035-unsetenv-undo.exp, - testsuite/modules.50-cmds/040-append.exp, - testsuite/modules.50-cmds/045-append-undo.exp, - testsuite/modules.50-cmds/050-prepend.exp, - testsuite/modules.50-cmds/055-prepend-undo.exp, - testsuite/modules.50-cmds/060-remove.exp, - testsuite/modules.50-cmds/065-remove-undo.exp, - testsuite/modules.50-cmds/070-alias-proc.exp, - testsuite/modules.50-cmds/075-alias.exp, - testsuite/modules.50-cmds/077-alias-undo.exp, - testsuite/modules.50-cmds/080-info-name.exp, - testsuite/modules.50-cmds/081-info-user.exp, - testsuite/modules.50-cmds/082-info-user-exp.exp, - testsuite/modules.50-cmds/083-info-mode.exp, - testsuite/modules.50-cmds/084-info-mode-exp.exp, - testsuite/modules.50-cmds/085-info-flags.exp, - testsuite/modules.50-cmds/086-info-shells.exp, - testsuite/modules.50-cmds/087-info-shells-exp.exp, - testsuite/modules.50-cmds/090-uname-proc.exp, - testsuite/modules.50-cmds/095-uname.exp, - testsuite/modules.50-cmds/099-uname-cleanup.exp, - testsuite/modules.50-cmds/100-loglevel.exp.in, - testsuite/modules.50-cmds/101-badfac.exp, - testsuite/modules.50-cmds/110-verbose.exp, - testsuite/modules.50-cmds/115-verbose-msg.exp, - testsuite/modules.50-cmds/120-prereq-full.exp, - testsuite/modules.50-cmds/121-prereq-module.exp, - testsuite/modules.50-cmds/130-conflict-full.exp, - testsuite/modules.50-cmds/131-conflict-module.exp, - testsuite/modules.50-cmds/140-system.exp, - testsuite/modules.50-cmds/150-module.exp, - testsuite/modules.70-maint/010-init_ts.exp, - testsuite/modules.70-maint/020-update.exp, - testsuite/modules.70-maint/030-purge.exp, - testsuite/modules.70-maint/040-list.exp, - testsuite/modules.70-maint/043-listno.exp, - testsuite/modules.70-maint/045-listlong.exp, - testsuite/modules.70-maint/048-listlongno.exp, - testsuite/modules.70-maint/050-whatis-load.exp, - testsuite/modules.70-maint/055-whatis.exp, - testsuite/modules.70-maint/060-apropos.exp, - testsuite/modules.70-maint/070-display.exp, - testsuite/modules.70-maint/080-help.exp, - testsuite/modules.70-maint/095-cleanup.exp, - testsuite/modules.90-avail/010-init_ts.exp, - testsuite/modules.90-avail/020-single.exp, - testsuite/modules.90-avail/030-multiple.exp, - testsuite/modules.90-avail/040-wild.exp, - testsuite/modules.90-avail/050-long.exp, - testsuite/modules.90-avail/060-empty.exp: Initial revision - -1998-12-11 14:37 rk - - * testsuite/modulefiles/setenv/1.0: - modules is a shell tool for setting-up the user environment on the - fly, as it were. It's a powerful mechanism for dynamically - changing environment variables, aliases, X11 resources, etc. It - uses an embedded Tcl intrepretor, with a few extensions. - Therefore, it has a well defined language syntax. Version 3.1 is - GPL, and includes many improvements over the 3.0beta. - -1998-12-11 14:37 rk - - * testsuite/modulefiles/setenv/1.0: Initial revision - diff --git a/Makefile.am b/Makefile.am index 4b2c7f8d9..577923faf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,7 +22,7 @@ EXTRA_DIST = modules_def.h getopt.h testsuite INSTALL.RH7x \ init/filter init/bash.in init/sh.in init/zsh.in \ init/csh.in init/ksh.in init/perl.pm.in init/python.py.in \ init/ruby.rb.in init/cmake.in init/bash_completion.in \ - LICENSE.GPL + LICENSE.GPL ChangeLog bin_PROGRAMS = modulecmd # bin_SCRIPTS = etc/mkroot etc/add.modules ext/add.ext @@ -86,9 +86,11 @@ tag: `${SED} -n -e 's/^.*NEW TAG.*"\(.*\)".*$$/\1/p' ${srcdir}/version.c` \ modules +ChangeLog: CL + CL: rmChangeLog @echo "Updating ChangeLog" - -@./cvs2cl.pl + -@./gitlog2changelog.py rmChangeLog: -@rm -f ChangeLog @@ -125,9 +127,8 @@ ftp-local: dist cp modules.lsm /u/ftp/pub/rkowen/modules; \ else echo "Can't find modules.lsm"; fi -dist-hook: +dist-hook: CL -rm -rf `find $(distdir) -name CVS` - -touch $(distdir)/testsuite/modulefiles/trace/CVS ftp: ftp-ibiblio ftp-sourceforge @@ -164,10 +165,10 @@ disthelp: @echo "make dist - creates a distribution tarballs" @echo "make distclean - cleans & removes most made files" @echo "make maintainer-clean - cleans even more" - @echo "================ requires CVS access =======================" - @echo "make tag - does a CVS rtag" - @echo "make CL - remakes the ChangeLog from the CVS commits" - @echo "make patch - creates a patch file after tagging" + @echo "================ requires git access =======================" +# @echo "make tag - does a git rtag" + @echo "make CL - remakes the ChangeLog from the git commits" +# @echo "make patch - creates a patch file after tagging" @echo "================ maintainers only ==========================" @echo "make lsm - send off to the Linux Software Map" @echo "make ftp-local - upload tarball (good test)" diff --git a/NEWS b/NEWS index e9f2da495..b75b2d122 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ Modules 3.2.10 (The Tcl-only version will return 'Tcl'.) * Search /usr/lib64 for tclConfig.sh also (Jan Synacek) * Tested loading 20 other modulefiles from a single one + * Have ChangeLog generated by a script due to Marcus D. Hanwell Modules 3.2.9 Nov 24, 2011 R.K. Owen (rk@owen.sj.ca.us) diff --git a/cvs2cl.pl b/cvs2cl.pl deleted file mode 100755 index ce02fa4b7..000000000 --- a/cvs2cl.pl +++ /dev/null @@ -1,2344 +0,0 @@ -#!/bin/sh -exec perl -w -x $0 ${1+"$@"} # -*- mode: perl; perl-indent-level: 2; -*- -#!perl -w - - -############################################################## -### ### -### cvs2cl.pl: produce ChangeLog(s) from `cvs log` output. ### -### ### -############################################################## - -## $Revision: 1.3 $ -## $Date: 2006/01/12 21:15:09 $ -## $Author: rkowen $ -## -## (C) 2001,2002,2003 Martyn J. Pearce , under the GNU GPL. -## (C) 1999 Karl Fogel , under the GNU GPL. -## -## (Extensively hacked on by Melissa O'Neill .) -## (Gecos hacking by Robin Johnson .) -## -## cvs2cl.pl is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. -## -## cvs2cl.pl is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You may have received a copy of the GNU General Public License -## along with cvs2cl.pl; see the file COPYING. If not, write to the -## Free Software Foundation, Inc., 59 Temple Place - Suite 330, -## Boston, MA 02111-1307, USA. - - -use strict; -use Text::Wrap; -use Time::Local; -use File::Basename qw( fileparse ); -use User::pwent; - - -# The Plan: -# -# Read in the logs for multiple files, spit out a nice ChangeLog that -# mirrors the information entered during `cvs commit'. -# -# The problem presents some challenges. In an ideal world, we could -# detect files with the same author, log message, and checkin time -- -# each would be a changelog entry. -# We'd sort them; and spit them out. Unfortunately, CVS is *not atomic* -# so checkins can span a range of times. Also, the directory structure -# could be hierarchical. -# -# Another question is whether we really want to have the ChangeLog -# exactly reflect commits. An author could issue two related commits, -# with different log entries, reflecting a single logical change to the -# source. GNU style ChangeLogs group these under a single author/date. -# We try to do the same. -# -# So, we parse the output of `cvs log', storing log messages in a -# multilevel hash that stores the mapping: -# directory => author => time => message => filelist -# As we go, we notice "nearby" commit times and store them together -# (i.e., under the same timestamp), so they appear in the same log -# entry. -# -# When we've read all the logs, we twist this mapping into -# a time => author => message => filelist mapping for each directory. -# -# If we're not using the `--distributed' flag, the directory is always -# considered to be `./', even as descend into subdirectories. - - -############### Globals ################ - -use constant MAILNAME => "/etc/mailname"; - -# What we run to generate it: -my $Log_Source_Command = "cvs log"; - -# In case we have to print it out: -my $VERSION = '$Revision: 1.3 $'; -$VERSION =~ s/\S+\s+(\S+)\s+\S+/$1/; - -## Vars set by options: - -# Print debugging messages? -my $Debug = 0; - -# Just show version and exit? -my $Print_Version = 0; - -# Just print usage message and exit? -my $Print_Usage = 0; - -# Single top-level ChangeLog, or one per subdirectory? -my $Distributed = 0; - -# What file should we generate (defaults to "ChangeLog")? -my $Log_File_Name = "ChangeLog"; - -# Grab most recent entry date from existing ChangeLog file, just add -# to that ChangeLog. -my $Cumulative = 0; - -# `cvs log -d`, this will repeat the last entry in the old log. This is OK, -# as it guarantees at least one entry in the update changelog, which means -# that there will always be a date to extract for the next update. The repeat -# entry can be removed in postprocessing, if necessary. -my $Update = 0; - -# Expand usernames to email addresses based on a map file? -my $User_Map_File = ""; -my $User_Passwd_File; -my $Mail_Domain; - -# Output log in chronological order? [default is reverse chronological order] -my $Chronological_Order = 0; - -# Grab user details via gecos -my $Gecos = 0; - -# User domain for gecos email addresses -my $Domain = ""; - -# Output to a file or to stdout? -my $Output_To_Stdout = 0; - -# Eliminate empty log messages? -my $Prune_Empty_Msgs = 0; - -# Tags of which not to output -my %ignore_tags; - -# Show only revisions with Tags -my %show_tags; - -# Don't call Text::Wrap on the body of the message -my $No_Wrap = 0; - -# Don't do any pretty print processing -my $Summary = 0; - -# Separates header from log message. Code assumes it is either " " or -# "\n\n", so if there's ever an option to set it to something else, -# make sure to go through all conditionals that use this var. -my $After_Header = " "; - -# XML Encoding -my $XML_Encoding = ''; - -# Format more for programs than for humans. -my $XML_Output = 0; - -# Do some special tweaks for log data that was written in FSF -# ChangeLog style. -my $FSF_Style = 0; - -# Show times in UTC instead of local time -my $UTC_Times = 0; - -# Show times in output? -my $Show_Times = 1; - -# Show day of week in output? -my $Show_Day_Of_Week = 0; - -# Show revision numbers in output? -my $Show_Revisions = 0; - -# Show dead files in output? -my $Show_Dead = 0; - -# Show tags (symbolic names) in output? -my $Show_Tags = 0; - -# Show tags separately in output? -my $Show_Tag_Dates = 0; - -# Show branches by symbolic name in output? -my $Show_Branches = 0; - -# Show only revisions on these branches or their ancestors. -my @Follow_Branches; - -# Don't bother with files matching this regexp. -my @Ignore_Files; - -# How exactly we match entries. We definitely want "o", -# and user might add "i" by using --case-insensitive option. -my $Case_Insensitive = 0; - -# Maybe only show log messages matching a certain regular expression. -my $Regexp_Gate = ""; - -# Pass this global option string along to cvs, to the left of `log': -my $Global_Opts = ""; - -# Pass this option string along to the cvs log subcommand: -my $Command_Opts = ""; - -# Read log output from stdin instead of invoking cvs log? -my $Input_From_Stdin = 0; - -# Don't show filenames in output. -my $Hide_Filenames = 0; - -# Don't shorten directory names from filenames. -my $Common_Dir = 1; - -# Max checkin duration. CVS checkin is not atomic, so we may have checkin -# times that span a range of time. We assume that checkins will last no -# longer than $Max_Checkin_Duration seconds, and that similarly, no -# checkins will happen from the same users with the same message less -# than $Max_Checkin_Duration seconds apart. -my $Max_Checkin_Duration = 180; - -# What to put at the front of [each] ChangeLog. -my $ChangeLog_Header = "Do Not Edit! This is a generated file.\n" - ." You should edit the NEWS file instead.\n\n"; - -# Whether to enable 'delta' mode, and for what start/end tags. -my $Delta_Mode = 0; -my $Delta_From = ""; -my $Delta_To = ""; - -my $TestCode; - -# Whether to parse filenames from the RCS filename, and if so what -# prefix to strip. -my $RCS_Mode = 0; -my $RCS_Root = ""; - -## end vars set by options. - -# latest observed times for the start/end tags in delta mode -my $Delta_StartTime = 0; -my $Delta_EndTime = 0; - -# In 'cvs log' output, one long unbroken line of equal signs separates -# files: -my $file_separator = "=======================================" - . "======================================"; - -# In 'cvs log' output, a shorter line of dashes separates log messages -# within a file: -my $logmsg_separator = "----------------------------"; - -my $No_Ancestors = 0; - -############### End globals ############ - - - -&parse_options (); -if ( defined $TestCode ) { - eval $TestCode; - die "Eval failed: '$@'\n" - if $@; -} else { - &derive_change_log (); -} - - -### Everything below is subroutine definitions. ### - -sub run_ext { - my ($cmd) = @_; - $cmd = [$cmd] - unless ref $cmd; - local $" = ' '; - my $out = qx"@$cmd 2>&1"; - my $rv = $?; - my ($sig, $core, $exit) = ($? & 127, $? & 128, $? >> 8); - return $out, $exit, $sig, $core; -} - -# If accumulating, grab the boundary date from pre-existing ChangeLog. -sub maybe_grab_accumulation_date () -{ - if (! $Cumulative || $Update) { - return ""; - } - - # else - - open (LOG, "$Log_File_Name") - or die ("trouble opening $Log_File_Name for reading ($!)"); - - my $boundary_date; - while () - { - if (/^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) - { - $boundary_date = "$1"; - last; - } - } - - close (LOG); - return $boundary_date; -} - -# Fills up a ChangeLog structure in the current directory. -sub derive_change_log () -{ - # See "The Plan" above for a full explanation. - - my %grand_poobah; - - my $file_full_path; - my $time; - my $revision; - my $author; - my $state; - my $lines; - my $cvsstate; - my $msg_txt; - my $detected_file_separator; - - my %tag_date_printed; - - # Might be adding to an existing ChangeLog - my $accumulation_date = &maybe_grab_accumulation_date (); - if ($accumulation_date) { - # Insert -d immediately after 'cvs log' - my $Log_Date_Command = "-d\'>${accumulation_date}\'"; - $Log_Source_Command =~ s/(^.*log\S*)/$1 $Log_Date_Command/; - &debug ("(adding log msg starting from $accumulation_date)\n"); - } - - # We might be expanding usernames - my %usermap; - - # In general, it's probably not very maintainable to use state - # variables like this to tell the loop what it's doing at any given - # moment, but this is only the first one, and if we never have more - # than a few of these, it's okay. - my $collecting_symbolic_names = 0; - my %symbolic_names; # Where tag names get stored. - my %branch_names; # We'll grab branch names while we're at it. - my %branch_numbers; # Save some revisions for @Follow_Branches - my @branch_roots; # For showing which files are branch ancestors. - - # Bleargh. Compensate for a deficiency of custom wrapping. - if (($After_Header ne " ") and $FSF_Style) - { - $After_Header .= "\t"; - } - - if (! $Input_From_Stdin) { - &debug ("(run \"${Log_Source_Command}\")\n"); - open (LOG_SOURCE, "$Log_Source_Command |") - or die "unable to run \"${Log_Source_Command}\""; - } - else { - open (LOG_SOURCE, "-") or die "unable to open stdin for reading"; - } - - binmode LOG_SOURCE; - - %usermap = &maybe_read_user_map_file (); - - while () - { - # Canonicalize line endings - s/\r$//; - my $new_full_path; - - # If on a new file and don't see filename, skip until we find it, and - # when we find it, grab it. - if (! (defined $file_full_path)) - { - if (/^Working file: (.*)/) { - $new_full_path = $1; - } elsif ($RCS_Mode && m|^RCS file: $RCS_Root/(.*),v$|) { - $new_full_path = $1; - } - } - - if (defined $new_full_path) - { - $file_full_path = $new_full_path; - if (@Ignore_Files) - { - my $base; - ($base, undef, undef) = fileparse ($file_full_path); - # Ouch, I wish trailing operators in regexps could be - # evaluated on the fly! - if ($Case_Insensitive) { - if (grep ($file_full_path =~ m|$_|i, @Ignore_Files)) { - undef $file_full_path; - } - } - elsif (grep ($file_full_path =~ m|$_|, @Ignore_Files)) { - undef $file_full_path; - } - } - next; - } - - # Just spin wheels if no file defined yet. - next if (! $file_full_path); - - # Collect tag names in case we're asked to print them in the output. - if (/^symbolic names:$/) { - $collecting_symbolic_names = 1; - next; # There's no more info on this line, so skip to next - } - if ($collecting_symbolic_names) - { - # All tag names are listed with whitespace in front in cvs log - # output; so if see non-whitespace, then we're done collecting. - if (/^\S/) { - $collecting_symbolic_names = 0; - } - else # we're looking at a tag name, so parse & store it - { - # According to the Cederqvist manual, in node "Tags", tag - # names must start with an uppercase or lowercase letter and - # can contain uppercase and lowercase letters, digits, `-', - # and `_'. However, it's not our place to enforce that, so - # we'll allow anything CVS hands us to be a tag: - /^\s+([^:]+): ([\d.]+)$/; - my $tag_name = $1; - my $tag_rev = $2; - - # A branch number either has an odd number of digit sections - # (and hence an even number of dots), or has ".0." as the - # second-to-last digit section. Test for these conditions. - my $real_branch_rev = ""; - if (($tag_rev =~ /^(\d+\.\d+\.)+\d+$/) # Even number of dots... - and (! ($tag_rev =~ /^(1\.)+1$/))) # ...but not "1.[1.]1" - { - $real_branch_rev = $tag_rev; - } - elsif ($tag_rev =~ /(\d+\.(\d+\.)+)0.(\d+)/) # Has ".0." - { - $real_branch_rev = $1 . $3; - } - # If we got a branch, record its number. - if ($real_branch_rev) - { - $branch_names{$real_branch_rev} = $tag_name; - if (@Follow_Branches) { - if (grep ($_ eq $tag_name, @Follow_Branches)) { - $branch_numbers{$tag_name} = $real_branch_rev; - } - } - } - else { - # Else it's just a regular (non-branch) tag. - push (@{$symbolic_names{$tag_rev}}, $tag_name); - } - } - } - # End of code for collecting tag names. - - # If have file name, but not revision, and see revision, then grab - # it. (We collect unconditionally, even though we may or may not - # ever use it.) - if ((! (defined $revision)) and (/^revision (\d+\.[\d.]+)/)) - { - $revision = $1; - - if (@Follow_Branches) - { - foreach my $branch (@Follow_Branches) - { - # Special case for following trunk revisions - if (($branch =~ /^trunk$/i) and ($revision =~ /^[0-9]+\.[0-9]+$/)) - { - goto dengo; - } - - my $branch_number = $branch_numbers{$branch}; - if ($branch_number) - { - # Are we on one of the follow branches or an ancestor of - # same? - # - # If this revision is a prefix of the branch number, or - # possibly is less in the minormost number, OR if this - # branch number is a prefix of the revision, then yes. - # Otherwise, no. - # - # So below, we determine if any of those conditions are - # met. - - # Trivial case: is this revision on the branch? - # (Compare this way to avoid regexps that screw up Emacs - # indentation, argh.) - if ((substr ($revision, 0, ((length ($branch_number)) + 1))) - eq ($branch_number . ".")) - { - goto dengo; - } - # Non-trivial case: check if rev is ancestral to branch - elsif ((length ($branch_number)) > (length ($revision)) - and - $No_Ancestors) - { - $revision =~ /^((?:\d+\.)+)(\d+)$/; - my $r_left = $1; # still has the trailing "." - my $r_end = $2; - - $branch_number =~ /^((?:\d+\.)+)(\d+)\.\d+$/; - my $b_left = $1; # still has trailing "." - my $b_mid = $2; # has no trailing "." - - if (($r_left eq $b_left) - && ($r_end <= $b_mid)) - { - goto dengo; - } - } - } - } - } - else # (! @Follow_Branches) - { - next; - } - - # Else we are following branches, but this revision isn't on the - # path. So skip it. - undef $revision; - dengo: - next; - } - - # If we don't have a revision right now, we couldn't possibly - # be looking at anything useful. - if (! (defined ($revision))) { - $detected_file_separator = /^$file_separator$/o; - if ($detected_file_separator) { - # No revisions for this file; can happen, e.g. "cvs log -d DATE" - goto CLEAR; - } - else { - next; - } - } - - # If have file name but not date and author, and see date or - # author, then grab them: - unless (defined $time) - { - if (/^date: .*/) - { - ($time, $author, $state, $lines) = - &parse_date_author_and_state ($_); - if (defined ($usermap{$author}) and $usermap{$author}) { - $author = $usermap{$author}; - } elsif($Domain ne "" or $Gecos == 1) { - my $email = $author; - if($Domain ne "") { - $email = $author."@".$Domain; - } - my $pw = getpwnam($author); - my $fullname; - my $office; - my $workphone; - my $homephone; - for (($fullname, $office, $workphone, $homephone) = split /\s*,\s*/, $pw->gecos) { - s/&/ucfirst(lc($pw->name))/ge; - } - if($fullname ne "") { - $author = $fullname . " <" . $email . ">"; - } - } - } - else { - $detected_file_separator = /^$file_separator$/o; - if ($detected_file_separator) { - # No revisions for this file; can happen, e.g. "cvs log -d DATE" - goto CLEAR; - } - } - # If the date/time/author hasn't been found yet, we couldn't - # possibly care about anything we see. So skip: - next; - } - - # A "branches: ..." line here indicates that one or more branches - # are rooted at this revision. If we're showing branches, then we - # want to show that fact as well, so we collect all the branches - # that this is the latest ancestor of and store them in - # @branch_roots. Just for reference, the format of the line we're - # seeing at this point is: - # - # branches: 1.5.2; 1.5.4; ...; - # - # Okay, here goes: - - if (/^branches:\s+(.*);$/) - { - if ($Show_Branches) - { - my $lst = $1; - $lst =~ s/(1\.)+1;|(1\.)+1$//; # ignore the trivial branch 1.1.1 - if ($lst) { - @branch_roots = split (/;\s+/, $lst); - } - else { - undef @branch_roots; - } - next; - } - else - { - # Ugh. This really bothers me. Suppose we see a log entry - # like this: - # - # ---------------------------- - # revision 1.1 - # date: 1999/10/17 03:07:38; author: jrandom; state: Exp; - # branches: 1.1.2; - # Intended first line of log message begins here. - # ---------------------------- - # - # The question is, how we can tell the difference between that - # log message and a *two*-line log message whose first line is - # - # "branches: 1.1.2;" - # - # See the problem? The output of "cvs log" is inherently - # ambiguous. - # - # For now, we punt: we liberally assume that people don't - # write log messages like that, and just toss a "branches:" - # line if we see it but are not showing branches. I hope no - # one ever loses real log data because of this. - next; - } - } - - # If have file name, time, and author, then we're just grabbing - # log message texts: - $detected_file_separator = /^$file_separator$/o; - if ($detected_file_separator && ! (defined $revision)) { - # No revisions for this file; can happen, e.g. "cvs log -d DATE" - goto CLEAR; - } - unless ($detected_file_separator || /^$logmsg_separator$/o) - { - $msg_txt .= $_; # Normally, just accumulate the message... - next; - } - # ... until a msg separator is encountered: - # Ensure the message contains something: - if ((! $msg_txt) - || ($msg_txt =~ /^\s*\.\s*$|^\s*$/) - || ($msg_txt =~ /\*\*\* empty log message \*\*\*/)) - { - if ($Prune_Empty_Msgs) { - goto CLEAR; - } - # else - $msg_txt = "[no log message]\n"; - } - - ### Store it all in the Grand Poobah: - { - my $dir_key; # key into %grand_poobah - my %qunk; # complicated little jobbie, see below - - # Each revision of a file has a little data structure (a `qunk') - # associated with it. That data structure holds not only the - # file's name, but any additional information about the file - # that might be needed in the output, such as the revision - # number, tags, branches, etc. The reason to have these things - # arranged in a data structure, instead of just appending them - # textually to the file's name, is that we may want to do a - # little rearranging later as we write the output. For example, - # all the files on a given tag/branch will go together, followed - # by the tag in parentheses (so trunk or otherwise non-tagged - # files would go at the end of the file list for a given log - # message). This rearrangement is a lot easier to do if we - # don't have to reparse the text. - # - # A qunk looks like this: - # - # { - # filename => "hello.c", - # revision => "1.4.3.2", - # time => a timegm() return value (moment of commit) - # tags => [ "tag1", "tag2", ... ], - # branch => "branchname" # There should be only one, right? - # branchroots => [ "branchtag1", "branchtag2", ... ] - # } - - if ($Distributed) { - # Just the basename, don't include the path. - ($qunk{'filename'}, $dir_key, undef) = fileparse ($file_full_path); - } - else { - $dir_key = "./"; - $qunk{'filename'} = $file_full_path; - } - - # This may someday be used in a more sophisticated calculation - # of what other files are involved in this commit. For now, we - # don't use it much except for delta mode, because the - # common-commit-detection algorithm is hypothesized to be - # "good enough" as it stands. - $qunk{'time'} = $time; - - # We might be including revision numbers and/or tags and/or - # branch names in the output. Most of the code from here to - # loop-end deals with organizing these in qunk. - - $qunk{'revision'} = $revision; - $qunk{'state'} = $state; - if ( defined( $lines )) { - $qunk{'lines'} = $lines; - } - - # Grab the branch, even though we may or may not need it: - $qunk{'revision'} =~ /((?:\d+\.)+)\d+/; - my $branch_prefix = $1; - $branch_prefix =~ s/\.$//; # strip off final dot - if ($branch_names{$branch_prefix}) { - $qunk{'branch'} = $branch_names{$branch_prefix}; - } - - # Keep a record of the file's cvs state. - $qunk{'cvsstate'} = $state; - - # If there's anything in the @branch_roots array, then this - # revision is the root of at least one branch. We'll display - # them as branch names instead of revision numbers, the - # substitution for which is done directly in the array: - if (@branch_roots) { - my @roots = map { $branch_names{$_} } @branch_roots; - $qunk{'branchroots'} = \@roots; - } - - # Save tags too. - if (defined ($symbolic_names{$revision})) { - $qunk{'tags'} = $symbolic_names{$revision}; - delete $symbolic_names{$revision}; - - # If we're in 'delta' mode, update the latest observed - # times for the beginning and ending tags, and - # when we get around to printing output, we will simply restrict - # ourselves to that timeframe... - - if ($Delta_Mode) { - if (($time > $Delta_StartTime) && - (grep { $_ eq $Delta_From } @{$qunk{'tags'}})) - { - $Delta_StartTime = $time; - } - - if (($time > $Delta_EndTime) && - (grep { $_ eq $Delta_To } @{$qunk{'tags'}})) - { - $Delta_EndTime = $time; - } - } - } - - # Add this file to the list - # (We use many spoonfuls of autovivication magic. Hashes and arrays - # will spring into existence if they aren't there already.) - - # However, do not collect any info regarding the ChangeLog itself - # and any changes in the xref/ doc files - - if ($qunk{'filename'} ne $Log_File_Name - && $qunk{'filename'} !~ /xref\//) { - &debug ("(pushing log msg for ${dir_key}$qunk{'filename'})\n"); - - # Store with the files in this commit. Later we'll loop through - # again, making sure that revisions with the same log message - # and nearby commit times are grouped together as one commit. - push (@{$grand_poobah{$dir_key}{$author}{$time}{$msg_txt}}, \%qunk); - } - } - - CLEAR: - # Make way for the next message - undef $msg_txt; - undef $time; - undef $revision; - undef $author; - undef @branch_roots; - - # Maybe even make way for the next file: - if ($detected_file_separator) { - undef $file_full_path; - undef %branch_names; - undef %branch_numbers; - undef %symbolic_names; - } - } - - close (LOG_SOURCE); - - ### Process each ChangeLog - - while (my ($dir,$authorhash) = each %grand_poobah) - { - &debug ("DOING DIR: $dir\n"); - - # Here we twist our hash around, from being - # author => time => message => filelist - # in %$authorhash to - # time => author => message => filelist - # in %changelog. - # - # This is also where we merge entries. The algorithm proceeds - # through the timeline of the changelog with a sliding window of - # $Max_Checkin_Duration seconds; within that window, entries that - # have the same log message are merged. - # - # (To save space, we zap %$authorhash after we've copied - # everything out of it.) - - my %changelog; - while (my ($author,$timehash) = each %$authorhash) - { - my $lasttime; - my %stamptime; - foreach my $time (sort {$main::a <=> $main::b} (keys %$timehash)) - { - my $msghash = $timehash->{$time}; - while (my ($msg,$qunklist) = each %$msghash) - { - my $stamptime = $stamptime{$msg}; - if ((defined $stamptime) - and (($time - $stamptime) < $Max_Checkin_Duration) - and (defined $changelog{$stamptime}{$author}{$msg})) - { - push(@{$changelog{$stamptime}{$author}{$msg}}, @$qunklist); - } - else { - $changelog{$time}{$author}{$msg} = $qunklist; - $stamptime{$msg} = $time; - } - } - } - } - undef (%$authorhash); - - ### Now we can write out the ChangeLog! - - my ($logfile_here, $logfile_bak, $tmpfile); - - if (! $Output_To_Stdout) { - $logfile_here = $dir . $Log_File_Name; - $logfile_here =~ s/^\.\/\//\//; # fix any leading ".//" problem - $tmpfile = "${logfile_here}.cvs2cl$$.tmp"; - $logfile_bak = "${logfile_here}.bak"; - - open (LOG_OUT, ">$tmpfile") or die "Unable to open \"$tmpfile\""; - } - else { - open (LOG_OUT, ">-") or die "Unable to open stdout for writing"; - } - - print LOG_OUT $ChangeLog_Header; - - if ($XML_Output) { - my $encoding = - length $XML_Encoding ? qq'encoding="$XML_Encoding"' : ''; - my $version = 'version="1.0"'; - my $declaration = - sprintf '', join ' ', grep length, $version, $encoding; - my $root = - ''; - print LOG_OUT "$declaration\n\n$root\n\n"; - } - - my @key_list = (); - if($Chronological_Order) { - @key_list = sort {$main::a <=> $main::b} (keys %changelog); - } else { - @key_list = sort {$main::b <=> $main::a} (keys %changelog); - } - foreach my $time (@key_list) - { - next if ($Delta_Mode && - (($time <= $Delta_StartTime) || - ($time > $Delta_EndTime && $Delta_EndTime))); - - # Set up the date/author line. - # kff todo: do some more XML munging here, on the header - # part of the entry: - my ($ignore,$min,$hour,$mday,$mon,$year,$wday) - = $UTC_Times ? gmtime($time) : localtime($time); - - # XML output includes everything else, we might as well make - # it always include Day Of Week too, for consistency. - if ($Show_Day_Of_Week or $XML_Output) { - $wday = ("Sunday", "Monday", "Tuesday", "Wednesday", - "Thursday", "Friday", "Saturday")[$wday]; - $wday = ($XML_Output) ? "${wday}\n" : " $wday"; - } - else { - $wday = ""; - } - - my $authorhash = $changelog{$time}; - if ($Show_Tag_Dates) { - my %tags; - while (my ($author,$mesghash) = each %$authorhash) { - while (my ($msg,$qunk) = each %$mesghash) { - foreach my $qunkref2 (@$qunk) { - if (defined ($$qunkref2{'tags'})) { - foreach my $tag (@{$$qunkref2{'tags'}}) { - $tags{$tag} = 1; - } - } - } - } - } - foreach my $tag (keys %tags) { - if (!defined $tag_date_printed{$tag}) { - $tag_date_printed{$tag} = $time; - if ($XML_Output) { - # NOT YET DONE - } - else { - if ($Show_Times) { - printf LOG_OUT ("%4u-%02u-%02u${wday} %02u:%02u tag %s\n\n", - $year+1900, $mon+1, $mday, $hour, $min, $tag); - } else { - printf LOG_OUT ("%4u-%02u-%02u${wday} tag %s\n\n", - $year+1900, $mon+1, $mday, $tag); - } - } - } - } - } - while (my ($author,$mesghash) = each %$authorhash) - { - # If XML, escape in outer loop to avoid compound quoting: - if ($XML_Output) { - $author = &xml_escape ($author); - } - - FOOBIE: - # We sort here to enable predictable ordering for the testing porpoises - for my $msg (sort keys %$mesghash) - { - my $qunklist = $mesghash->{$msg}; - - ## MJP: 19.xii.01 : Exclude @ignore_tags - for my $ignore_tag (keys %ignore_tags) { - next FOOBIE - if grep($_ eq $ignore_tag, map(@{$_->{tags}}, - grep(defined $_->{tags}, - @$qunklist))); - } - ## MJP: 19.xii.01 : End exclude @ignore_tags - - # show only files with tag --show-tag $show_tag - if ( keys %show_tags ) { - next FOOBIE - if !grep(exists $show_tags{$_}, map(@{$_->{tags}}, - grep(defined $_->{tags}, - @$qunklist))); - } - - my $files = &pretty_file_list ($qunklist); - my $header_line; # date and author - my $body; # see below - my $wholething; # $header_line + $body - - if ($XML_Output) { - $header_line = - sprintf ("%4u-%02u-%02u\n" - . "${wday}" - . "\n" - . "%s\n", - $year+1900, $mon+1, $mday, $hour, $min, $author); - } - else { - if ($Show_Times) { - $header_line = - sprintf ("%4u-%02u-%02u${wday} %02u:%02u %s\n\n", - $year+1900, $mon+1, $mday, $hour, $min, $author); - } else { - $header_line = - sprintf ("%4u-%02u-%02u${wday} %s\n\n", - $year+1900, $mon+1, $mday, $author); - } - } - - $Text::Wrap::huge = 'overflow' - if $Text::Wrap::VERSION >= 2001.0130; - # Reshape the body according to user preferences. - if ($XML_Output) - { - $msg = &preprocess_msg_text ($msg); - $body = $files . $msg; - } - elsif ($No_Wrap && !$Summary) - { - $msg = &preprocess_msg_text ($msg); - $files = wrap ("\t", " ", "$files"); - $msg =~ s/\n(.*)/\n\t$1/g; - unless ($After_Header eq " ") { - $msg =~ s/^(.*)/\t$1/g; - } - $body = $files . $After_Header . $msg; - } - elsif ($Summary) - { - my( $filelist, $qunk ); - my( @DeletedQunks, @AddedQunks, @ChangedQunks ); - - $msg = &preprocess_msg_text ($msg); - # - # Sort the files (qunks) according to the operation that was - # performed. Files which were added have no line change - # indicator, whereas deleted files have state dead. - # - foreach $qunk ( @$qunklist ) - { - if ( "dead" eq $qunk->{'state'}) - { - push( @DeletedQunks, $qunk ); - } - elsif ( !exists( $qunk->{'lines'})) - { - push( @AddedQunks, $qunk ); - } - else - { - push( @ChangedQunks, $qunk ); - } - } - # - # The qunks list was originally in tree search order. Let's - # get that back. The lists, if they exist, will be reversed upon - # processing. - # - - # - # Now write the three sections onto $filelist - # - if ( @DeletedQunks ) - { - $filelist .= "\tDeleted:\n"; - foreach $qunk ( @DeletedQunks ) - { - $filelist .= "\t\t" . $qunk->{'filename'}; - $filelist .= " (" . $qunk->{'revision'} . ")"; - $filelist .= "\n"; - } - undef( @DeletedQunks ); - } - if ( @AddedQunks ) - { - $filelist .= "\tAdded:\n"; - foreach $qunk ( @AddedQunks ) - { - $filelist .= "\t\t" . $qunk->{'filename'}; - $filelist .= " (" . $qunk->{'revision'} . ")"; - $filelist .= "\n"; - } - undef( @AddedQunks ); - } - if ( @ChangedQunks ) - { - $filelist .= "\tChanged:\n"; - foreach $qunk ( @ChangedQunks ) - { - $filelist .= "\t\t" . $qunk->{'filename'}; - $filelist .= " (" . $qunk->{'revision'} . ")"; - $filelist .= ", \"" . $qunk->{'state'} . "\""; - $filelist .= ", lines: " . $qunk->{'lines'}; - $filelist .= "\n"; - } - undef( @ChangedQunks ); - } - chomp( $filelist ); - $msg =~ s/\n(.*)/\n\t$1/g; - unless ($After_Header eq " ") { - $msg =~ s/^(.*)/\t$1/g; - } - $body = $filelist . $After_Header . $msg; - } - else # do wrapping, either FSF-style or regular - { - if ($FSF_Style) - { - $files = wrap ("\t", " ", "$files"); - - my $files_last_line_len = 0; - if ($After_Header eq " ") - { - $files_last_line_len = &last_line_len ($files); - $files_last_line_len += 1; # for $After_Header - } - - $msg = &wrap_log_entry - ($msg, "\t", 69 - $files_last_line_len, 69); - $body = $files . $After_Header . $msg; - } - else # not FSF-style - { - $msg = &preprocess_msg_text ($msg); - $body = $files . $After_Header . $msg; - $body = wrap ("\t", " ", "$body"); - } - } - - $wholething = $header_line . $body; - - if ($XML_Output) { - $wholething = "\n${wholething}\n"; - } - - # One last check: make sure it passes the regexp test, if the - # user asked for that. We have to do it here, so that the - # test can match against information in the header as well - # as in the text of the log message. - - # How annoying to duplicate so much code just because I - # can't figure out a way to evaluate scalars on the trailing - # operator portion of a regular expression. Grrr. - if ($Case_Insensitive) { - unless ($Regexp_Gate && ($wholething !~ /$Regexp_Gate/oi)) { - print LOG_OUT "${wholething}\n"; - } - } - else { - unless ($Regexp_Gate && ($wholething !~ /$Regexp_Gate/o)) { - print LOG_OUT "${wholething}\n"; - } - } - } - } - } - - if ($XML_Output) { - print LOG_OUT "\n"; - } - - close (LOG_OUT); - - if (! $Output_To_Stdout) - { - # If accumulating, append old data to new before renaming. But - # don't append the most recent entry, since it's already in the - # new log due to CVS's idiosyncratic interpretation of "log -d". - if ($Cumulative && -f $logfile_here) - { - open (NEW_LOG, ">>$tmpfile") - or die "trouble appending to $tmpfile ($!)"; - - open (OLD_LOG, "<$logfile_here") - or die "trouble reading from $logfile_here ($!)"; - - my $started_first_entry = 0; - my $passed_first_entry = 0; - while () - { - if (! $passed_first_entry) - { - if ((! $started_first_entry) - && /^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) { - $started_first_entry = 1; - } - elsif (/^(\d\d\d\d-\d\d-\d\d\s+\d\d:\d\d)/) { - $passed_first_entry = 1; - print NEW_LOG $_; - } - } - else { - print NEW_LOG $_; - } - } - - close (NEW_LOG); - close (OLD_LOG); - } - - if (-f $logfile_here) { - rename ($logfile_here, $logfile_bak); - } - rename ($tmpfile, $logfile_here); - } - } -} - -sub parse_date_author_and_state () -{ - # Parses the date/time and author out of a line like: - # - # date: 1999/02/19 23:29:05; author: apharris; state: Exp; - - my $line = shift; - - my ($year, $mon, $mday, $hours, $min, $secs, $author, $state, $rest) = - $line =~ - m#(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+([^;]+);\s+state:\s+([^;]+);(.*)# - or die "Couldn't parse date ``$line''"; - die "Bad date or Y2K issues" unless ($year > 1969 and $year < 2258); - # Kinda arbitrary, but useful as a sanity check - my $time = timegm($secs,$min,$hours,$mday,$mon-1,$year-1900); - my $lines; - if ( $rest =~ m#\s+lines:\s+(.*)# ) - { - $lines =$1; - } - return ($time, $author, $state, $lines); -} - -# Here we take a bunch of qunks and convert them into printed -# summary that will include all the information the user asked for. -sub pretty_file_list () -{ - if ($Hide_Filenames and (! $XML_Output)) { - return ""; - } - - my $qunksref = shift; - - my @qunkrefs = - grep +((! exists $_->{'tags'} or - ! grep exists $ignore_tags{$_}, @{$_->{'tags'}}) and - (! keys %show_tags or - (exists $_->{'tags'} and - grep exists $show_tags{$_}, @{$_->{'tags'}})) - ), - @$qunksref; - my @filenames; - my $beauty = ""; # The accumulating header string for this entry. - my %non_unanimous_tags; # Tags found in a proper subset of qunks - my %unanimous_tags; # Tags found in all qunks - my %all_branches; # Branches found in any qunk - my $common_dir = undef; # Dir prefix common to all files ("" if none) - my $fbegun = 0; # Did we begin printing filenames yet? - - # First, loop over the qunks gathering all the tag/branch names. - # We'll put them all in non_unanimous_tags, and take out the - # unanimous ones later. - QUNKREF: - foreach my $qunkref (@qunkrefs) - { - # Keep track of whether all the files in this commit were in the - # same directory, and memorize it if so. We can make the output a - # little more compact by mentioning the directory only once. - if ($Common_Dir && (scalar (@qunkrefs)) > 1) - { - if (! (defined ($common_dir))) - { - my ($base, $dir); - ($base, $dir, undef) = fileparse ($$qunkref{'filename'}); - - if ((! (defined ($dir))) # this first case is sheer paranoia - or ($dir eq "") - or ($dir eq "./") - or ($dir eq ".\\")) - { - $common_dir = ""; - } - else - { - $common_dir = $dir; - } - } - elsif ($common_dir ne "") - { - # Already have a common dir prefix, so how much of it can we preserve? - $common_dir = &common_path_prefix ($$qunkref{'filename'}, $common_dir); - } - } - else # only one file in this entry anyway, so common dir not an issue - { - $common_dir = ""; - } - - if (defined ($$qunkref{'branch'})) { - $all_branches{$$qunkref{'branch'}} = 1; - } - if (defined ($$qunkref{'tags'})) { - foreach my $tag (@{$$qunkref{'tags'}}) { - $non_unanimous_tags{$tag} = 1; - } - } - } - - # Any tag held by all qunks will be printed specially... but only if - # there are multiple qunks in the first place! - if ((scalar (@qunkrefs)) > 1) { - foreach my $tag (keys (%non_unanimous_tags)) { - my $everyone_has_this_tag = 1; - foreach my $qunkref (@qunkrefs) { - if ((! (defined ($$qunkref{'tags'}))) - or (! (grep ($_ eq $tag, @{$$qunkref{'tags'}})))) { - $everyone_has_this_tag = 0; - } - } - if ($everyone_has_this_tag) { - $unanimous_tags{$tag} = 1; - delete $non_unanimous_tags{$tag}; - } - } - } - - if ($XML_Output) - { - # If outputting XML, then our task is pretty simple, because we - # don't have to detect common dir, common tags, branch prefixing, - # etc. We just output exactly what we have, and don't worry about - # redundancy or readability. - - foreach my $qunkref (@qunkrefs) - { - my $filename = $$qunkref{'filename'}; - my $cvsstate = $$qunkref{'cvsstate'}; - my $revision = $$qunkref{'revision'}; - my $tags = $$qunkref{'tags'}; - my $branch = $$qunkref{'branch'}; - my $branchroots = $$qunkref{'branchroots'}; - - $filename = &xml_escape ($filename); # probably paranoia - $revision = &xml_escape ($revision); # definitely paranoia - - $beauty .= "\n"; - $beauty .= "${filename}\n"; - $beauty .= "${cvsstate}\n"; - $beauty .= "${revision}\n"; - if ($branch) { - $branch = &xml_escape ($branch); # more paranoia - $beauty .= "${branch}\n"; - } - foreach my $tag (@$tags) { - $tag = &xml_escape ($tag); # by now you're used to the paranoia - $beauty .= "${tag}\n"; - } - foreach my $root (@$branchroots) { - $root = &xml_escape ($root); # which is good, because it will continue - $beauty .= "${root}\n"; - } - $beauty .= "\n"; - } - - # Theoretically, we could go home now. But as long as we're here, - # let's print out the common_dir and utags, as a convenience to - # the receiver (after all, earlier code calculated that stuff - # anyway, so we might as well take advantage of it). - - if ((scalar (keys (%unanimous_tags))) > 1) { - foreach my $utag ((keys (%unanimous_tags))) { - $utag = &xml_escape ($utag); # the usual paranoia - $beauty .= "${utag}\n"; - } - } - if ($common_dir) { - $common_dir = &xml_escape ($common_dir); - $beauty .= "${common_dir}\n"; - } - - # That's enough for XML, time to go home: - return $beauty; - } - - # Else not XML output, so complexly compactify for chordate - # consumption. At this point we have enough global information - # about all the qunks to organize them non-redundantly for output. - - if ($common_dir) { - # Note that $common_dir still has its trailing slash - $beauty .= "$common_dir: "; - } - - if ($Show_Branches) - { - # For trailing revision numbers. - my @brevisions; - - foreach my $branch (keys (%all_branches)) - { - foreach my $qunkref (@qunkrefs) - { - if ((defined ($$qunkref{'branch'})) - and ($$qunkref{'branch'} eq $branch)) - { - if ($fbegun) { - # kff todo: comma-delimited in XML too? Sure. - $beauty .= ", "; - } - else { - $fbegun = 1; - } - my $fname = substr ($$qunkref{'filename'}, length ($common_dir)); - $beauty .= $fname; - $$qunkref{'printed'} = 1; # Just setting a mark bit, basically - - if ($Show_Tags && (defined @{$$qunkref{'tags'}})) { - my @tags = grep ($non_unanimous_tags{$_}, @{$$qunkref{'tags'}}); - - if (@tags) { - $beauty .= " (tags: "; - $beauty .= join (', ', @tags); - $beauty .= ")"; - } - } - - if ($Show_Revisions) { - # Collect the revision numbers' last components, but don't - # print them -- they'll get printed with the branch name - # later. - $$qunkref{'revision'} =~ /.+\.([\d]+)$/; - push (@brevisions, $1); - - # todo: we're still collecting branch roots, but we're not - # showing them anywhere. If we do show them, it would be - # nifty to just call them revision "0" on a the branch. - # Yeah, that's the ticket. - } - } - } - $beauty .= " ($branch"; - if (@brevisions) { - if ((scalar (@brevisions)) > 1) { - $beauty .= ".["; - $beauty .= (join (',', @brevisions)); - $beauty .= "]"; - } - else { - # Square brackets are spurious here, since there's no range to - # encapsulate - $beauty .= ".$brevisions[0]"; - } - } - $beauty .= ")"; - } - } - - # Okay; any qunks that were done according to branch are taken care - # of, and marked as printed. Now print everyone else. - - my %fileinfo_printed; - foreach my $qunkref (@qunkrefs) - { - next if (defined ($$qunkref{'printed'})); # skip if already printed - - my $b = substr ($$qunkref{'filename'}, length ($common_dir)); - # todo: Shlomo's change was this: - # $beauty .= substr ($$qunkref{'filename'}, - # (($common_dir eq "./") ? "" : length ($common_dir))); - $$qunkref{'printed'} = 1; # Set a mark bit. - - if ($Show_Revisions || $Show_Tags || $Show_Dead) - { - my $started_addendum = 0; - - if ($Show_Revisions) { - $started_addendum = 1; - $b .= " ("; - $b .= "$$qunkref{'revision'}"; - } - if ($Show_Dead && $$qunkref{'cvsstate'} =~ /dead/) - { - # Deliberately not using $started_addendum. Keeping it simple. - $b .= "[DEAD]"; - } - if ($Show_Tags && (defined $$qunkref{'tags'})) { - my @tags = grep ($non_unanimous_tags{$_}, @{$$qunkref{'tags'}}); - if ((scalar (@tags)) > 0) { - if ($started_addendum) { - $b .= ", "; - } - else { - $b .= " (tags: "; - } - $b .= join (', ', @tags); - $started_addendum = 1; - } - } - if ($started_addendum) { - $b .= ")"; - } - } - - unless ( exists $fileinfo_printed{$b} ) { - if ($fbegun) { - $beauty .= ", "; - } else { - $fbegun = 1; - } - $beauty .= $b, $fileinfo_printed{$b} = 1; - } - } - - # Unanimous tags always come last. - if ($Show_Tags && %unanimous_tags) - { - $beauty .= " (utags: "; - $beauty .= join (', ', sort keys (%unanimous_tags)); - $beauty .= ")"; - } - - # todo: still have to take care of branch_roots? - - $beauty = "* $beauty:"; - - return $beauty; -} - -sub min ($$) { $_[0] < $_[1] ? $_[0] : $_[1] } - -sub common_path_prefix ($$) -{ - my ($path1, $path2) = @_; - - # For compatibility (with older versions of cvs2cl.pl), we think in UN*X - # terms, and mould windoze filenames to match. Is this really appropriate? - # If a file is checked in under UN*X, and cvs log run on windoze, which way - # do the path separators slope? Can we use fileparse as per the local - # conventions? If so, we should probably have a user option to specify an - # OS to emulate to handle stdin-fed logs. If we did this, we could avoid - # the nasty \-/ transmogrification below. - - my ($dir1, $dir2) = map +(fileparse($_))[1], $path1, $path2; - - # Transmogrify Windows filenames to look like Unix. - # (It is far more likely that someone is running cvs2cl.pl under - # Windows than that they would genuinely have backslashes in their - # filenames.) - tr!\\!/! - for $dir1, $dir2; - - my ($accum1, $accum2, $last_common_prefix) = ('') x 3; - - my @path1 = grep length($_), split qr!/!, $dir1; - my @path2 = grep length($_), split qr!/!, $dir2; - - my @common_path; - for (0..min($#path1,$#path2)) { - if ( $path1[$_] eq $path2[$_]) { - push @common_path, $path1[$_]; - } else { - last; - } - } - - return join '', map "$_/", @common_path; -} - -sub preprocess_msg_text () -{ - my $text = shift; - - # Strip out carriage returns (as they probably result from DOSsy editors). - $text =~ s/\r\n/\n/g; - - # If it *looks* like two newlines, make it *be* two newlines: - $text =~ s/\n\s*\n/\n\n/g; - - if ($XML_Output) - { - $text = &xml_escape ($text); - $text = "${text}\n"; - } - elsif (! $No_Wrap) - { - # Strip off lone newlines, but only for lines that don't begin with - # whitespace or a mail-quoting character, since we want to preserve - # that kind of formatting. Also don't strip newlines that follow a - # period; we handle those specially next. And don't strip - # newlines that precede an open paren. - 1 while ($text =~ s/(^|\n)([^>\s].*[^.\n])\n([^>\n])/$1$2 $3/g); - - # If a newline follows a period, make sure that when we bring up the - # bottom sentence, it begins with two spaces. - 1 while ($text =~ s/(^|\n)([^>\s].*)\n([^>\n])/$1$2 $3/g); - } - - return $text; -} - -sub last_line_len () -{ - my $files_list = shift; - my @lines = split (/\n/, $files_list); - my $last_line = pop (@lines); - return length ($last_line); -} - -# A custom wrap function, sensitive to some common constructs used in -# log entries. -sub wrap_log_entry () -{ - my $text = shift; # The text to wrap. - my $left_pad_str = shift; # String to pad with on the left. - - # These do NOT take left_pad_str into account: - my $length_remaining = shift; # Amount left on current line. - my $max_line_length = shift; # Amount left for a blank line. - - my $wrapped_text = ""; # The accumulating wrapped entry. - my $user_indent = ""; # Inherited user_indent from prev line. - - my $first_time = 1; # First iteration of the loop? - my $suppress_line_start_match = 0; # Set to disable line start checks. - - my @lines = split (/\n/, $text); - while (@lines) # Don't use `foreach' here, it won't work. - { - my $this_line = shift (@lines); - chomp $this_line; - - if ($this_line =~ /^(\s+)/) { - $user_indent = $1; - } - else { - $user_indent = ""; - } - - # If it matches any of the line-start regexps, print a newline now... - if ($suppress_line_start_match) - { - $suppress_line_start_match = 0; - } - elsif (($this_line =~ /^(\s*)\*\s+[a-zA-Z0-9]/) - || ($this_line =~ /^(\s*)\* [a-zA-Z0-9_\.\/\+-]+/) - || ($this_line =~ /^(\s*)\([a-zA-Z0-9_\.\/\+-]+(\)|,\s*)/) - || ($this_line =~ /^(\s+)(\S+)/) - || ($this_line =~ /^(\s*)- +/) - || ($this_line =~ /^()\s*$/) - || ($this_line =~ /^(\s*)\*\) +/) - || ($this_line =~ /^(\s*)[a-zA-Z0-9](\)|\.|\:) +/)) - { - # Make a line break immediately, unless header separator is set - # and this line is the first line in the entry, in which case - # we're getting the blank line for free already and shouldn't - # add an extra one. - unless (($After_Header ne " ") and ($first_time)) - { - if ($this_line =~ /^()\s*$/) { - $suppress_line_start_match = 1; - $wrapped_text .= "\n${left_pad_str}"; - } - - $wrapped_text .= "\n${left_pad_str}"; - } - - $length_remaining = $max_line_length - (length ($user_indent)); - } - - # Now that any user_indent has been preserved, strip off leading - # whitespace, so up-folding has no ugly side-effects. - $this_line =~ s/^\s*//; - - # Accumulate the line, and adjust parameters for next line. - my $this_len = length ($this_line); - if ($this_len == 0) - { - # Blank lines should cancel any user_indent level. - $user_indent = ""; - $length_remaining = $max_line_length; - } - elsif ($this_len >= $length_remaining) # Line too long, try breaking it. - { - # Walk backwards from the end. At first acceptable spot, break - # a new line. - my $idx = $length_remaining - 1; - if ($idx < 0) { $idx = 0 }; - while ($idx > 0) - { - if (substr ($this_line, $idx, 1) =~ /\s/) - { - my $line_now = substr ($this_line, 0, $idx); - my $next_line = substr ($this_line, $idx); - $this_line = $line_now; - - # Clean whitespace off the end. - chomp $this_line; - - # The current line is ready to be printed. - $this_line .= "\n${left_pad_str}"; - - # Make sure the next line is allowed full room. - $length_remaining = $max_line_length - (length ($user_indent)); - - # Strip next_line, but then preserve any user_indent. - $next_line =~ s/^\s*//; - - # Sneak a peek at the user_indent of the upcoming line, so - # $next_line (which will now precede it) can inherit that - # indent level. Otherwise, use whatever user_indent level - # we currently have, which might be none. - my $next_next_line = shift (@lines); - if ((defined ($next_next_line)) && ($next_next_line =~ /^(\s+)/)) { - $next_line = $1 . $next_line if (defined ($1)); - # $length_remaining = $max_line_length - (length ($1)); - $next_next_line =~ s/^\s*//; - } - else { - $next_line = $user_indent . $next_line; - } - if (defined ($next_next_line)) { - unshift (@lines, $next_next_line); - } - unshift (@lines, $next_line); - - # Our new next line might, coincidentally, begin with one of - # the line-start regexps, so we temporarily turn off - # sensitivity to that until we're past the line. - $suppress_line_start_match = 1; - - last; - } - else - { - $idx--; - } - } - - if ($idx == 0) - { - # We bottomed out because the line is longer than the - # available space. But that could be because the space is - # small, or because the line is longer than even the maximum - # possible space. Handle both cases below. - - if ($length_remaining == ($max_line_length - (length ($user_indent)))) - { - # The line is simply too long -- there is no hope of ever - # breaking it nicely, so just insert it verbatim, with - # appropriate padding. - $this_line = "\n${left_pad_str}${this_line}"; - } - else - { - # Can't break it here, but may be able to on the next round... - unshift (@lines, $this_line); - $length_remaining = $max_line_length - (length ($user_indent)); - $this_line = "\n${left_pad_str}"; - } - } - } - else # $this_len < $length_remaining, so tack on what we can. - { - # Leave a note for the next iteration. - $length_remaining = $length_remaining - $this_len; - - if ($this_line =~ /\.$/) - { - $this_line .= " "; - $length_remaining -= 2; - } - else # not a sentence end - { - $this_line .= " "; - $length_remaining -= 1; - } - } - - # Unconditionally indicate that loop has run at least once. - $first_time = 0; - - $wrapped_text .= "${user_indent}${this_line}"; - } - - # One last bit of padding. - $wrapped_text .= "\n"; - - return $wrapped_text; -} - -sub xml_escape () -{ - my $txt = shift; - $txt =~ s/&/&/g; - $txt =~ s//>/g; - return $txt; -} - -sub maybe_read_user_map_file () -{ - my %expansions; - - if ($User_Map_File) - { - open (MAPFILE, "<$User_Map_File") - or die ("Unable to open $User_Map_File ($!)"); - - while () - { - next if /^\s*#/; # Skip comment lines. - next if not /:/; # Skip lines without colons. - - # It is now safe to split on ':'. - my ($username, $expansion) = split ':'; - chomp $expansion; - $expansion =~ s/^'(.*)'$/$1/; - $expansion =~ s/^"(.*)"$/$1/; - - # If it looks like the expansion has a real name already, then - # we toss the username we got from CVS log. Otherwise, keep - # it to use in combination with the email address. - - if ($expansion =~ /^\s*<{0,1}\S+@.*/) { - # Also, add angle brackets if none present - if (! ($expansion =~ /<\S+@\S+>/)) { - $expansions{$username} = "$username <$expansion>"; - } - else { - $expansions{$username} = "$username $expansion"; - } - } - else { - $expansions{$username} = $expansion; - } - } # fi ($User_Map_File) - - close (MAPFILE); - } - - if (defined $User_Passwd_File) - { - if ( ! defined $Mail_Domain ) { - if ( -e MAILNAME ) { - chomp($Mail_Domain = slurp_file(MAILNAME)); - } else { - MAILDOMAIN_CMD: - for ([qw(hostname -d)], 'dnsdomainname', 'domainname') { - my ($text, $exit, $sig, $core) = run_ext($_); - if ( $exit == 0 && $sig == 0 && $core == 0 ) { - chomp $text; - if ( length $text ) { - $Mail_Domain = $text; - last MAILDOMAIN_CMD; - } - } - } - } - } - - die "No mail domain found\n" - unless defined $Mail_Domain; - - open (MAPFILE, "<$User_Passwd_File") - or die ("Unable to open $User_Passwd_File ($!)"); - while () - { - # all lines are valid - my ($username, $pw, $uid, $gid, $gecos, $homedir, $shell) = split ':'; - my $expansion = ''; - ($expansion) = split (',', $gecos) - if defined $gecos && length $gecos; - - $expansions{$username} = "$expansion <$username\@$Mail_Domain>"; - } - close (MAPFILE); - } - - return %expansions; -} - -sub parse_options () -{ - # Check this internally before setting the global variable. - my $output_file; - - # If this gets set, we encountered unknown options and will exit at - # the end of this subroutine. - my $exit_with_admonishment = 0; - - while (my $arg = shift (@ARGV)) - { - if ($arg =~ /^-h$|^-help$|^--help$|^--usage$|^-?$/) { - $Print_Usage = 1; - } - elsif ($arg =~ /^--delta$/) { - my $narg = shift(@ARGV) || die "$arg needs argument.\n"; - if ($narg =~ /^([A-Za-z][A-Za-z0-9_\-]*):([A-Za-z][A-Za-z0-9_\-]*)$/) { - $Delta_From = $1; - $Delta_To = $2; - $Delta_Mode = 1; - } else { - die "--delta FROM_TAG:TO_TAG is what you meant to say.\n"; - } - } - elsif ($arg =~ /^--debug$/) { # unadvertised option, heh - $Debug = 1; - } - elsif ($arg =~ /^--version$/) { - $Print_Version = 1; - } - elsif ($arg =~ /^-g$|^--global-opts$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - # Don't assume CVS is called "cvs" on the user's system: - $Log_Source_Command =~ s/(^\S*)/$1 $narg/; - } - elsif ($arg =~ /^-l$|^--log-opts$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $Log_Source_Command .= " $narg"; - } - elsif ($arg =~ /^-f$|^--file$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $output_file = $narg; - } - elsif ($arg =~ /^--accum$/) { - $Cumulative = 1; - } - elsif ($arg =~ /^--update$/) { - $Update = 1; - } - elsif ($arg =~ /^--fsf$/) { - $FSF_Style = 1; - } - elsif ($arg =~ /^--FSF$/) { - $Show_Times = 0; - $Common_Dir = 0; - } - elsif ($arg =~ /^--rcs/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $RCS_Root = $narg; - $RCS_Mode = 1; - } - elsif ($arg =~ /^-U$|^--usermap$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $User_Map_File = $narg; - } - elsif ($arg =~ /^--gecos$/) { - $Gecos = 1; - } - elsif ($arg =~ /^--domain$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $Domain = $narg; - } - elsif ($arg =~ /^--passwd$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $User_Passwd_File = $narg; - } - elsif ($arg =~ /^--mailname$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $Mail_Domain = $narg; - } - elsif ($arg =~ /^-W$|^--window$/) { - defined(my $narg = shift (@ARGV)) || die "$arg needs argument.\n"; - $Max_Checkin_Duration = $narg; - } - elsif ($arg =~ /^--chrono$/) { - $Chronological_Order = 1; - } - elsif ($arg =~ /^-I$|^--ignore$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - push (@Ignore_Files, $narg); - } - elsif ($arg =~ /^-C$|^--case-insensitive$/) { - $Case_Insensitive = 1; - } - elsif ($arg =~ /^-R$|^--regexp$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $Regexp_Gate = $narg; - } - elsif ($arg =~ /^--stdout$/) { - $Output_To_Stdout = 1; - } - elsif ($arg =~ /^--version$/) { - $Print_Version = 1; - } - elsif ($arg =~ /^-d$|^--distributed$/) { - $Distributed = 1; - } - elsif ($arg =~ /^-P$|^--prune$/) { - $Prune_Empty_Msgs = 1; - } - elsif ($arg =~ /^-S$|^--separate-header$/) { - $After_Header = "\n\n"; - } - elsif ($arg =~ /^--no-wrap$/) { - $No_Wrap = 1; - } - elsif ($arg =~ /^--summary$/) { - $Summary = 1; - $After_Header = "\n\n"; # Summary implies --separate-header - } - elsif ($arg =~ /^--gmt$|^--utc$/) { - $UTC_Times = 1; - } - elsif ($arg =~ /^-w$|^--day-of-week$/) { - $Show_Day_Of_Week = 1; - } - elsif ($arg =~ /^--no-times$/) { - $Show_Times = 0; - } - elsif ($arg =~ /^-r$|^--revisions$/) { - $Show_Revisions = 1; - } - elsif ($arg =~ /^--show-dead$/) { - $Show_Dead = 1; - } - elsif ($arg =~ /^-t$|^--tags$/) { - $Show_Tags = 1; - } - elsif ($arg =~ /^-T$|^--tagdates$/) { - $Show_Tag_Dates = 1; - } - elsif ($arg =~ /^-b$|^--branches$/) { - $Show_Branches = 1; - } - elsif ($arg =~ /^-F$|^--follow$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - push (@Follow_Branches, $narg); - } - elsif ($arg =~ /^--stdin$/) { - $Input_From_Stdin = 1; - } - elsif ($arg =~ /^--header$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $ChangeLog_Header = &slurp_file ($narg); - if (! defined ($ChangeLog_Header)) { - $ChangeLog_Header = ""; - } - } - elsif ($arg =~ /^--xml-encoding$/) { - my $narg = shift (@ARGV) || die "$arg needs argument.\n"; - $XML_Encoding = $narg ; - } - elsif ($arg =~ /^--xml$/) { - $XML_Output = 1; - } - elsif ($arg =~ /^--hide-filenames$/) { - $Hide_Filenames = 1; - $After_Header = ""; - } - elsif ($arg =~ /^--no-common-dir$/) { - $Common_Dir = 0; - } - elsif ($arg =~ /^--ignore-tag$/ ) { - die "$arg needs argument.\n" - unless @ARGV; - $ignore_tags{shift @ARGV} = 1; - } - elsif ($arg =~ /^--show-tag$/ ) { - die "$arg needs argument.\n" - unless @ARGV; - $show_tags{shift @ARGV} = 1; - } - elsif ( lc ($arg) eq '--test-code' ) { - # Deliberately undocumented. This is not a public interface, - # and may change/disappear at any time. - die "$arg needs argument.\n" - unless @ARGV; - $TestCode = shift @ARGV; - } - elsif ($arg =~ /^--no-ancestors$/) { - $No_Ancestors = 1; - } - else { - # Just add a filename as argument to the log command - $Log_Source_Command .= " '$arg'"; - } - } - - ## Check for contradictions... - - if ($Output_To_Stdout && $Distributed) { - print STDERR "cannot pass both --stdout and --distributed\n"; - $exit_with_admonishment = 1; - } - - if ($Output_To_Stdout && $output_file) { - print STDERR "cannot pass both --stdout and --file\n"; - $exit_with_admonishment = 1; - } - - if ($XML_Output && $Cumulative) { - print STDERR "cannot pass both --xml and --accum\n"; - $exit_with_admonishment = 1; - } - - # Or if any other error message has already been printed out, we - # just leave now: - if ($exit_with_admonishment) { - &usage (); - exit (1); - } - elsif ($Print_Usage) { - &usage (); - exit (0); - } - elsif ($Print_Version) { - &version (); - exit (0); - } - - ## Else no problems, so proceed. - - if ($output_file) { - $Log_File_Name = $output_file; - } -} - -sub slurp_file () -{ - my $filename = shift || die ("no filename passed to slurp_file()"); - my $retstr; - - open (SLURPEE, "<${filename}") or die ("unable to open $filename ($!)"); - my $saved_sep = $/; - undef $/; - $retstr = ; - $/ = $saved_sep; - close (SLURPEE); - return $retstr; -} - -sub debug () -{ - if ($Debug) { - my $msg = shift; - print STDERR $msg; - } -} - -sub version () -{ - print "cvs2cl.pl version ${VERSION}; distributed under the GNU GPL.\n"; -} - -sub usage () -{ - &version (); - print <<'END_OF_INFO'; -Generate GNU-style ChangeLogs in CVS working copies. - -Notes about the output format(s): - - The default output of cvs2cl.pl is designed to be compact, formally - unambiguous, but still easy for humans to read. It is largely - self-explanatory, I hope; the one abbreviation that might not be - obvious is "utags". That stands for "universal tags" -- a - universal tag is one held by all the files in a given change entry. - - If you need output that's easy for a program to parse, use the - --xml option. Note that with XML output, just about all available - information is included with each change entry, whether you asked - for it or not, on the theory that your parser can ignore anything - it's not looking for. - -Notes about the options and arguments (the actual options are listed -last in this usage message): - - * The -I and -F options may appear multiple times. - - * To follow trunk revisions, use "-F trunk" ("-F TRUNK" also works). - This is okay because no would ever, ever be crazy enough to name a - branch "trunk", right? Right. - - * For the -U option, the UFILE should be formatted like - CVSROOT/users. That is, each line of UFILE looks like this - jrandom:jrandom@red-bean.com - or maybe even like this - jrandom:'Jesse Q. Random ' - Don't forget to quote the portion after the colon if necessary. - - * Many people want to filter by date. To do so, invoke cvs2cl.pl - like this: - cvs2cl.pl -l "-d'DATESPEC'" - where DATESPEC is any date specification valid for "cvs log -d". - (Note that CVS 1.10.7 and below requires there be no space between - -d and its argument). - -Options/Arguments: - - -h, -help, --help, or -? Show this usage and exit - --version Show version and exit - -r, --revisions Show revision numbers in output - -b, --branches Show branch names in revisions when possible - -t, --tags Show tags (symbolic names) in output - -T, --tagdates Show tags in output on their first occurance - --show-dead Show dead files - --stdin Read from stdin, don't run cvs log - --stdout Output to stdout not to ChangeLog - -d, --distributed Put ChangeLogs in subdirs - -f FILE, --file FILE Write to FILE instead of "ChangeLog" - --fsf Use this if log data is in FSF ChangeLog style - --FSF Attempt strict FSF-standard compatible output - -W SECS, --window SECS Window of time within which log entries unify - -U UFILE, --usermap UFILE Expand usernames to email addresses from UFILE - --passwd PASSWORDFILE Use system passwd file for user name expansion - --mailname MAILDOMAIN Mail domainname to attach to user names for - email addresses. Only used with --passwd. - Defaults to contents, of /etc/mailname else - output of hostname -d / dnsdomainname / - domainname - --domain DOMAIN Domain to build email addresses from - --gecos Get user information from GECOS data - -R REGEXP, --regexp REGEXP Include only entries that match REGEXP - -I REGEXP, --ignore REGEXP Ignore files whose names match REGEXP - -C, --case-insensitive Any regexp matching is done case-insensitively - -F BRANCH, --follow BRANCH Show only revisions on or ancestral to BRANCH - --no-ancestors When using -F, only track changes since the - BRANCH started - -S, --separate-header Blank line between each header and log message - --summary Add CVS change summary information - --no-wrap Don't auto-wrap log message (recommend -S also) - --gmt, --utc Show times in GMT/UTC instead of local time - --accum Add to an existing ChangeLog (incompat w/ --xml) - --update As --accum, but lists only files changed since - last run - -w, --day-of-week Show day of week - --no-times Don't show times in output - --header FILE Get ChangeLog header from FILE ("-" means stdin) - --xml Output XML instead of ChangeLog format - --xml-encoding ENCODING Insert encoding clause in XML header - --hide-filenames Don't show filenames (ignored for XML output) - --no-common-dir Don't shorten directory names from filenames. - --rcs CVSROOT Handle filenames from raw RCS, for instance - those produced by "cvs rlog" output, stripping - the prefix CVSROOT. - -P, --prune Don't show empty log messages - --ignore-tag TAG Ignore individual changes that are associated - with a given tag. May be repeated, if so, - changes that are associated with any of the - given tags are ignored. - --show-tag TAG Log only individual changes that are associated - with a given tag. May be repeated, if so, - changes that are associated with any of the - given tags are logged. - --delta FROM_TAG:TO_TAG Attempt a delta between two tags (since FROM_TAG - up to & including TO_TAG). The algorithm is a - simple date-based one (this is a *hard* problem) - so results are imperfect - -g OPTS, --global-opts OPTS Invoke like this "cvs OPTS log ..." - -l OPTS, --log-opts OPTS Invoke like this "cvs ... log OPTS" - FILE1 [FILE2 ...] Show only log information for the named FILE(s) - -See http://www.red-bean.com/cvs2cl for maintenance and bug info. -END_OF_INFO -} - -__END__ - -=head1 NAME - -cvs2cl.pl - produces GNU-style ChangeLogs in CVS working copies, by - running "cvs log" and parsing the output. Shared log entries are - unified in an intuitive way. - -=head1 DESCRIPTION - -This script generates GNU-style ChangeLog files from CVS log -information. Basic usage: just run it inside a working copy and a -ChangeLog will appear. It requires repository access (i.e., 'cvs log' -must work). Run "cvs2cl.pl --help" to see more advanced options. - -See http://www.red-bean.com/cvs2cl for updates, and for instructions -on getting anonymous CVS access to this script. - -Maintainer: Karl Fogel -Please report bugs to . - -=head1 README - -This script generates GNU-style ChangeLog files from CVS log -information. Basic usage: just run it inside a working copy and a -ChangeLog will appear. It requires repository access (i.e., 'cvs log' -must work). Run "cvs2cl.pl --help" to see more advanced options. - -See http://www.red-bean.com/cvs2cl for updates, and for instructions -on getting anonymous CVS access to this script. - -Maintainer: Karl Fogel -Please report bugs to . - -=head1 PREREQUISITES - -This script requires C, C, and -C. -It also seems to require C or higher. - -=pod OSNAMES - -any - -=pod SCRIPT CATEGORIES - -Version_Control/CVS - -=cut - --*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- - -Note about a bug-slash-opportunity: ------------------------------------ - -There's a bug in Text::Wrap, which affects cvs2cl. This script -reveals it: - - #!/usr/bin/perl -w - - use Text::Wrap; - - my $test_text = - "This script demonstrates a bug in Text::Wrap. The very long line - following this paragraph will be relocated relative to the surrounding - text: - - ==================================================================== - - See? When the bug happens, we'll get the line of equal signs below - this paragraph, even though it should be above."; - - # Print out the test text with no wrapping: - print "$test_text"; - print "\n"; - print "\n"; - - # Now print it out wrapped, and see the bug: - print wrap ("\t", " ", "$test_text"); - print "\n"; - print "\n"; - -If the line of equal signs were one shorter, then the bug doesn't -happen. Interesting. - -Anyway, rather than fix this in Text::Wrap, we might as well write a -new wrap() which has the following much-needed features: - -* initial indentation, like current Text::Wrap() -* subsequent line indentation, like current Text::Wrap() -* user chooses among: force-break long words, leave them alone, or die()? -* preserve existing indentation: chopped chunks from an indented line - are indented by same (like this line, not counting the asterisk!) -* optional list of things to preserve on line starts, default ">" - -Note that the last two are essentially the same concept, so unify in -implementation and give a good interface to controlling them. - -And how about: - -Optionally, when encounter a line pre-indented by same as previous -line, then strip the newline and refill, but indent by the same. -Yeah... - diff --git a/gitlog2changelog.py b/gitlog2changelog.py new file mode 100755 index 000000000..48d9f368b --- /dev/null +++ b/gitlog2changelog.py @@ -0,0 +1,128 @@ +#!/usr/bin/python +# Copyright 2008 Marcus D. Hanwell +# Distributed under the terms of the GNU General Public License v2 or later + +import string, re, os + +# Execute git log with the desired command line options. +fin = os.popen('git log --summary --stat --no-merges --date=short', 'r') +# Create a ChangeLog file in the current directory. +fout = open('ChangeLog', 'w') +fout.write("Do Not Edit! This is a generated file.\n\tYou should edit the NEWS file instead.\n\n") + +# RKO add a header to the ChangeLog + + +# Set up the loop variables in order to locate the blocks we want +authorFound = False +dateFound = False +messageFound = False +filesFound = False +message = "" +messageNL = False +files = "" +prevAuthorLine = "" + +# The main part of the loop +for line in fin: + # The commit line marks the start of a new commit object. + if string.find(line, 'commit') >= 0: + # Start all over again... + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + continue + # Match the author line and extract the part we want + elif re.match('Author:', line) >=0: + authorList = re.split(': ', line, 1) + author = authorList[1] + author = author[0:len(author)-1] + authorFound = True + # Match the date line + elif re.match('Date:', line) >= 0: + dateList = re.split(': ', line, 1) + date = dateList[1] + date = date[0:len(date)-1] + dateFound = True + # The svn-id lines are ignored + elif re.match(' git-svn-id:', line) >= 0: + continue + # The sign off line is ignored too + elif re.search('Signed-off-by', line) >= 0: + continue + # Extract the actual commit message for this commit + elif authorFound & dateFound & messageFound == False: + # Find the commit message if we can + if len(line) == 1: + if messageNL: + messageFound = True + else: + messageNL = True + elif len(line) == 4: + messageFound = True + else: + if len(message) == 0: + message = message + line.strip() + else: + message = message + " " + line.strip() + # If this line is hit all of the files have been stored for this commit + elif re.search('files changed', line) >= 0: + filesFound = True + continue + # Collect the files for this commit. FIXME: Still need to add +/- to files + elif authorFound & dateFound & messageFound: + fileList = re.split(' \| ', line, 2) + if len(fileList) > 1: + if len(files) > 0: + files = files + ", " + fileList[0].strip() + else: + files = fileList[0].strip() + # All of the parts of the commit have been found - write out the entry + if authorFound & dateFound & messageFound & filesFound: + # First the author line, only outputted if it is the first for that + # author on this day + authorLine = date + " " + author + if len(prevAuthorLine) == 0: + fout.write(authorLine + "\n") + elif authorLine == prevAuthorLine: + pass + else: + fout.write("\n" + authorLine + "\n") + + # Assemble the actual commit message line(s) and limit the line length + # to 80 characters. + commitLine = "* " + files + ": " + message + i = 0 + commit = "" + while i < len(commitLine): + if len(commitLine) < i + 78: + commit = commit + "\n " + commitLine[i:len(commitLine)] + break + index = commitLine.rfind(' ', i, i+78) + if index > i: + commit = commit + "\n " + commitLine[i:index] + i = index+1 + else: + commit = commit + "\n " + commitLine[i:78] + i = i+79 + + # Write out the commit line + fout.write(commit + "\n") + + #Now reset all the variables ready for a new commit block. + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + prevAuthorLine = authorLine + +# Close the input and output lines now that we are finished. +fin.close() +fout.close() From bcdfda9c835f1915a13c1f8ffdd2f6af4bd8e907 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 20 Dec 2012 11:38:28 -0800 Subject: [PATCH 15/54] Updated the version date. --- version.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.c b/version.c index ef524cf3f..c4e1579ea 100644 --- a/version.c +++ b/version.c @@ -1,4 +1,4 @@ const char *version_string = "3.2.10"; -const char *date_string = "2012-10-31"; +const char *date_string = "2012-12-21"; /* NEW TAG "modules-3-2-8" */ /* OLD TAG "modules-3-2-7" */ From be4809a9ffbaf4a9d943eb925b71190897c0ac84 Mon Sep 17 00:00:00 2001 From: "R.K. Owen" Date: Thu, 20 Dec 2012 11:58:13 -0800 Subject: [PATCH 16/54] Updated NEWS date for 3.2.10 --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index b75b2d122..1d252f3c4 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ **************************** Release 3.2 ****************************** Modules 3.2.10 +Dec 21, 2012 R.K. Owen (rk@owen.sj.ca.us) * Fixed the module switch with custom delimiters (Tyson Whitehead) * If a bash shell check if interactive or not for alias/functions * Fix the flags with regards to recursive load/unload From 4b2d1fbe1cb8fa7364d0b9641eccada0596c71b8 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 23 Sep 2009 00:00:00 +0000 Subject: [PATCH 17/54] Add patch to fix modulecmd path in init files --- init/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/Makefile.am b/init/Makefile.am index 755c5416d..82c240fdf 100644 --- a/init/Makefile.am +++ b/init/Makefile.am @@ -57,7 +57,7 @@ uninstall-inits : sed -e "/@$(if $(subst 0,,$(WANTS_VERSIONING)),NOT,)VERSIONING\@/d; \ s,@$(if $(subst 0,,$(WANTS_VERSIONING)),,NOT)VERSIONING\@,,g; \ s,@prefix\@,${prefix},g; \ - s,@bindir\@,${exec_prefix}/bin,g; \ + s,@bindir\@,${bindir},g; \ s,@VERSION\@,@VERSION@,g; \ s,@BASEPREFIX\@,@BASEPREFIX@,g;" < $< > $@ From 4f4aab4a77b178fde31599b9edb55c72a86c84fd Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 15 Jan 2013 00:00:00 +0000 Subject: [PATCH 18/54] Comment out stray module use in modules file when not using versioning Add patch to comment out stray module use in modules file when not using versioning. --- modulefiles/modules.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modulefiles/modules.in b/modulefiles/modules.in index 7037d87d1..f31c45018 100644 --- a/modulefiles/modules.in +++ b/modulefiles/modules.in @@ -26,5 +26,5 @@ setenv MODULESHOME $prefix prepend-path PATH @bindir@ prepend-path MANPATH @mandir@ -module use @VERSIONPATH@ +@VERSIONING@module use @VERSIONPATH@ From 079f95a63c5f6f8135506d5465d708df46d6826e Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 15 Jan 2013 00:00:00 +0000 Subject: [PATCH 19/54] Fix module clear command --- utility.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utility.c b/utility.c index 71346743b..54380c343 100644 --- a/utility.c +++ b/utility.c @@ -727,7 +727,7 @@ int Output_Modulefile_Changes( Tcl_Interp *interp) output_unset_variable( (char*) key); } else { val = EMGetEnv(interp, key); - if(val && *val) + if(val) output_set_variable(interp, (char*) key, val); null_free((void *)&val); } From 98cea230c99bcf976c84fb293e755cf12669f23b Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 15 Jan 2013 00:00:00 +0000 Subject: [PATCH 20/54] Add completion to avail command on bash Fix bug #78 --- init/bash_completion.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/bash_completion.in b/init/bash_completion.in index cf99d979d..724d0e4d7 100644 --- a/init/bash_completion.in +++ b/init/bash_completion.in @@ -56,7 +56,7 @@ _module() { unuse) COMPREPLY=( $(IFS=: compgen -W "${MODULEPATH}" -- "$cur") );; use|*-a*) ;; # let readline handle the completion -u|--userlvl) COMPREPLY=( $(compgen -W "novice expert advanced" -- "$cur") );; - display|help|show|whatis) + av*|disp*|help|show|whatis) COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );; *) if test $COMP_CWORD -gt 2 then From fc307e0afc38542e73939f0e56c2fd16efca6d49 Mon Sep 17 00:00:00 2001 From: Alastair McKinstry Date: Sat, 30 Nov 2013 00:00:00 +0000 Subject: [PATCH 21/54] Fix minor compiler warnings --- error.c | 1 + modules_def.h | 2 +- utility.c | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/error.c b/error.c index 9f494464b..ef795b8bb 100644 --- a/error.c +++ b/error.c @@ -1212,6 +1212,7 @@ static int scan_facility( char *s, FacilityNames *table, int size) low = table; high = table + size; save = (FacilityNames *) NULL; + mid = (FacilityNames *) NULL; while( low < high) { int x; /** Have to use this, because strcmp will **/ diff --git a/modules_def.h b/modules_def.h index 6d175dccf..d748b82e9 100644 --- a/modules_def.h +++ b/modules_def.h @@ -237,7 +237,7 @@ typedef enum { ERR_INVAL, /** Invalid parameter to the error **/ ERR_INVWGHT, /** logger **/ ERR_INVFAC, /** Invalid error facility **/ - ERR_ENVVAR, /** env. variables are inconsistent **/ + ERR_ENVVAR /** env. variables are inconsistent **/ } ErrType; /** diff --git a/utility.c b/utility.c index 54380c343..3135c2e8f 100644 --- a/utility.c +++ b/utility.c @@ -2049,7 +2049,7 @@ void set_marked_entry( Tcl_HashTable *table, ErrorLogger( NO_ERR_START, LOC, _proc_set_marked_entry, NULL); #endif - if( hentry = Tcl_CreateHashEntry( table, var, &new)) { + if( (hentry = Tcl_CreateHashEntry( table, var, &new))) { if( val) Tcl_SetHashValue( hentry, val); } @@ -2624,6 +2624,7 @@ char *xdup(char const *string) { if (*oldbuffer) strncpy(buffer, oldbuffer, MOD_BUFSIZE); blen = strlen(buffer); + brace = 0; /** get the env.var. name **/ if (*(dollarptr + 1) == '{') { brace = 1; From 5e8f43b017274167f02917d5b9ffe0eaef5aa3b6 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Mon, 23 Dec 2013 00:00:00 +0000 Subject: [PATCH 22/54] Fix build with -Werror=format-security --- ModuleCmd_Avail.c | 2 +- ModuleCmd_Display.c | 4 ++-- ModuleCmd_List.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ModuleCmd_Avail.c b/ModuleCmd_Avail.c index 251840d8d..ceb8e5266 100644 --- a/ModuleCmd_Avail.c +++ b/ModuleCmd_Avail.c @@ -257,7 +257,7 @@ int ModuleCmd_Avail( Tcl_Interp *interp, **/ if( sw_format & SW_LONG) - fprintf( stderr, long_header); + fprintf( stderr, "%s", long_header); /** ** If a module category is specified check whether it is part diff --git a/ModuleCmd_Display.c b/ModuleCmd_Display.c index 8bb7d4e6c..cfcc53fe7 100644 --- a/ModuleCmd_Display.c +++ b/ModuleCmd_Display.c @@ -161,13 +161,13 @@ int ModuleCmd_Display( Tcl_Interp *interp, g_current_module = modulename; - fprintf( stderr, local_line); + fprintf( stderr, "%s", local_line); fprintf( stderr, "%s:\n\n", modulefile); result = CallModuleProcedure( disp_interp, &cmdbuf, modulefile, "ModulesDisplay", 0); - fprintf( stderr, local_line); + fprintf( stderr, "%s", local_line); /** ** Remove the Tcl interpreter that has been used for printing ... diff --git a/ModuleCmd_List.c b/ModuleCmd_List.c index f5f07d5ab..0f7d5867f 100644 --- a/ModuleCmd_List.c +++ b/ModuleCmd_List.c @@ -122,7 +122,7 @@ int ModuleCmd_List( Tcl_Interp *interp, **/ if( sw_format & SW_LONG ) { - fprintf( stderr, long_header); + fprintf( stderr, "%s", long_header); } if( sw_format & (SW_TERSE | SW_LONG | SW_HUMAN) ) fprintf( stderr, "Currently Loaded Modulefiles:\n"); From 1167b3bd556de9e2567d3354e075389a36b08223 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 27 May 2014 00:00:00 +0000 Subject: [PATCH 23/54] Tcl 8.6 support Implement feature-request #14 --- cmdModule.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmdModule.c b/cmdModule.c index 429749ba5..4d1847137 100644 --- a/cmdModule.c +++ b/cmdModule.c @@ -56,7 +56,11 @@ static void *UseId[] = { &UseId, Id }; /** MACROS **/ /** ************************************************************************ **/ -/** not applicable **/ +/** For Tcl < 8.6 compatibility **/ +#if (TCL_MAJOR_VERSION < 8) || (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 6) +#define Tcl_GetErrorLine(interp) (interp->errorLine) +#define Tcl_SetErrorLine(interp,lineNum) (interp->errorLine = lineNum) +#endif /** ************************************************************************ **/ /** LOCAL DATA **/ @@ -640,8 +644,8 @@ int Execute_TclFile( Tcl_Interp *interp, case TCL_OK: gotPartial = 0; continue; /** while **/ - case TCL_ERROR: interp->errorLine = ((linenum-1)-gotPartial) + - interp->errorLine; + case TCL_ERROR: Tcl_SetErrorLine(interp, ((linenum-1)-gotPartial) + + Tcl_GetErrorLine(interp)); /* FALLTHROUGH */ case TCL_LEVEL0_RETURN: From 4264ce1f53f0ad2e9c8e6ee64fd5ea813337f2eb Mon Sep 17 00:00:00 2001 From: Filip Krska Date: Sun, 10 Aug 2014 03:13:00 -0400 Subject: [PATCH 24/54] Fix unload from loaded modulefile --- ModuleCmd_Load.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ModuleCmd_Load.c b/ModuleCmd_Load.c index a760a2092..2af7270e0 100644 --- a/ModuleCmd_Load.c +++ b/ModuleCmd_Load.c @@ -126,7 +126,7 @@ int ModuleCmd_Load( Tcl_Interp *interp, ** Set up the flags controling the Tcl callback functions **/ - /* avoid changes when invoked as a subcommand */ + /* avoid changes when invoked as a subcommand and loading */ if (!(g_flags & M_SUBCMD)) { if( load) { g_flags |= M_LOAD; @@ -136,6 +136,11 @@ int ModuleCmd_Load( Tcl_Interp *interp, g_flags &= ~M_LOAD; } g_flags |= M_SUBCMD; + } else { + if (!load) { + g_flags |= M_REMOVE; + g_flags &= ~M_LOAD; + } } /** From 075bd986f61d117e6f9355f34d9f798ff4082ec2 Mon Sep 17 00:00:00 2001 From: Slavek Kabrda Date: Thu, 22 Jan 2015 00:00:00 +0000 Subject: [PATCH 25/54] Python 3 compatibility + docs fix --- doc/module.1.in | 7 ++----- init/python.py.in | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/doc/module.1.in b/doc/module.1.in index 2eba560b1..7ed5ea71a 100644 --- a/doc/module.1.in +++ b/doc/module.1.in @@ -107,11 +107,8 @@ And the python .I module command is defined with: - import os; - if os.environ.has_key('PYTHONPATH'): - os.environ['PYTHONPATH'] +=':'+os.environ['MODULESHOME']+"/init"; - else: - os.environ['PYTHONPATH'] = os.environ['MODULESHOME']+"/init"; + import os, sys; + sys.path.insert(0, '@INITPATH@') from python import module; diff --git a/init/python.py.in b/init/python.py.in index dbdeb09a7..57a709769 100644 --- a/init/python.py.in +++ b/init/python.py.in @@ -27,5 +27,5 @@ def module(*args): @VERSIONING@ (output, error) = subprocess.Popen(['@BASEPREFIX@/Modules/%s/bin/modulecmd' % os.environ['MODULE_VERSION'], 'python'] + @NOTVERSIONING@ (output, error) = subprocess.Popen(['@bindir@/modulecmd', 'python'] + args, stdout=subprocess.PIPE).communicate() - exec output + exec(output) From aac4ba792169efd8e8604efcc7138f0fb7047f79 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Wed, 29 Apr 2015 00:00:00 +0000 Subject: [PATCH 26/54] SourceVers wrongly sets version in nested directory --- locate_module.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locate_module.c b/locate_module.c index 9d3389f8f..342f7f7f9 100644 --- a/locate_module.c +++ b/locate_module.c @@ -1194,6 +1194,11 @@ int SourceVers( Tcl_Interp *interp, char *path, char *name) ** The version has been specified in the ** '.version' file. Set up the result code **/ + /* version can be only located in the current directory */ + if (strrchr(version, '/')) { + ErrorLogger( ERR_BADMODNAM, LOC, version, NULL); + return( TCL_ERROR); + } /* for deep modulefile dirs ... just use lowest part */ if (!(modname = (char*) strrchr( name, '/'))) { modname = name; From d43a9efa47bb403f4e3e39b4c2422891d93e6f7b Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sun, 4 Dec 2016 00:00:00 +0000 Subject: [PATCH 27/54] Fix compilation with -Werror=implicit-function-declaration --- modules_def.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules_def.h b/modules_def.h index d748b82e9..858f8b2e8 100644 --- a/modules_def.h +++ b/modules_def.h @@ -616,6 +616,9 @@ extern int ModuleCmd_Load( Tcl_Interp*, int, int, char*[]); /** ModuleCmd_Purge.c **/ extern int ModuleCmd_Purge( Tcl_Interp*, int, char*[]); +/** ModuleCmd_Refresh.c **/ +extern int ModuleCmd_Refresh( Tcl_Interp*, int, char*[]); + /** ModuleCmd_Switch.c **/ extern int ModuleCmd_Switch( Tcl_Interp*, int, char*[]); @@ -736,6 +739,7 @@ extern int IsLoaded( Tcl_Interp*, char*, char**, char*); extern int IsLoaded_ExactMatch( Tcl_Interp*, char*, char **, char*); extern int Update_LoadedList( Tcl_Interp*, char*, char*); extern int check_magic( char*, char*, int); +extern void regex_quote( const char*, char*, int); extern char *xstrtok_r(char *, const char *, char **); extern char *xstrtok(char *, const char *); extern void chk4spch( char*); From 97f91d1994e40451fb9cf2ebd5759dfb67bb62ec Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Tue, 12 Sep 2017 22:30:12 +0200 Subject: [PATCH 28/54] Update NEWS for 3.2.11 Acknowledgment: this development has been made and funded within the framework of the PRACE Fifth Implementation Phase (PRACE-5IP) project (http://www.prace-ri.eu/). PRACE-5IP receives funding from the EU's Horizon 2020 research and innovation programme (2014-2020) under grant agreement no. 730913. --- NEWS | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/NEWS b/NEWS index 1d252f3c4..2cdb886f0 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,21 @@ or spelling correction your name will probably not be listed.) **************************** Release 3.2 ****************************** +Modules 3.2.11 + * Fix compilation with -Werror=implicit-function-declaration + (Orion Poplawski) + * Fix default version set in nested directory (Jan Synacek) + * Make Python init script Python 3 compatible (Slavek Kabrda) + * Fix unload from loaded modulefile (Filip Krska) + * Add support for Tcl 8.6 (Orion Poplawski) + * Fix build with -Werror=format-security (Orion Poplawski) + * Fix minor compiler warnings (Alastair McKinstry) + * Add completion to avail command on bash (Orion Poplawski) + * Fix "module clear" command (Orion Poplawski) + * Comment out stray "module use" in example modules file when not + using versioning (Orion Poplawski) + * Fix modulecmd path in init files (Orion Poplawski) + Modules 3.2.10 Dec 21, 2012 R.K. Owen (rk@owen.sj.ca.us) * Fixed the module switch with custom delimiters (Tyson Whitehead) From 4c0e576a02e37ddb33b6ac8a7a227d20ed8f7c5e Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Wed, 13 Sep 2017 07:14:45 +0200 Subject: [PATCH 29/54] Fix gitlog2changelog.py to report single file commit --- gitlog2changelog.py | 53 +++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/gitlog2changelog.py b/gitlog2changelog.py index 48d9f368b..5947f6da0 100755 --- a/gitlog2changelog.py +++ b/gitlog2changelog.py @@ -1,17 +1,22 @@ -#!/usr/bin/python +#!/usr/bin/env python # Copyright 2008 Marcus D. Hanwell +# Minor changes for NUT by Charles Lepple # Distributed under the terms of the GNU General Public License v2 or later import string, re, os +from textwrap import TextWrapper +import sys + +rev_range = '' + +if len(sys.argv) > 1: + base = sys.argv[1] + rev_range = '%s..HEAD' % base # Execute git log with the desired command line options. -fin = os.popen('git log --summary --stat --no-merges --date=short', 'r') +fin = os.popen('git log --summary --stat --no-merges --date=short %s' % rev_range, 'r') # Create a ChangeLog file in the current directory. fout = open('ChangeLog', 'w') -fout.write("Do Not Edit! This is a generated file.\n\tYou should edit the NEWS file instead.\n\n") - -# RKO add a header to the ChangeLog - # Set up the loop variables in order to locate the blocks we want authorFound = False @@ -23,10 +28,12 @@ files = "" prevAuthorLine = "" +wrapper = TextWrapper(initial_indent=" ", subsequent_indent=" ", width=78, break_on_hyphens=False) + # The main part of the loop for line in fin: # The commit line marks the start of a new commit object. - if string.find(line, 'commit') >= 0: + if line.startswith('commit'): # Start all over again... authorFound = False dateFound = False @@ -37,22 +44,25 @@ files = "" continue # Match the author line and extract the part we want - elif re.match('Author:', line) >=0: + elif 'Author:' in line: authorList = re.split(': ', line, 1) author = authorList[1] author = author[0:len(author)-1] authorFound = True # Match the date line - elif re.match('Date:', line) >= 0: + elif 'Date:' in line: dateList = re.split(': ', line, 1) date = dateList[1] date = date[0:len(date)-1] dateFound = True + # The Fossil-IDs are ignored: + elif line.startswith(' Fossil-ID:') or line.startswith(' [[SVN:'): + continue # The svn-id lines are ignored - elif re.match(' git-svn-id:', line) >= 0: + elif ' git-svn-id:' in line: continue # The sign off line is ignored too - elif re.search('Signed-off-by', line) >= 0: + elif 'Signed-off-by' in line: continue # Extract the actual commit message for this commit elif authorFound & dateFound & messageFound == False: @@ -70,7 +80,7 @@ else: message = message + " " + line.strip() # If this line is hit all of the files have been stored for this commit - elif re.search('files changed', line) >= 0: + elif re.search('files? changed', line) >= 0: filesFound = True continue # Collect the files for this commit. FIXME: Still need to add +/- to files @@ -87,31 +97,18 @@ # author on this day authorLine = date + " " + author if len(prevAuthorLine) == 0: - fout.write(authorLine + "\n") + fout.write(authorLine + "\n\n") elif authorLine == prevAuthorLine: pass else: - fout.write("\n" + authorLine + "\n") + fout.write(authorLine + "\n\n") # Assemble the actual commit message line(s) and limit the line length # to 80 characters. commitLine = "* " + files + ": " + message - i = 0 - commit = "" - while i < len(commitLine): - if len(commitLine) < i + 78: - commit = commit + "\n " + commitLine[i:len(commitLine)] - break - index = commitLine.rfind(' ', i, i+78) - if index > i: - commit = commit + "\n " + commitLine[i:index] - i = index+1 - else: - commit = commit + "\n " + commitLine[i:78] - i = i+79 # Write out the commit line - fout.write(commit + "\n") + fout.write(wrapper.fill(commitLine) + "\n\n") #Now reset all the variables ready for a new commit block. authorFound = False From 3988cf8148f50627c129b2127492b0e489122b67 Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Wed, 11 Feb 2015 11:16:26 +0300 Subject: [PATCH 30/54] configure.ac: fix configure generation with autotools-1.14 Use of "dnl" as the last item on the line removes "newline". And in case of invocation of macros this will lead to placing of multiple macros on the same line. This in its turn may break normal behavior of some macros. In particular this line is important: --->8--- AM_INIT_AUTOMAKE(1.9.6 foreign dejagnu no-installinfo dist-bzip2)dnl --->8--- With "dnl" in the very end of the macro autotools 1.14 produces incorrect "configure" script: --->8--- $ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes ./configure: line 11561: syntax error: unexpected end of file --->8--- Solution is simple - remove trailing "dnl": --->8--- AM_INIT_AUTOMAKE(1.9.6 foreign dejagnu no-installinfo dist-bzip2) --->8--- See discussion of this issue here as well: https://bugzilla.redhat.com/show_bug.cgi?id=1191007 And while at it I removed most of trailing "dnl" as a clean-up in places that are not related to comments. Signed-off-by: Alexey Brodkin --- NEWS | 1 + configure.ac | 308 +++++++++++++++++++++++++-------------------------- 2 files changed, 155 insertions(+), 154 deletions(-) diff --git a/NEWS b/NEWS index 2cdb886f0..35f3b082a 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ **************************** Release 3.2 ****************************** Modules 3.2.11 + * Fixed configure.ac bug with AM_INIT_AUTOMAKE (Alexey Brodkin) * Fix compilation with -Werror=implicit-function-declaration (Orion Poplawski) * Fix default version set in nested directory (Jan Synacek) diff --git a/configure.ac b/configure.ac index 4312aacf4..abb3e6aa5 100644 --- a/configure.ac +++ b/configure.ac @@ -11,12 +11,12 @@ dnl Process this file with autoconf to produce a configure script dnl You need autoconf 2.52 or better! dnl dnl --------------------------------------------------------------------------- -AC_INIT(modules,3.2)dnl -AC_CONFIG_AUX_DIR(config)dnl -AM_INIT_AUTOMAKE(1.9.6 foreign dejagnu no-installinfo dist-bzip2)dnl -AC_CONFIG_SRCDIR([version.c])dnl -AM_CONFIG_HEADER(config.h)dnl -AC_PREREQ(2.59)dnl +AC_INIT(modules,3.2) +AC_CONFIG_AUX_DIR(config) +AM_INIT_AUTOMAKE(1.9.6 foreign dejagnu no-installinfo dist-bzip2) +AC_CONFIG_SRCDIR([version.c]) +AM_CONFIG_HEADER(config.h) +AC_PREREQ(2.59) dnl --------------------------------------------------------------------------- dnl Autoheader "templates" (was acconfig.h) @@ -39,7 +39,7 @@ AH_TOP([ ** see LICENSE.GPL, which must be provided, for details ** ** ** ** ************************************************************************ **/ -])dnl +]) dnl --------------------------------------------------------------------------- dnl dnl Some special substitution we need: @@ -50,11 +50,11 @@ dnl --enable-versioning Use modules versioning [DEF] dnl --disable-versioning Without - " - dnl --------------------------------------------------------------------------- dnl -AC_SUBST(WANTS_VERSIONING)dnl -AC_SUBST(VERSIONING)dnl -AC_SUBST(NOTVERSIONING)dnl +AC_SUBST(WANTS_VERSIONING) +AC_SUBST(VERSIONING) +AC_SUBST(NOTVERSIONING) AH_TEMPLATE([WANTS_VERSIONING],[ -WANTS_VERSIONING Does the system want to use modules versions])dnl +WANTS_VERSIONING Does the system want to use modules versions]) AC_ARG_ENABLE(versioning, AC_HELP_STRING([--enable-versioning], [use modules versioning [[yes]]]), if test "$enableval" = "yes"; then @@ -71,7 +71,7 @@ AC_ARG_ENABLE(versioning, AC_DEFINE(WANTS_VERSIONING,1) VERSIONING="" NOTVERSIONING="#" -)dnl +) dnl dnl --------------------------------------------------------------------------- dnl Get Modules version & date @@ -79,8 +79,8 @@ dnl --------------------------------------------------------------------------- dnl DATE Module package date dnl VERSION Module package version dnl -AC_SUBST(VERSION)dnl -AC_SUBST(DATE)dnl +AC_SUBST(VERSION) +AC_SUBST(DATE) VERSION='(unknown)' VERSION=`sed -n -e 's/^.*version_string.*"\(.*\)";$/\1/p' ${srcdir}/version.c` AC_MSG_RESULT([VERSION = $VERSION]) @@ -91,14 +91,14 @@ echo "configuring for Modules $VERSION $DATE" dnl --------------------------------------------------------------------------- dnl Set PREFIX and related based on WANTS_VERSIONING dnl --------------------------------------------------------------------------- -AC_SUBST(DEFAULTPATH)dnl -AC_SUBST(BASEPREFIX)dnl +AC_SUBST(DEFAULTPATH) +AC_SUBST(BASEPREFIX) DEFAULTPATH=default -AH_TEMPLATE([BASEPREFIX],[ BASEPREFIX: Usually equivalent to /usr/local])dnl +AH_TEMPLATE([BASEPREFIX],[ BASEPREFIX: Usually equivalent to /usr/local]) AH_TEMPLATE([PREFIX],[ -PREFIX: Usually equivalent to /usr/local/Modules[/version_number]])dnl +PREFIX: Usually equivalent to /usr/local/Modules[/version_number]]) AH_TEMPLATE([MODULES_INIT_DIR],[ -MODULES_INIT_DIR: Directory that contains the modules init files.])dnl +MODULES_INIT_DIR: Directory that contains the modules init files.]) if test "$exec_prefix" != "NONE" ; then EXECPREFIX=$exec_prefix @@ -149,18 +149,18 @@ dnl --------------------------------------------------------------------------- dnl --enable-use-default Use PREFIX/default/ in init scripts [DEF] dnl --disable-use-default Use PREFIX/VERSION/ in init scripts dnl --------------------------------------------------------------------------- -AC_DEFINE_UNQUOTED(MODULES_INIT_DIR, "$MODULES_INIT_DIR")dnl +AC_DEFINE_UNQUOTED(MODULES_INIT_DIR, "$MODULES_INIT_DIR") AC_ARG_ENABLE(use-default, AC_HELP_STRING([--enable-use-default],[use DEFAULTPATH in init scripts [[yes]]]), if test "$enableval" = "no" -o $WANTS_VERSIONING -eq 0; then DEFAULTPATH=$NODEFAULTPATH - fi)dnl + fi) AC_MSG_RESULT([DEFAULTPATH = $DEFAULTPATH]) AC_MSG_RESULT([BASEPREFIX = $BASEPREFIX]) AC_MSG_RESULT([PREFIX = $PREFIX]) AC_MSG_RESULT([EXECPREFIX = $EXECPREFIX]) -AC_DEFINE_UNQUOTED(BASEPREFIX, "$BASEPREFIX")dnl -AC_DEFINE_UNQUOTED(PREFIX, "$PREFIX")dnl +AC_DEFINE_UNQUOTED(BASEPREFIX, "$BASEPREFIX") +AC_DEFINE_UNQUOTED(PREFIX, "$PREFIX") export DEFAULTPATH export NODEFAULTPATH export BASEPREFIX @@ -177,7 +177,7 @@ AM_PROG_CC_C_O AC_PROG_MAKE_SET AC_AIX AC_ISC_POSIX -AC_PATH_PROG([UNAME],[uname],[""])dnl +AC_PATH_PROG([UNAME],[uname],[""]) dnl --------------------------------------------------------------------------- dnl Checks for header files dnl --------------------------------------------------------------------------- @@ -185,9 +185,9 @@ dnl --------------------------------------------------------------------------- AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h termio.h fcntl.h ctype.h \ - stdarg.h varargs.h syslog.h stdint.h)dnl + stdarg.h varargs.h syslog.h stdint.h) AC_CHECK_HEADERS([sys/ioctl.h sys/termios.h sys/mode.h sys/stat.h sys/param.h \ - errno.h assert.h locale.h])dnl + errno.h assert.h locale.h]) dnl --------------------------------------------------------------------------- dnl Checks for typedefs, structures, and compiler characteristics. dnl --------------------------------------------------------------------------- @@ -201,7 +201,7 @@ dnl --------------------------------------------------------------------------- AC_FUNC_STRCOLL AC_CHECK_FUNCS([strdup uname gethostname getdomainname \ mktemp tmpnam tempnam \ - syslog dup2 setlocale])dnl + syslog dup2 setlocale]) dnl --------------------------------------------------------------------------- dnl Checks for libraries dnl --------------------------------------------------------------------------- @@ -209,8 +209,8 @@ dnl Solaris 2.x: This requires -lnsl and -lsocket. If AC_PATH_XTRA dnl did not search for these, search them explicitly. dnl MUST be done BEFORE AC_PATH_XTRA! dnl --------------------------------------------------------------------------- -AC_CHECK_LIB(socket, socket)dnl -AC_CHECK_LIB(nsl, t_accept)dnl +AC_CHECK_LIB(socket, socket) +AC_CHECK_LIB(nsl, t_accept) dnl --------------------------------------------------------------------------- dnl Check for X11 things @@ -222,12 +222,12 @@ if test "$no_x" != "yes"; then AH_TEMPLATE([HAS_X11LIBS],[ HAS_X11LIBS: This symbol, if defined, indicates that the C program can use X11 -directly.])dnl - AC_DEFINE(HAS_X11LIBS)dnl +directly.]) + AC_DEFINE(HAS_X11LIBS) AC_CHECK_LIB(X11, XMaxRequestSize,,, - [-I ${ac_x_includes:-.} -L ${ac_x_libraries:-.}])dnl + [-I ${ac_x_includes:-.} -L ${ac_x_libraries:-.}]) dnl AC_CHECK_LIB(Xmu, XmuGetHostname,,, -dnl [-I ${ac_x_includes:-.} -L ${ac_x_libraries:-.}])dnl +dnl [-I ${ac_x_includes:-.} -L ${ac_x_libraries:-.}]) fi dnl --------------------------------------------------------------------------- @@ -235,26 +235,26 @@ AH_TEMPLATE([CPPSTDIN],[ CPPSTDIN: This symbol contains the first part of the string which will invoke the C preprocessor on the standard input and produce to standard -output. Typical value of "cc -E" or "/lib/cpp".])dnl +output. Typical value of "cc -E" or "/lib/cpp".]) EM_PATH_PROG_SEARCH(_CPPSTDIN, cpp, /lib /usr/lib /usr/lang \ /usr/local/lang /usr/ccs/lib, [${CC} -E]) -AC_DEFINE_UNQUOTED(CPPSTDIN, "$_CPPSTDIN")dnl +AC_DEFINE_UNQUOTED(CPPSTDIN, "$_CPPSTDIN") dnl AH_TEMPLATE([CPPMINUS],[ CPPMINUS: This symbol contains the second part of the string which will invoke the C preprocessor on the standard input and produce to standard output. This symbol will have the value "-" if CPPSTDIN needs a minus -to specify standard input, otherwise the value is "".])dnl -AC_DEFINE(CPPMINUS, "")dnl +to specify standard input, otherwise the value is "".]) +AC_DEFINE(CPPMINUS, "") dnl --------------------------------------------------------------------------- AH_TEMPLATE([PHOSTNAME],[ PHOSTNAME: Last resort to get the hostname, if uname() and gethostname() -are not available.])dnl -AC_PATH_PROG([_PHOST],[hostname],[""])dnl +are not available.]) +AC_PATH_PROG([_PHOST],[hostname],[""]) test "$_PHOST" != "" && AC_DEFINE_UNQUOTED(PHOSTNAME, "$_PHOST") -AC_PATH_PROG(RUNTEST, runtest, "./not_installed")dnl +AC_PATH_PROG(RUNTEST, runtest, "./not_installed") test "$RUNTEST" = "" && echo "Install DEJAGNU and rerun configure if you \ want to run the testsuite" @@ -292,7 +292,7 @@ dnl --------------------------------------------------------------------------- AH_TEMPLATE([LMSPLIT_SIZE],[ LMSPLIT_SIZE: This symbol, if defined, will force the environment variable -_LM_FILES_ to be split into smaller "chunks".])dnl +_LM_FILES_ to be split into smaller "chunks".]) AC_MSG_CHECKING([if /bin/csh supports large environment variables]) # # test to see how many chars can be set in the C-shell env.var. @@ -346,23 +346,23 @@ AC_ARG_WITH(split-size, AC_DEFINE_UNQUOTED(LMSPLIT_SIZE, ${em_split_size}) else AC_MSG_NOTICE([csh split-size not set]) - fi)dnl + fi) dnl --------------------------------------------------------------------------- dnl --with-static[=