2001-11-26 Christian Arnault 64 * Tagging v1r10p20011126 * src/Makefile.header: tag is now ${CMTCONFIG} and tags ${CMTEXTRATAGS} * mgr/requirements: Provide the macro tags as ${CMTEXTRATAGS} * src/cmt_tag.cxx: Various changes in strategy for tags: - tag inclusion (defined by the "tag" statement) transmits the priority. - tag selection can be discarded by exclusion specifications. Exclusion qualifies a set of contradictory tags. Contradictory tags will be selected according to their priority or to their declaration order in case of equal priority. * src/cmt_parser.h (enum Priority): Change the priority list: Arguments get highest priority then CMTCONFIG then user tags (those defined in requirements) * fragments/make_setup: produce uses.make and tags.make * src/cmt_parser.cxx (parse_arguments): * src/cmt.h (class Cmt): Suppress the mechanism of primary_tag. CMTCONFIG is enough. 2001-11-21 Christian Arnault 63 * src/cmt_symbol.cxx (add_value_to_list): fix protection on value_list.size () to start at 1 (not at 2) * src/cmt_symbol.cxx (build): Reflective values of Sets should consider previous setenv settings. * src/cmt_generator.cxx (build_dependencies): Using ../$(tag) for output base of the dependencies fragment rather then Cmt::current_tag * src/Makefile.header (CMTPRIMARYTAG): tag=... argument of gmake will override CMTPRIMARYTAG. However internal tag macro is only replaced with ${CMTCONFIG} * fragments/make_setup (config): create a tags.log (for cmt show tags) * mgr/cmt_make_shlib_common.sh: Add the ${lib} prefix to the temporary expansion directory. Fix a bug in sed filter for all module files. * src/cmt_parser.cxx (configure_tags): Add a protection against absence of CMTPRIMARYTAG * src/cmt_system.cxx (create_symlink): * src/cmt_system.h (class CmtSystem): Adding the create_symlink function. * src/cmt_parser.cxx (do_build_library_links): Using direct system calls to create symlinks. 2001-11-13 Christian Arnault 62 * Tagging v1r10p20011113 * mgr/requirements: * src/constituents.make (build_library_links): Define macros for build_library_links and remove_library_links * fragments/make_setup (config): Add build_library_links target * src/cmt_parser.cxx (set_standard_macros): Fix bad production of use_includes when private is used. * src/cmt_parser.cxx (do_broadcast): Fix -begin= error 2001-11-08 Christian Arnault 61 * src/cmt_version.h: tagging v1r10 * src/cmt_system.cxx (add_cmt_path): Get cwd alias to each selected path. * src/cmt.h (class Cmt): Add cmt_path_cwd vector of all CMTPATH entries normalized to getcwd. * src/cmt_generator.cxx (java_file_action): * src/cmt_generator.cxx (proto_file_action): * src/cmt_generator.cxx (module_file_action): Pass reference to the constituent in order to transmit constituent variables to the fragment. * src/cmt_parser.cxx (set_standard_macros): Insert a space character for all generated macro_append operations. * src/cmt_fragment.cxx (xxxcopy): * src/cmt_fragment.h (class Variable): Adding the expansion of fragments variables using both the ${} syntax AND the $() syntax. * src/cmt_tag.h : * src/cmt_tag.cxx (is_selected): Change the Tag::selected attribute to bool. 2001-11-07 Christian Arnault 60 * src/cmt_symbol.cxx (build): Implement the possibilty to have reflexive asignment to symbols: when a symbol value is exactly specified (from set, macro or path statements) using $() or ${} or %% then the old value is preserved for all corresponding selectors. * src/cmt_parser.cxx (set_standard_macros): Re-activate -import options (that had been discarded!) * src/cmt_use.cxx (add): Generate an error when a package is not found (the error was only generated at "cmt show uses") * src/cmt_constituent.cxx (show): Display -import options * fragments/dependencies: Force checking $(bin) * fragments/constituent: Adding some printout to display when constituent fragment is rebuilt * src/cmt_parser.cxx (set_standard_macros): Re-validate -no_auto_imports option for use and -import options for constituents. 2001-11-06 Christian Arnault 59 * src/cmt_generator.cxx (build_document_makefile): protect against missing files (causing infinite loops in Make) 2001-11-05 Christian Arnault 58 * mgr/Makefile (application_suffix): Define application_suffix in the CMT's Makefile * src/cmt_parser.cxx (print_context): Do not generate ROOT and CONFIG for cmt_standalone packages. * mgr/requirements: Reomving the cmt_selector.cxx source file. * src/constituents.make: Force the dirs target for build_library_links * src/cmt_parser.cxx (restore_all_tags): Get the value of CMTPRIMARYTAG to configure Cmt::primary_tag. Leave unchanged the primary_tag and the extra_tags except if overridden through the -tagxxx= options * src/cmt_parser.h (enum): Add PrioritySite in the list of possible priorities. * src/cmt.h (class Cmt): Add the restore_all_tags function. Add the extra_tags attribute . Change the strategy of tag persistency: o CMTPRIMARYTAG always contains what had been specified using the -tag= option, o CMTEXTRATAGS contains what had been manipulated by -tag_add= and -tag_remove= options. o CMTCONFIG is setup independently of the primary tag. * src/Makefile.header (primary_tag): Propagate tags using CMTPRIMARYTAG instead of CMTCONFIG (except when CMTPRIMARYtAG is not yet defined) * src/cmt_constituent.cxx (parse): Fix the word parsing for constituent specification... 2001-11-02 Christian Arnault 57 * src/cmt.h * src/cmt_database.cxx * src/cmt_database.h * src/cmt_parser.cxx * src/cmt_parser.h * src/cmt_selector.cxx * src/cmt_selector.h * src/cmt_symbol.cxx * src/cmt_symbol.h * src/cmt_tag.cxx * src/cmt_tag.h: Suppressing cmt_selector objects (only tags are needed!!) Add tag_exclude keyword for building tag-exclusions. 2001-10-31 Christian Arnault 56 * mgr/requirements: Don't need to explicitly declare make_fragment headers (automatically declared in the -header= option) * src/cmt_symbol.cxx (print_clean): Cleaning up path variables may be either unsetenv when the result is empty or setenv if not. * fragments/application_launcher: evolution * src/cmt_parser.cxx (configure_tags): protect against empty declaration of CMTCONFIG : by default will take uname... 2001-10-30 Christian Arnault 55 * src/cmt_symbol.cxx (clean): Implement the cleanup correctly, with in particular the cleanup of the path variables. * src/cmt_parser.cxx (print_context): improve output of cmt show tags * src/cmt_symbol.h (class Symbol): Add clean_macro_value for building the result of the clean operations induced by this symbol (only implemented for path_xxx) * src/cmt_parser.cxx: New post-context requirements file : user_context in addition to home package. Added Use* use arguments to configure_xxx functions to transfer. * src/cmt_parser.cxx(configure_cmt_path): Attempt to make use of CMTPATH definitions from requirements files. * src/cmt_parser.cxx(configure_config_selector): Install context information for tag creation * src/cmt_parser.cxx(configure_home): Attempt to make use of CMTHOME definitions from requirements files. * src/cmt_parser.cxx(configure_user_context): Install user_context management * src/cmt_parser.cxx(configure_site_selector): Get CMTSITE from requirements as well * src/cmt_parser.cxx(configure_tags): Add a configure_tags finction to retreive tags from all possible sources: CMTCONFIG (from req) then CMTPRIMARYTAG then CMTCONFIG then CMTBIN then append all CMTEXTRATAGS. * src/cmt_parser.cxx(parse_arguments): fix parsing bug for the -home= argument * src/cmt_parser.cxx(parser): Set action_show_path to be recursive * src/cmt_parser.cxx(parser): Call the HOME package just after using CMT. Call the use_context package just after reaching the current package. * src/cmt_parser.cxx(print_clean): reformat the output (with newlines). Clear CMTPRIMARYTAG CMTEXTRATAGS and CMTCONFIG. * src/cmt_parser.cxx(print_context): set CMTPRIMARYTAG CMTEXTRATAGS and CMTCONFIG from the current definitions. * src/cmt_parser.cxx(set_standard_macros): Rationalize the production of current_tag * src/cmt_parser.cxx(use_user_context_requirements): * src/cmt_use.cxx (show_all): Display new user_context package * src/cmt_use.cxx (class use_action_iterator): query function ok() includes both home_package and user_context_package * src/cmt_use.cxx (reach_package): special treatment for home_package and user_context_package since they do not follow the standard location scheme. * src/cmt_use.cxx (add): Improve the detection of packages not found. * src/cmt_tag.cxx (unmark): Reset the use pointer * src/cmt_tag.cxx (action): Install the use origin. * src/cmt_tag.cxx (add): Install the use origin and the context information. It will be reset to the new context in case of re-definition. Suppress various excessive debug printouts. * src/cmt_tag.cxx (clear): clear use and context new information * src/cmt_tag.cxx (show): Improve the display of tags with hierarchical display of subtags and context information. * src/cmt_tag.h (class Tag): Added Use* use parameter to action and add methods. Store a pointer to the package (Use*) who originated the definition, and a context string to qualify the definition. * src/cmt_system.h (class CmtSystem): * src/cmt_system.cxx (add_cmt_paths_from_text): Factor out the code to register a set of CMTPATH entries, with the context information. * src/cmt_system.cxx (is_home_package): Add is_home_package and is_user_context_package query functions. * src/cmt_system.cxx (get_cmt_site): Default site is empty (instead of LAL) * src/cmt_symbol.cxx (print_clean): Suppress some obsolete print_tabs () formattings. Apply unset instead of unset for aliases as well. * src/cmt_symbol.cxx (action): Add special treatment for CMTXXX environment variables : the new setting has to be taken into account as soon as it is parsed. * src/cmt_selector.cxx (create): remove some debug code. * src/cmt_generator.cxx (build_default_makefile): Produce only Makefile on Unix and only NMake on Windows. * mgr/requirements: Renaming new script_launcher fragments into application_launcher * src/cmt.h (class Cmt): Added Use* use arguments to configure_xxx functions to transfer. Added use_user_context_requirements () to include post-context requirements file. Added the static value primary_tag to store the primary tag. * src/cmt_generator.cxx (build_default_makefile): Create Makefile only un Unix and NMake only on WIN32 2001-10-24 Christian Arnault 55 * src/cmt_parser.cxx (parser): add the recursive property to action_show_path. * src/cmt_system.h (class CmtSystem): * src/cmt_system.cxx (get_user_context_package): * src/cmt_system.cxx (is_user_context_package): * src/cmt_use.cxx (add): (show_all): (class use_action_iterator): (reach_package): (add): * src/cmt_parser.cxx (configure): * src/cmt_parser.cxx (parser): * src/cmt_parser.cxx (parse_arguments): * src/cmt_parser.cxx (configure_user_context): * src/cmt.h (class Cmt): Adding user_context equivalent of CMTHOME support for post requirements file. The corresponding env. var. is CMTUSERCONTEXT. The complete scheme for supporting PRE-parsed HOME requirements file is exactly copied to those POST-parsed files. * mgr/requirements: * fragments/script_launcher_header: * fragments/script_launcher: * fragments/script_launcher_trailer: Introduce a new document generator for launching scripts. The same convention as the check_application is reused, for pre-action, argument passing and post-action. Several scripts (specified in the source list of the document) can be executed in sequence. * src/cmt_use.cxx (class use_action_iterator): * src/cmt_system.cxx (is_home_package): * src/cmt_system.h (class CmtSystem): Add the is_home_package function to encapsulate the syntax of a HOME package (and apply it in Use::use_action_iterator) * src/cmt_symbol.cxx (action): Prepare specific actions when the parsed symbol is one of the CMTXXX standard symbols. So far CMTHOME -> re-configure home. * src/cmt_parser.cxx (parser): apply use_home_requirements right after reading CMT requirements file (ie. before reading current package) * src/cmt_parser.cxx (configure_home): understand the possible "set CMTHOME" declarations (but keep $CMTHOME) * src/cmt_parser.cxx (reach_current_package): * src/cmt_system.cxx (get_cmt_paths): Restore the automatic addition of "current package" in the CMTPATH list. * src/cmt_parser.cxx (parse_arguments): bad parsing of the -home=xxx argument 2001-10-23 Christian Arnault 54 * mgr/Makefile (demo): Need to add CMTPATH towards ${CMTROOT}/demo since CMTPATH to current package is no longer supported !!! * fragments/nmake/check_application (check): * fragments/nmake/cleanup_application: * fragments/nmake/application_header: * fragments/nmake/application: * fragments/application: * fragments/application_header: * fragments/cleanup_application: * fragments/check_application (check): * mgr/requirements: Create a new standard macro "application_suffix" for making possible to change the .exe default suffix of applications 2001-10-22 Christian Arnault 53 * src/cmt_parser.cxx : * src/cmt_system.cxx : Suppress the automatic addition of current package's path into CMTPATH. * mgr/Makefile: Change the method to rebuild cmt_dependencies by copying what is obtained from CVS. Rebuild it manually when needed. 2001-10-19 Christian Arnault 52 * fragments/make_setup (config): Creating uses.log needs to use an intermediate temporary file * src\setup.[c]sh : Avoid re-definition of CMTCONFIG * src\cmt_use.cxx (add): temporarily discard the mecanism by which uses.log files are read before the requirements files. * src\cmt_system.cxx (is_version_directory): returns -1 for fields that were wildcarded * src\cmt_use.cxx (add): * src\cmt_use.cxx (need_new): * src\cmt_use.cxx (BestFitSelector::operate): Start the implementation of priority control between explicit use specification over wildcarded .. * src\cmt_parser.cxx (reach_current_package): Change the value of the CMTPATH for the current package once it has been reached (but before reading its requirements file) * src\cmt_parser.cxx (install_setup_scripts): (improvement) Add the transfer of arguments towards cmt.exe into setup.bat * src\cmt_system.cxx (get_cmt_paths): (bug fix) path_sources was not cleared as paths. Prepend "current path" to the path list under "current package". * src\cmt_parser.cxx (parse_arguments): (bug fix) Suppress enclosing quotes around cmt.exe arguments so that setup.bat can transmit arguments properly call setup.bat "-tag_add=a,b,c" 2001-10-18 Christian Arnault 51 * src/cmt_parser.cxx (set_standard_macros): Set current_tag to CMTBIN when in CMT itself (not complete yet) * src/cmt_generator.cxx (build_dependencies): Use CMTBIN for CMT itself (instead of current_tag) well this should be cured later on to ensure that current_tag is always set to CMTBIN for CMT itself * src/cmt_version.h (CMTVERSION): install v1r10 (not tagged yet) * mgr/cmt_system.sh: Do not try to use AFS on Darwin and LynxOS. * src/setup.[c]sh: Define CMTBIN as `uname` on Unix and CMTCONFIG as `cmt_system.sh` * src/cmt_symbol.cxx (show_macro): the trailing space must be added only for WIN32 !! 2001-10-17 Christian Arnault 50 * src/cmt_symbol.cxx (show_macro): add a trailing space on all macro definitions (to avoid problem of trailing backslash) * src/cmt_parser.cxx (set_standard_macro): remove the insertion of trailing spaces after the last backslash for WIN32/NMake * src/constituents.make (all): (bug fix) re-install the build_library_links action for the all target 2001-10-11 Christian Arnault 49 * src/cmt_version.h: Tagging for v1r9p20011011 * fragments/library: (bug fix) transmit both -tag= and -tag_add= to cmt_make_shlib_common.sh 2001-10-11 Christian Arnault 48 * src/cmt_parser.cxx: remove debug print options 2001-10-10 Christian Arnault 47 * src/cmt_parser.cxx (parse_arguments): fix problems in multiple tag management. converge in the question of HOME requirements file to support - no default - define the path to the HOME requirements file in ${CMTHOME} converge in the arguments for manipulating the extra tags -tag= -tag_add= -tag_remove= 2001-10-03 Christian Arnault 46 * src/constituents.make (makefilesclean): Make all action lists run in one single shell (ie. use ;\ everywhere) Make an explicit target for build_library_links Make it called before any group 2001-10-02 Christian Arnault 45 * src/cmt_awk.h (class Awk): add a state variable (m_continuation_allowed) which when true, take into account the trailing backslashes, so as to first accumulate continued lines into one. Add the allow_continuation method to base Awk class. 2001-10-01 Christian Arnault 44 * src/cmt_cvs.cxx (class CvsImplementation): Bug in checkout_from_requirements. Did not accept leading spaces on use statements. 2001-09-27 Christian Arnault 43 * src/cmt_version.h: Tagging for v1r9p20010927 * src/setup.zsh: add the -begin option to the auto-expansion. * src/cmt_use.cxx (show_all): Visualize the HOME package when applicable. * src/cmt_system.cxx (get_home_package): (also do some formatting cleanup) * src/cmt_system.h (class CmtSystem): Adding get_home_package function to build the name given to the HOME package (provides the HOME requirements file) 2001-09-26 Christian Arnault 42 * src/cmt_parser.cxx (do_show_macro): Improving error detection on cmt show macro/set * doc/CMTDoc.html: Improve the doc. * src/cmt_parser.cxx (print): produce the CMTEXTRATAGS environment variable, at setup time. (parse_arguments): take into account this new env.var. to retreive previous extra tags. * src/Makefile.header: Add the CMTEXTRATAGS environment variable to propagate additional tags to Make. * fragments/make_setup: * fragments/constituent: * src/Makefile.header: * src/constituents.make: Adding -tag=$(tags) to all calls to cmtexe * src/cmt_system.h (class CmtSystem): Adding the bool testenv (name) function to test if an environment variable is defined or not. * src/cmt_parser.cxx (use_home_requirements): * src/cmt.h (class Cmt): Adding support of CMTHOME environment variable for specifying home requirements file. Default value will be ${HOME}. And can be overridden through the -home= global option. An explicit empty value (or set to eg. NONE) will discard the feature * src/cmt_parser.cxx (parse_arguments): Implement the tag list (comma separated list of extra tags) option -tag= to specify a list of tags to validate. 2001-09-25 Christian Arnault 41 * src/setup.csh: fixed PATH settings (may accept a path with space characters eg. for Darwin) * mgr/cmt_system.sh: Insert the knowledge of Darwin OS (Mac OS X). The default CMTCONFIG will be Darwin. * src/constituents.make (makefilesclean): Ensure that removal of makefile fragments is performed AFTER all cleanup uperations. * src/cmt_parser.cxx (use_home_requirements): Add the systematic search for a requirements file located in ${HOME}. This requirements file when found, is systematically parsed AFTER the requirements file of the current package has been parsed (so as to give the highest precedence to its statements) (do_remove_library_links): Upgrade "remove library_links" to make it compliant to the algorithm used in "build library_links" 2001-09-24 Christian Arnault 40 * src/cmt.h (class Cmt): * src/cmt_parser.cxx (configure): Add a global configure_error variable to store the possible error produced during the configuration. (install_test_setup_scripts): Add the -quiet option to the build temporary_name command used in setup script generation. * src/cmt_error.cxx (get_last_error): * src/cmt_error.h (class CmtError): Add get_last_error to retrieve the formatted text of the last error. * src/cmt_symbol.cxx (create): (all_print): (print): (build): * src/cmt_parser.cxx (select): Understand the "path" statement as a complete re-definition of a path-like variable. * src/cmt_system.cxx (add_cmt_path): * src/cmt_error.cxx (class Error): * src/cmt_error.h (class CmtError): Adding "path not found" error code, for CMTPATH checking. * src/cmt_pattern.cxx ((const cmt_string& name): Return a warning for pattern not found. * src/cmt_error.h (class CmtError): * src/cmt_error.cxx (class Error): Adding "pattern not found" error code, for showing diagnostics in "cmt show pattern" * src/cmt_parser.cxx (do_show_macro): Return a warning for symbol not found. * src/cmt_error.h (class CmtError): * src/cmt_error.cxx (class Error): Adding "symbol not found" error code, for showing diagnostics in "cmt show macro/set" 2001-09-19 Christian Arnault 39 * mgr/cmt_make_shlib_common.sh : return a status value which reflects the success or failure of the shared library build command. * src/cmt_cvs.cxx (class CvsImplementation): Discard the versions specified with wild cards in the recursive checkout. * src/cmt_triggers.cxx: Protect the error messages in the trigger facility by Cmt::quiet. * src/cmt_constituent.cxx (class constituents_action_iterator): temporarily discard the -triggers option. 2001-08-24 Christian Arnault 38 Tagging v1r9p2001p0824 2001-08-24 Christian Arnault 38 * mgr/cmt_system.sh: Improve the reliability of the cmt_system.sh script against variants of "fs sysname" 2001-08-23 Christian Arnault 37 * src/cmt_cvs.cxx (class CvsImplementation): Since the tag filter is back to cmtcvs.cxx, the temporary forced tag filter in CMT is removed. * src/setup.zsh: upgrade the completion for the broadcast command. * src/cmt_parser.cxx (do_broadcast): Make the -select independent of the -local or -global options. This is achieved by adding a "path_selections" list only managed by the -depth, -local -global modifiers while the "selections" list is managed by the -select modifier. The -exclude is left unchanged. 2001-08-22 Christian Arnault 36 * src/cmt_cvs.cxx (class CvsImplementation): Add the possibility to transmit a flag to the CVS pluggin, by inserting a /cmtcvstest in the module name to import. This will have to be decoded by the CVS pluggin itself !! 2001-08-21 Christian Arnault 35 * src/setup.tcsh: Improving the tcsh completion mechanism (for cmt co). * src/setup.zsh: Improving the zsh completion mechanism (for cmt co). * src/cmt_cvs.cxx (class CvsImplementation): Converging on HEAD management strategy... Starting implementation of the Atlas filter for CVS tags right into cmt_cvs.cxx rather than inside the CVS pluggin... 2001-08-20 Christian Arnault 34 * src/cmt_cvs.cxx (class CvsImplementation): Improving the recursive checkout process 2001-08-20 33 * src\cmt_cvs.cxx (class CvsImplementation): Reorganizing some CVS operations: - Apply the CMTCVSOFFSET env. variable to all actions (tags, branches, subpackages) - cleanup checkout algorithms (remove some obsolete variables) - add the -requirements option to checkout according to a set of use statements. - remove the inheritance to Awk of CvsImplementation to split the filter into 2 phases (implemented as 2 separated Awk derived classes) RecursivePass1 and RecursivePass2. 2001-08-16 Christian Arnault 32 * src/cmt_symbol.cxx (print): Bug in path_remove when the specified path variable only contained one item : the remove operation was not applied. 2001-07-20 Christian Arnault 31 * src/cmt_version.h: setting the patch v1r9p20010720 2001-07-20 Christian Arnault 30 * src/cmt_regexp.h (cmt_regexp::begin): Add an optional pos argument to the begin method. * doc/CMTDoc.html: Improvements, English cleanup... 2001-07-18 Christian Arnault 29 * src/cmt_cvs.cxx (CvsImplementation::checkout_package): Change the mechanism to get top files, since the " -d . " does not work anymore when CVSROOT is set to kserver!!!! 2001-07-16 Christian Arnault 28 * doc/CMTDoc.html: Old PREFIX fragment variable has been replaced by FILEPATH long ago. This was not upgraded in the doc. * fragments/constituent: The -f MUST be specified BEFORE other Make flags!! * fragments/dependencies: Tried to comment out the dependencies to cmt_path.make etc... but it confused the dependencies fragment production. Uncomment it but need to understand the side effect. 2001-07-09 Christian Arnault 27 * src/cmt_generator.cxx (build_readme): Bug: the VERSION variable was not used for installing the readme_trailer (although the documentation was mentioning it) 2001-07-04 Christian Arnault 26 * src/cmt_version.h: setting the patch v1r9p20010704 2001-07-02 Christian Arnault 25 * fragments/dependencies: Cleaning some old debug printouts. * src/cmt_cvs.cxx (class CvsImplementation): Bug in replacing the wild card expression. v5r* has to be replaced by v5r0 while v5* has to be replaced by v5 in case no matching tag exists in the CVS repository. Other bug : All split operations should be performed against " \t" (include tab character) 2001-06-29 Christian Arnault 24 * src/cmt_cvs.cxx (class CvsImplementation): Final Validation of the change in the implementation of the m_installed stack used to avoid recursion due to dependency cycles. 2001-06-22 Christian Arnault 23 * src/cmt_cvs.cxx (class CvsImplementation): doing some optimizations for the big checkout operations. * src/cmt_parser.cxx (do_config): Remove .[n]make files also from the binary directory. * src/cmt_cvs.cxx (class CvsImplementation): Always fetch the cmt branch at HEAD even if the checkout operation is applied to a required tag (temporary feature). 2001-06-18 22 * src\cmt_cvs.cxx (class CvsImplementation): insert a space between top tags and other tags. * mgr\cmt_make_shlib.bat: Write extra options received through arguments into a temporary option file, used by @ to resolve line-too-long prolems. * fragments\nmake\cpp_library: * fragments\nmake\cpp: Add the /Tp qualifier for allowing non-standard file suffixes. 2001-06-05 Christian Arnault 22 * src/cmt_use.cxx (class use_action_iterator): Default to the -no_auto_import was to keep the most recent specification. Change this to always request auto_import by default, (unless otherwise specified) 2001-06-01 Christian Arnault 22 * src/cmt_parser.cxx (do_broadcast): Bug fix in do_broadcast: the -begin option wrongly implied the -global option. 2001-06-13 22 * src/cmt_cvs.cxx (class CvsImplementation): Improving the strategy for getting version tags from the repository: o If a request specifies a tag which is not applied to the requirements file, the specified tag is used to create the version directory but the HEAD is used in the repository. o CvsImplementation::show_cvs_infos () : stores all received infos into xxx_info corresponding local properties. Thus this method is only called once per package. o Error messages are really obtained from the error_info field. 2001-05-30 Christian Arnault 22 * src/cmt_generator.cxx (build_document_makefile): * src/cmt_system.cxx (get_dot_suffix): fix bug for file_names without any suffix * src/cmt.h & src/cmt_parser.cxx (set_standard_macros): Add a state standard_macros_done to protect against multiple calls to set_standard_macros. 2001-05-28 Christian Arnault 22 * src/cmt_cvs.cxx (class CvsImplementation): display the tags in a one-per-line basis instead of space separated when doing cmt cvstags. * src/cmt_use.cxx (operate): Make the version selector operator a little bit more quiet... 2001-05-25 Christian Arnault 22 * mgr/Makefile (demo): improve the gmake check action in the demo target. * src/cmt_use.cxx (fill_macro_all): build use_xxx standard macros using macro_append instead of macro. 2001-05-22 Christian Arnault 22 * src/cmt_parser.cxx (do_broadcast): Fix the default (-local) option to act as -depth=1. Improve some error messages. 2001-05-21 21 * src\setup.bat: Improved skeleton for setup.bat. Base it on CMTBIN rather than on CMTCONFIG. Do not override CMTCONFIG if defined by the user. Do not care about PATH for Visual tools. * mgr\install.mak: change the strategy for building the setup.bat script for CMT itself at INSTALL time. Now copy ..\src\setup.bat skeleton. * mgr\requirements: Fix WIN32/VisualC tag definitions and PATH settings for cleaner handling of default tag overriding. * src\cmt_use.cxx (operate): Implement the algorithm for using aliases to alternate version specification in uses. ------------------------------------------------------------------------------------- 2001-05-18 Christian Arnault 21 -> Tag CMTv1r9p20010521 * src/cmt_use.cxx (show_sub_uses): Start the implementation of version_alias and path_alias for equivalencing two version naming policies. * src/cmt_cvs.cxx (class CvsImplementation): Adding the -o offset option to cmt checkout for specifying a global offset to the base CVS repository. This offset will be prepended to all modules during the various CVS operations. the m_offset attribute is added to the CvsImplementation class. (class CvsImplementation): Improve protection against CVS modules not found. (class CvsImplementation): Added the --help option the cmt checkout. 2001-07-10 Christian Arnault b-21 * mgr/requirements: add the -tag=$(tag) option to the build_dependencies macro. * fragments/dependencies: take the improvements into account. * src/cmt_generator.cxx (build_dependencies): Improve the dependency builder: re-generate all entries of the _dependencies.make that are missing from the complete source list (thus regenerate it when it is empty). Optimize the file scan for getting the new source list. * src/cmt_parser.cxx (do_build_dependencies): Dynamically shifts arguments of the build dependencies command to keep only the new-source-list. The complete command being "cmt build dependencies " (do_config): drop all makefile fragments from the mgr/cmt directory AND from the binary directory. 2001-05-11 Christian Arnault 20 Moving to v1r8 2001-05-11 Christian Arnault 19 * src/cmt_deps_builder.cxx ((istream& input, const cmt_string& dir_name, int current_path_index, const CmtSystem::cmt_string_vector& include_paths, const CmtSystem::cmt_string_vector& substitutions, CmtSystem::cmt_string_vector& all_deps, CmtSystem::cmt_string_vector& deps)): Augmented local internal line buffer (from 1024 to 16384). * doc/CMTDoc.html: document the new _root macro * src/cmt_parser.cxx (set_standard_macros) (get_best_form): Define a new set of standard macros using the pattern _root similar to ROOT except that this new definition uses the get_best_form, with a relative path to the package. The ROOT macro is restored to the previous convention, that it uses the absolute path. * src/cmt_use.cxx (fill_includes_macro): Adapt the fill_includes_macro to use the new _root standard macro 2001-05-10 Christian Arnault 18 * src/cmt_parser.cxx (do_broadcast): Add the -begin= option to start the broadcast loop from a given package. This option can be combined with other options such as -select or -exclude. * src/cmt_generator.cxx (filter_paths): Suppress two unused variables. * src/cmt_use.cxx (add): Bug fixing: during the discovery of versions requested for a given package, the discarded versions were not correctly replaced by the finally selected version, especially in the Use::get_paths method. The Use::get_selected_version has been added to obtain the effective replacement for a discarded version. * fragments/check_application: suppress the ". setup.sh" before application run. 2001-05-04 Christian Arnault 17 * src/cmt_parser.cxx (set_standard_macros): The production of all use_xxx standard macros now is based on a "macro_append" keyword instead of "macro", since "macro" resets all previous definitions. Therefore if the user's requirements did augment those use_xxx macros, these specifications would be ignored. (do_broadcast): Set the -local option to broadcast the default. Add the -global option to revert to the old default (with no selection and to any depth) 2001-05-03 Christian Arnault 17 * src/cmt_symbol.cxx (add_value_to_list): A new macro or set keyword resets (discards) all previous definitions for the corresponding symbol. * src/cmt_symbol.h (class SymbolValueList): Added an attribute discarded for symbol resetting. * src/cmt_parser.cxx (print_macros): Exclude scripts from macros defined in the $(tag).make file. 2001-04-27 Christian Arnault 16 * src/cmt_parser.cxx (get_best_form): Validate the compression algorithm for paths to packages (only for the macro ROOT - this is still not true for the ROOT environment variable) into a relative form when it is shorter than the absolute form. * src/cmt_system.cxx (compress_path): Fix the algorithm for compressing the patterns "aaaa/xxxx/../bbbb" into aaaa/bbbb. * src/cmt_generator.cxx (filter_paths): use CmtSystem::compress_path instead of duplicating its algorithm for erasing "/aaa/.." patterns 2001-04-25 Christian Arnault 15 * src/cmt_parser.cxx (set_standard_macros): Prepare the production of ROOT macros as relative paths rather than absolute ones, when the relative expression is shorter than the absolute one. Temporarily, trigger that feature by setting the CMTTESTPREFIX environment variable until absence of side effects is confirmed. 2001-04-18 Christian Arnault 15 * src/cmt_generator.cxx (build_readme): bug when generating the readme_trailer fragment : the PACKAGE variable should be reset to current. 2001-04-11 Christian Arnault 15 * src/cmt_generator.h (class Generator): * src/cmt_parser.cxx (do_build_readme): * src/cmt.h (class Cmt): do_build_readme now propagates argument list * fragments/readme_trailer: * src/cmt_generator.cxx (build_readme): Added DATE and USER information when building the README.html file. readme_trailer fragment updated accordingly. (build_readme): Add the -url= argument to the cmt build readme command. The specified URL will be used in place of the package path when generating the URL for used packages. 2001-04-18 Christian Arnault 14 * src/cmt_symbol.cxx (build): In all builder objects, symbol value lists registered by discarded Uses are now ignored. * src/cmt_symbol.h (class SymbolValue): cleanup a comment. * src/cmt_symbol.cxx (print): protect setup script execution against missing files. 2001-04-10 Christian Arnault 13 * src/cmt_generator.cxx (build_readme): * fragments/readme_use: building readme.html requires to know the mgr/cmt style of each used package. This fragment now requires a fourth variable MGRSTYLE which reflects the use->mgr_style attribute. Generator::build_readme fills in this new variable. 2001-04-06 Christian Arnault 12 * src/cmt_parser.cxx (reach_current_package): Use CmtSystem::getenv instead of base getenv * src/cmt_symbol.cxx (action): Now really private stuff is selected when access is at UserMode and scope is Private. * src/cmt_use.cxx (add): This method does not need to maintain current scope and access mode any longer. * src/cmt_parser.cxx (parse_requirements): Cmt::parse_requirements now manages the AccessMode and Scope when recursing into requirements files of used packages. Cmt::scope handles the sticky state provided by private/public statements Cmt::current_access handles the access mode that reflects the situation of the user * src/cmt_parser.h (enum): introduce the AccessMode to distinguish between DeveloperMode (when pwd is in the current package directory) and UserMode (otherwise). * src/cmt.h (class Cmt): Cmt::current_mode is now current_access and is of type AccessMode * src/cmt_parser.cxx (reach_current_package): Use CmtSystem::getenv instead of base getenv * src/cmt_use.cxx (Use::get_paths): * src/cmt_pattern.cxx (Pattern::apply ()) : bug in computing the path between two Uses. The result now includes the current Use. 2001-04-05 12 * src\cmt_tag.cxx (Tag::add(const cmt_string& name, int priority): clear a newly created Tag object (to deal with the reuse of old objects) * src\cmt_pattern.cxx (Pattern::add) : clear a newly created pattern object (to deal with the reuse of old objects) * src\cmt_use.h (class Use): Add Use::author_action and Use::manager_action to fill in the author and manager information. * src\cmt_parser.cxx (select): fill in author and manager values with the complete line. When several author and manager statements are provided, fill in as several lines (separated with a new-line). * src\cmt_generator.cxx (analyze_file (const Constituent& constituent, const cmt_string& file) : production of objects for libraries and applications is strictly identical. 2001-04-03 Christian Arnault 11 * src/cmt_constituent.cxx (clear): constituent.parameters was not cleared in Constituent::clear * src/cmt_symbol.cxx (build): add cleanup ValueList objects after their addition for ensuring a really new value (due to cmt_string optimizing) 2001-04-03 Christian Arnault 10 * mgr/Makefile: Operate the demo targets on different make action lines * src/Makefile.header: Added -tag=$(tag) to cmt actions * fragments/generator_header: create the output directory if needed 2001-04-02 9 * fragments\nmake\constituent: added the -tag=$(tag) option to cmt build actions * src\cmt_parser.cxx (parser): show_constituentxxx recursively reads used requirements files * src\cmt_pattern.cxx (Pattern::apply () const): protection added for the case where the pattern is applied to the package that defines it. 2001-03-29 Christian Arnault 8 * src/cmt_use.cxx (get_paths): * src/cmt_use.h (class Use): * src/cmt_pattern.h (class IgnorePattern): * src/cmt_pattern.cxx (const apply): Bug in apply global patterns : a pattern defined in one package should only be applied to the Uses that are on one of the paths between the current Use and the one wher the pattern is defined (and not to the Uses that never pretend to inherit that pattern!!!) This required to implement the Use::get_paths which fills in the inclusive list of all Uses that are between two Uses. 2001-03-27 Christian Arnault 7 * fragments/dependencies: protection against missing dependency make fragment during clean operations. * src/cmt_constituent.cxx (class constituents_action_iterator): the -suffix= option was hidden by the user variable specification while parsing the constituent parameters. 2001-03-23 Christian Arnault 6 * mgr/requirements: clean up WIN32 tag variants definitions * src/Makefile.header (setup.make): Display of the target in case of target not found (.DEFAULT) * fragments/make_setup (csh): few checks * fragments/installer: add the creation of $(install_dir) if needed 2001-03-21 Christian Arnault 5 * src/cmt_parser.cxx (parse_arguments): When the tag specified in the command line arguments (using -tag=) is the same as CMTCONFIG, then still validate the tag given by uname * fragments/dependencies: generate ${CONSTITUENT}_dependencies.make into $(bin) * fragments/constituent: generate ${CONSTITUENT}.make into $(bin) * src/cmt_constituent.cxx (parse): * src/cmt_constituent.h (class Constituent): Added the two-step parsing of the constituents specifications : first stage during parsing of the requirements file, parameters are simply stored in the constituent object and not interpreted. Second stage : after building the standard macros (once requirements files have entirely been read) then constituent objects are parsed. * src/cmt_parser.cxx: Add Constituent::parse_all in Cmt::set_standard_macros to finalize the constituent parsing. Install set_standard_macros in several additional actions 2001-03-16 Christian Arnault 4 * src/cmt_cvs.cxx (class CvsImplementation): Get the files at the top directory when doing a cmt checkout. Only checkout at head for the top package (ie do not recurse at head) and when -r is not specified. * src/cmt_symbol.cxx (resolve_value_for_macros): Perform the substitution of ${} to %% (or reverse) even if the env. var. is not defined in CMT. * src/cmt_parser.cxx (install_setup_scripts): Setup scripts on Windows generate the temporary expansion script in %HOMEDRIVE%%HOMEPATH%. 2001-03-16 Christian Arnault 3 * mgr/requirements: clean up variants for VisualC and VisualC/debug 2001-03-15 2 * src\cmt_use.cxx (class use_action_iterator): Strange name conflict: the use_action_iterator::set method is in conflict with something else when the class is named "action_iterator" (is it a conflict with the same private class defined in Symbol.cxx ??) * src\NMakefile.header (cmtexe): Fix for re-building cmt when cmt.exe does not exist. 2001-03-13 Christian Arnault 1 * src/cmt_use.cxx (class action_iterator): Introducing the action_iterator class for managing the local expansion of macros in the syntax parser (similart to what was done in Symbol::action) * src/cmt_generator.cxx (Generator::build_make_setup) when generating setup.make, the default value for constituents is extracted from the constituents macro. 2001-03-06 Christian Arnault * src/cmt_cvs.cxx (class CvsImplementation): Show both top tags and non-top tags in cmt cvstags. * doc/CMT.htm: Addition of several slide shows (from Atlas) * mgr/cmt_buildcvsinfos2.sh (error): The awk script had to be protected against multiple ocurrences of the /symbols/,/locks/ pattern. Implement both in python and in shell script the differntiated production of top tags and non-top tags. Top tags are the set of tags sharing the most recent CVS tagged version id (ie. the HEAD may be more recent) 2001-03-05 * src\cmt_parser.cxx (do_build_library_links): Handle libraries specified as a full path in _libraries * src\cmt_parser.cxx (print_context): * src\cmt_symbol.cxx (all_print): Use one line per env. var. assignment when generating setup scripts (instead of ; separated instructions) . The latter style should be no longer needed since we use temporary files. * src\cmt_parser.cxx (set_standard_macros): Add CMTCONFIG to the standard sets, so as to let it known as a plain "symbol" 2001-03-02 * src\cmt_system.h: introduce the CmtSystem::ev_open () and CmtSystem::ev_close () to get the OS-dependent pattern for environment variable definition. * src\cmt_symbol.cxx (resolve_value_for_macros): Substitute patterns ${xxx} or %xxx% to the appropriate OS-dependent pattern when producing "set" values only (this is only done when the pattern is not already the good one) * src\cmt_parser.cxx (install_setup_scripts): Changed >>${tempfile} into >${tempfile} in setup scripts (fix a constraint in csh) 2001-02-26 Christian Arnault * src/cmt_parser.cxx (do_build_temporary_name): Add the build temporary_name command to supply that missing function on various shells. (install_test_setup_scripts): Apply this new build service to setup scripts generation. * src/Makefile.header: Needed a trailing end-of-line 2001-02-15 Christian Arnault * src/cmt_cvs.cxx (class CvsImplementation): Fix misuse of checkout_package arguments (confusion between package path and checkout directory) 2001-02-26 * src\cmt_parser.cxx (install_test_setup_scripts): use mktemp for setup scripts. * mgr\requirements: Suppress local private configuration of MSVC++. It has to be done previously to operate on CMT (even before making the INSTALL.bat) 2001-02-26 Christian Arnault * src/cmt_deps_builder.cxx ((char* ptr, state_def& state, const cmt_string& dir_name, int current_path_index, const CmtSystem::cmt_string_vector& include_paths, const CmtSystem::cmt_string_vector& substitutions, CmtSystem::cmt_string_vector& all_deps, CmtSystem::cmt_string_vector& deps) * src/cmt_generator.cxx ((const cmt_string& file_name) Rollback recent change to work on cmt_strings rather than char* to restore speed. 2001-02-15 Christian Arnault * src/cmt_generator.cxx (build_dependencies): Restore the mechanism that takes into account the arguments, and the source list when -all_sources option is provided. * mgr/requirements: change /machine:I386 into /machine:IX86 as link option for VisualC 2001-02-13 * src\cmt_generator.cxx (build_dependencies): Do not require the source list from the arguments. Instead, get the sources directly from the constituents definition. The "cmt build dependencies" now only requires the constituent name. * src\cmt_deps_builder.cxx: Read files at once into a cmt_string and work from the text instead of reainf line by line from the file. Install the detection of fortran include statements 2001-02-06 * src\cmt_use.cxx: clean up space & tabs * cmt_parser.cxx (parse_requirements_text): Abort the parser in case of error, but only for check configuration command. * NMakefile.header (lex_echo): Add -quiet option to cmt command except cmt check configuration * constituents.nmake: Add -quiet option to cmt command 2001-01-30 * all dsp fragments : suppress the Win32 Release configuration. Only keep the Win32 Debug. This makes possible the generation of msdev using the syntax cmt build msdev -tag=VisualCdbg 2001-01-30 * Add cmt_buildcvsinfos.py first attempt to make the cvs script written in Python * requirements: Consistently base Windows tag on VisualC rather than WIN32 upgraded setup.tcsh setup.zsh introduced cmt show include_dirs introduced cmt show constituent bug in Pattern::add : overridden patterns were not cleared. cmt config must recursively get used packages (at least to get patterns) introduced cmt show pattern_names (at least for completion mechanisms) new action : action_show_pattern_names experimental work started on build triggers macro build_triggers implied_library_prefix implied_library_sufffix new library option -triggers new constituent attribute build_triggers new fragment dependencies_and_triggers for libraries bug in cmt_system.cxx::scan_dir Recursively get all requirements file in cmt config action Changed strategy for argument parsing error detection 2001-01-30 * cmt_use.cxx ((const cmt_string& from_path) : bug in detection of "use pack " without version specification at all (ie equiv. to *). We needed to check we are on a real CMT package. * cmt_constituent.cxx (class action_iterator): Expand the macros before acting upon a constituent specification. Each expanded word may then result in several words. Thus the line parser is re-implemented through a local operator class "action_iterator", in charge of filling up a new constituent object from the expanded statement. (Note that this mechanism could perfectly be reused for other statements eg "use" !!!) * cmt_parser.cxx (set_standard_macros): Implement all_constituents and all_constituentsclean unconditionally. * NMakefile.header (checkuses): if defined statements require that the macro to test is provided without quotes. * cmt_generator.cxx: Apply the new convention of installing object files into $(bin)${CONSTITUENTS} also for applications (was only done for libraries) * cmt_parser.cxx (print_context): Take the current CONFIG name from CmtSystem::get_cmt_config rather than recursively calling "cmt system", when generating setup scripts. * cmt_cvs.cxx (class CvsImplementation): Use '/' ínstead of CmtSystem::file_separator for CVS-only file specs. 2000-12-26 * cmt_fragment.h (class Fragment and FragmentHandle): Install all variants of (win)copy methods that act upon a cmt_string instead of a FILE*. * cmt_model.cxx: Create the implementation file for CmtModel * cmt_model.h (class CmtModel): Create the CmtModel class * cmt_parser.cxx (do_expand_model): Add the new command verb : 'expand model' and all associated features (do_expand_model): call the CmtModel::expand