* Project.cs (.ctor): Init timeOfLastDirty.
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / ChangeLog
index 3eb8e4349f4d6d265ad68339e15f0d2e7431e0a9..1af72b57c4d4dff76fea75163aeeb95b40808679 100644 (file)
@@ -1,3 +1,450 @@
+2009-05-12  Ankit Jain  <jankit@novell.com>
+
+       * Project.cs (.ctor): Init timeOfLastDirty.
+
+2009-05-05  Miguel de Icaza  <miguel@novell.com>
+
+       * Contribution from Martin Brenn to fix #498154.
+
+2009-04-27  Ankit Jain  <jankit@novell.com>
+
+       Fix bug #497839.
+       * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
+       one passed as argument.
+
+2009-04-27  Ankit Jain  <jankit@novell.com>
+
+       * TaskEngine.cs (Prepare): Emit a useful error message property value
+       can't be converted to required type.
+
+2009-04-27  Ankit Jain  <jankit@novell.com>
+
+       * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
+       as valid true values for bool, and corresponding for false.
+
+2009-03-27  Jonathan Chambers  <joncham@gmail.com>
+
+       * BuildWhen.cs: Add basic implementation.
+       * BuildChoose.cs: Add basic implementation.
+       * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to 
+       EvaluatedItemsIgnoringCondition.
+       * GroupingCollection.cs: Add evaluation of BuildChoose items.
+
+2009-03-26  Jonathan Chambers  <joncham@gmail.com>
+
+       * TaskDatabase.cs (RegisterTask): Search for class by name
+       if task was not found using GetType (which uses namespace). 
+
+2009-02-26  Ankit Jain  <jankit@novell.com>
+
+       * Target.cs: Handle target with no tasks. Log errors.
+
+2009-02-24  Ankit Jain  <jankit@novell.com>
+
+       Lazily load UsingTask tasks.
+       * UsingTask.cs (Evaluate): Register 'this' with task database,
+       but don't load it yet. Register only if condition evaluates to true.
+       Move the load logic to ..
+       (Load): .. here. Register with the specified task database.
+       * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
+       in a table keyed by task name, but don't load it yet.
+       (GetTypeFromClassName): Try to load UsingTask if task is not already
+       loaded. Move loading logic to ..
+       (GetTypeFromClassNameInternal): .. here.
+       (CopyTasks): Copy the usingTasks table also.
+
+2009-02-23  Ankit Jain  <jankit@novell.com>
+
+       * BuildItem.cs (AddMetadata): Allow overwriting older values.
+
+2009-02-22  Ankit Jain  <jankit@novell.com>
+
+       * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
+       instead of XmlElement. Eg. XmlComment
+
+2009-02-21  Ankit Jain  <jankit@novell.com>
+
+       * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
+       * Project.cs (Load): Use FromMSBuildPath on the path.
+       (InitializeProperties): Set "MSBuildToolsPath" also.
+
+2009-02-20  Ankit Jain  <jankit@novell.com>
+
+       Fix #449683.
+       * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
+       transforms) in conditions.
+       * ConditionParser.cs: Parse unquoted item, property references.
+       eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
+       * Token.cs (Token.ToString): Override.
+       (TokenType.Transform): Uncomment.
+
+2009-02-12  Jonathan Chambers  <joncham@gmail.com>
+
+       * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
+       no XmlElement.InnerText. This allows properties to be additional 
+       xml elements.
+
+2009-02-01  Ankit Jain  <jankit@novell.com>
+
+       * BuildEngine.cs (BuildProjectFile): Use
+       BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
+       * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
+       built. Move logging of project start/finish to ..
+       * Project.cs: .. here. Build a target only if hasn't been built already.
+       Keep track of target outputs, and return those even if an already built
+       target has been invoked again.
+       Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
+
+2009-01-31  Ankit Jain  <jankit@novell.com>
+
+       * BatchingImpl.cs: Split into ..
+       * BatchingImplBase.cs: .. this,
+       * TaskBatchingImpl.cs: .. this ..
+       * TargetBatchingImpl.cs: .. and this. Implement target batching here.
+
+       * Target.cs (DoBuild): Use TargetBatchingImpl for building.
+       (Log*): Move to TargetBatchingImpl .
+       (BuildTasks): New.
+       (Engine): New.
+
+2009-01-30  Ankit Jain  <jankit@novell.com>
+
+       * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
+       arrays.
+
+2009-01-29  Ankit Jain  <jankit@novell.com>
+
+       * BuildItem.cs (child_items): Change type from BuildItemGroup to
+       List<BuildItem>.
+       (HasParent): Rename to ..
+       (HasParentItem): .. this.
+       (ParentItemGroup): Add setter.
+
+       * BuildItemGroup.cs (.ctor): Add overload with @project param.
+       (AddNewItem):
+       (AddItem): Correctly set the ParentItemGroup for new build items.
+       (ParentProject): Add setter.
+       * Project.cs: Set the project for new BuildItemGroup instances.
+       * TaskEngine.cs (PublishItemGroup): Likewise.
+
+2009-01-06  Ankit Jain  <jankit@novell.com>
+
+       * Project.cs (Build): Honor InitialTargets list.
+
+2009-01-06  Ankit Jain  <jankit@novell.com>
+
+       * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
+       the property type also.
+       * MSBuild.cs (Execute): Parse 'Properties' task param to set global
+       properties.
+
+2009-01-06  Ankit Jain  <jankit@novell.com>
+
+       * Project.cs (Build): Correctly handle null targetNames argument.
+
+2009-01-06  Ankit Jain  <jankit@novell.com>
+
+       * Engine.cs (LogProjectStarted): Add a null check.
+
+2009-01-01  Ankit Jain  <jankit@novell.com>
+
+       * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
+       * ChangeType (ToBuildItemGroup): Add 'split' param.
+       Track api changes.
+       * Expression.cs (Parse): Add a new overload with a 'split' param.
+       * ExpressionCollection.cs (Add): Add new overload for IReference,
+       remove the ones for Item/Metadata/PropertyReference.
+       (ConvertToArray): Implement correctly.
+       (ConvertToString): Track api changes.
+       (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
+       (ConvertToITaskItemArray): Implement support for concat'ing expressions.
+       (AddItemsToArray): New.
+       (ConvertToITaskItemArrayFromString): Refactor a bit.
+       (ThrowCantConcatError): New.
+       * ItemReference.cs: Update.
+       * MetadataReference.cs: Update.
+       * PropertyReference.cs (ConvertToITaskItemArray): Implement.
+       (GetValue): New.
+       * BuildPropertyGroup.cs: Track api changes.
+       * TaskEngine.cs (PublishOutput): Improve exception message.
+       * Project.cs (DoLoad): Improve exception message. Add a null check.
+
+2008-12-30  Ankit Jain  <jankit@novell.com>
+
+       * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
+       metadata values for unqualified references.
+       (BuildItemGroupToITaskItemArray): Rename to ..
+       (BuildItemGroupToITaskItems): .. this.
+       (HasTaskItem): New.
+
+2008-12-18  Ankit Jain  <jankit@novell.com>
+
+       * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
+
+2008-12-17  Ankit Jain  <jankit@novell.com>
+
+       * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
+       only one instance of unique metadata value is required.
+
+2008-11-22  Ankit Jain  <jankit@novell.com>
+
+       * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
+       MetadataReference.
+       * MetadataReference.cs (ConvertToITaskItemArray): New.
+       * Project.cs (GetAllItemGroups): New.
+
+2008-11-21  Ankit Jain  <jankit@novell.com>
+
+       * BatchingImpl.cs: Add task batching implementation.
+       * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
+       * ExpressionCollection.cs (Count): New.
+       (ConvertToString): Handle MetadataReference.
+       * ItemReference.cs (ConvertToString):
+       (ConvertToITaskItemArray): Use the batching api.
+       (ToString): New.
+       * MetadataReference.cs (ConvertToString): New.
+       (ToString): New.
+       * Project.cs: Add api for accessing batched items and metadata.
+       * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
+       item group.
+
+2008-10-01  Ankit Jain  <jankit@novell.com>
+
+       * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
+       (BuildProjectFile): If filename is null (project.LoadXml) then use
+       engine.BuildProject
+       * BuildTask.cs (InitializeTask): Track api change.
+       * Expression.cs (Parse): Skip empty entries in the expression.
+
+2008-09-24  Ankit Jain  <jankit@novell.com>
+
+       * Engine.cs: Add argument checks.
+       * Project.cs: Likewise.
+
+2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Project.cs (Build): Add outputs to targetOutputs.
+
+2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * ExpressionCollection.cs (ConvertToArray): Simplify.
+
+2007-03-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
+       simplified. It still needs tests and refactoring.
+
+2007-02-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildEngine.cs (BuildProjectFile): Don't crash on null
+       globalProperties.
+
+       * Target.cs: Add Outputs property.
+
+2007-02-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Target.cs (Build): Split to GetDependencies () and BuildDependencies
+       (). Support condition.
+       
+       * BatchingImpl.cs (BatchBuildTask): Simplify.
+
+2007-02-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
+       Simplified.
+
+       * ConditionFunctionExpression.cs: Removed warnings.
+
+       * BuildTask.cs (Execute): Write exceptions to std err (they should be
+       logged but it's better than swallowing).
+
+2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * ConditionTokenizer.cs: Add Putback ().
+
+       * ConditionParser.cs: Add parsing of functions.
+
+       * ConditionFunctionExpression.cs: Add.
+
+2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildPropertyGroup (SetProperty): Throw an exception when trying to
+       set property in persisted property group.
+
+2007-01-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildTask.cs (Execute): Log errors that happen when invoking ITask
+       .ctor.
+
+       * ConsoleLogger.cs (TargetFinishedHandler)
+       (TaskFinishedHandler): Increment error count.
+
+2007-01-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItem.cs (RemoveMetadata): Remove from XML.
+       (SetMetadata): Trigger project reevaluation.
+
+2007-01-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
+       properties.
+
+2007-01-23  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
+       TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
+       BatchingImpl.cs, BuildProperty.cs: Track API changes.
+
+       * Expression.cs (Parse): Added allowItems parameter and made regexes
+       static.
+
+       * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
+       will try to import a.ext when given a.EXT.
+
+2007-01-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItemGroup.cs: Store information saying what is the last item
+       group that contains build item name.
+
+       * Project.cs (Build): Pass empty array (build default targets).
+
+2007-01-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Token.cs: Commented Transform and LiteralSubExpression and added
+       FunctionName token.
+
+       * ConditionParser.cs: Removed redundant casts, rewrote
+       ParseFactorExpression () and added parsing of '!'.
+
+       * ConditionTokenizer.cs: Always skip whitespaces when getting next
+       token (no IgnoreWhiteSpace property). Don't create a token from '->'.
+       Moved ReadChar () in front of all ifs.
+
+2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
+       from XML. (not to escape items that have parents twice).
+
+2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
+       (Project): Renamed to ParentProject.
+
+       * BuildItem.cs (ctor)
+       (CopyCustomMetadata): Add null check.
+
+       * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
+       (RemoveProperty): Added null check.
+
+       * TargetCollection.cs (RemoveTarget): Added null check.
+
+       * Engine.cs (UnloadProject): Added null check.
+
+       * GroupingCollection.cs (Remove): Check if removed group belongs to
+       current project.
+
+       * Project.cs (AddNewItem): Implemented.
+       (RemoveItem): Reorganized.
+       (SetProjectExtensions): Added null check.
+
+2007-01-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItemGroup.cs (Detach): Added.
+       (RemoveItem)
+       (RemoveItemAt): Used Detach ().
+
+       * BuildItem.cs: Made FromXml and HasParent internal and added
+       ParentItem and ParentItemGroup properties (internal).
+       (Detach): Added.
+
+       * GroupingCollection.cs (Remove): Used Detach ().
+
+       * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
+       text on Save ().
+       (GetEvaluatedItemsByNameIgnoringCondition)
+       (GetEvaluatedItemsByName)
+       (GetEvaluatedProperty): Reevaluate if needed.
+       (RemoveItem)
+       (RemoveAllItemGroups)
+       (RemoveAllPropertyGroups): Implemented.
+       (DoLoad): Added closing of TextReader.
+
+2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
+       change but just mark that it needs it.
+
+       * Project.cs: Reevaluate when it needs reevaluation and one of
+       Evaluated* properties is used.
+
+2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Target.cs: Throw an exception when <OnError> is not last element in
+       target.
+
+       * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
+
+       * TargetCollection.cs: If a target is already there replace it with
+       new target.
+
+       * BuildProperty.cs: Added XmlElement property.
+
+2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * ImportCollection.cs: Don't add imports that are already added.
+
+       * BuildItemGroup.cs: MonoTODOs.
+
+       * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
+       condition can't be evaluated to bool.
+
+       * BuildPropertyGroup.cs (Evaluate): Simplify.
+
+2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildWhen.cs: Moved BindToXml () code to ctor.
+
+       * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
+       property needed for removing groups.
+
+       * Engine.cs: Added StartBuild () that logs build start when Build ()
+       was first called.
+
+       * GroupingCollection.cs: Added Remove () for item and property groups.
+
+       * Project.cs (AddNewImport): Implemented.
+       (AddNewItemGroup): Implemented.
+       (AddNewPropertyGroup): Implemented.
+       (AddNewUsingTaskFromAssemblyFile): Implemented.
+       (AddNewUsingTaskFromAssemblyName): Implemented.
+       (RemoveItemGroup): Implemented.
+       (RemovePropertyGroup): Implemented.
+
+2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * BuildItemGroup.cs (Clear): Remove from XML.
+
+       * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
+       to Project.EvaluatedProperties.
+       (Clear): Remove from XML.
+
+2007-01-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
+       reserved property.
+
+2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
+       Add () calls when processing a project from Import and
+       evaluate_iterator for evaluation.
+
+2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
+
+       * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
+       and prepend relative directory of importing project to full path of
+       imported project.
+
 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
 
        * BuildWhen.cs, BuildPropertyGroupCollection.cs,