You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -1,37 +0,0 @@
|
||||
2010-04-03 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* Makefile: Import tools/xbuild/xbuild_targets.make, which copies
|
||||
the target and tasks file in the correct place, to allow running
|
||||
tests with different toolsversion.
|
||||
Use the correct target assembly name for 4.0 profile.
|
||||
|
||||
2010-02-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* Microsoft.Build.Utilities.dll.sources: Add ProcessStringDictionary.cs
|
||||
from class/System/System.Collections.Specialized . This is required as
|
||||
the StringDictionary in ToolTask, used for EnvironmentOverrides, is
|
||||
inadequate, because environment vars are case sensitive on unix.
|
||||
|
||||
2009-04-25 Jonathan Chambers <joncham@gmail.com>
|
||||
|
||||
* Makefile: Adjust assembly name for 3.5 profile.
|
||||
|
||||
2009-02-25 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* Microsoft.Build.Utilities.dll.sources: Add ProcessService.cs,
|
||||
ProcessWrapper.cs, IAsyncOperation.cs and IProcessAsyncOperation.cs
|
||||
|
||||
2006-04-19 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Microsoft.Build.Utilities.targets: Removed.
|
||||
|
||||
2005-09-25 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Microsoft.Build.Utilities.dll.sources: Updated.
|
||||
|
||||
2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Microsoft.Build.Utilities.dll.sources: Renamed from
|
||||
Microsoft.Build.Utilities.sources.
|
||||
* Microsoft.Build.Utilities_test.dll.sources: Added.
|
||||
* Makefile: Added Microsoft.Build.Framework.dll to test references.
|
||||
@@ -8,17 +8,13 @@ include $(XBUILD_DIR)/xbuild.make
|
||||
LIBRARY = Microsoft.Build.Utilities.dll
|
||||
LIBRARY_NAME = Microsoft.Build.Utilities$(NAME_SUFFIX).dll
|
||||
|
||||
LIB_REFS = System System.Core System.Xml
|
||||
LIB_MCS_FLAGS = \
|
||||
/r:$(corlib) \
|
||||
/r:System.dll \
|
||||
/r:System.Core.dll \
|
||||
/r:System.Xml.dll \
|
||||
/r:$(XBUILD_FRAMEWORK)
|
||||
LIB_REFS = $(PARENT_PROFILE)System $(PARENT_PROFILE)System.Core $(PARENT_PROFILE)System.Xml $(XBUILD_FRAMEWORK)
|
||||
LIB_MCS_FLAGS =
|
||||
|
||||
TEST_RESX_RESOURCES = Test/Microsoft.Build.Utilities/Strings.resources
|
||||
|
||||
TEST_MCS_FLAGS = /r:$(XBUILD_ENGINE) /r:$(XBUILD_FRAMEWORK) -r:System.dll -r:System.Core.dll $(TEST_RESX_RESOURCES:%=-resource:%)
|
||||
TEST_LIB_REFS = $(XBUILD_ENGINE) $(XBUILD_FRAMEWORK) $(PARENT_PROFILE)System $(PARENT_PROFILE)System.Core
|
||||
TEST_MCS_FLAGS = $(TEST_RESX_RESOURCES:%=-resource:%)
|
||||
|
||||
include $(XBUILD_DIR)/xbuild_test.make
|
||||
include ../../build/library.make
|
||||
@@ -27,6 +23,8 @@ EXTRA_DISTFILES = $(TEST_RESX_RESOURCES:.resources=.resx)
|
||||
|
||||
CLEAN_FILES += $(TEST_RESX_RESOURCES)
|
||||
|
||||
.NOTPARALLEL: $(TEST_RESX_RESOURCES)
|
||||
|
||||
$(TEST_RESX_RESOURCES): %.resources: %.resx
|
||||
$(RESGEN) $< || cp $@.prebuilt $@
|
||||
|
||||
|
||||
@@ -1,364 +0,0 @@
|
||||
2010-04-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs: Don't wait for the process to end, before emitting
|
||||
it's stdout/stderr, emit as it is received. This helps with time
|
||||
consuming tools.
|
||||
|
||||
2010-04-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ReservedNameUtils.cs (GetReservedMetadata): Handle empty item.
|
||||
|
||||
2010-04-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs: Use regex to parse output. Regex is from monodevelop.
|
||||
|
||||
2010-04-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (ExecuteTool): Check that the tool exists.
|
||||
|
||||
2010-04-03 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TargetDotNetFrameworkVersion.cs: Add Version40 .
|
||||
* Task.cs (BuildEngine2): New.
|
||||
* ToolLocationHelper.cs: Use class/lib/net_* as the path
|
||||
for the assemblies and targets when running tests.
|
||||
Environment variable TESTING_MONO is set for testing.
|
||||
This allows a 4.0 xbuild to build 2.0/3.5 projects.
|
||||
|
||||
2010-02-19 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TaskItem.cs: Track api changes.
|
||||
|
||||
2010-02-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ProcessService.cs (globalEnvironmentVariablesOverride): Use
|
||||
ProcessStringDictionary instead of StringDictionary.
|
||||
ProcessStringDictionary retains the case of the keys (env vars
|
||||
here).
|
||||
* ToolTask.cs (environmentOverride): Likewise.
|
||||
|
||||
2010-02-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (ExecuteTool): Use the virtual method
|
||||
Standard*LoggingImportance, instead of the underlying field.
|
||||
(LogEventsFromTextOutput): Use @importance argument for LogMessage.
|
||||
(LogToolCommand): Remove MonoTODO.
|
||||
|
||||
2010-02-06 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (SkipTaskExecution): Use ValidateParameters method.
|
||||
Remove some MonoTODOs.
|
||||
|
||||
2009-11-25 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolLocationHelper.cs: Set directory for 3.0 framework
|
||||
to "2.0"
|
||||
|
||||
2009-11-09 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TargetDotNetFrameworkVersion.cs (Version30):
|
||||
(Version35): New.
|
||||
* ToolLocationHelper.cs: Support 3.0 and 3.5 also.
|
||||
|
||||
2009-10-13 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TaskLoggingHelper.cs:
|
||||
* ToolTask.cs: Fix warnings.
|
||||
|
||||
2009-10-12 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TaskLoggingHelper.cs: Use the buildEngine.ProjectFileOfTaskNode
|
||||
in the event args.
|
||||
|
||||
2009-10-12 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (ExecuteTool): Don't set toolOutput to null.
|
||||
(HandleTaskExecutionErrors): toolOutput can be null.
|
||||
Set toolOutput to null here.
|
||||
|
||||
2009-10-06 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (Execute): HandleTaskExecutionErrors is called only
|
||||
if exitCode != 0.
|
||||
(ExecuteTool): Move logging of exitcode to HandleTaskExecutionErrors.
|
||||
Remove MonoTODOs.
|
||||
* TaskLoggingHelper.cs (LogMessageFromText): New.
|
||||
(LogMessage): Refactor to use above.
|
||||
|
||||
2009-10-02 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* AppDomainIsolatedTask.cs (BuildEngine): Init 'log'.
|
||||
|
||||
2009-09-29 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (ExecuteTool): Use LogToolCommand, instead of
|
||||
directly logging.
|
||||
(LogToolCommand): Implement.
|
||||
|
||||
2009-09-28 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (ProcessOuputTool): Move logging of tool
|
||||
output from here to ..
|
||||
(ExecuteTool): .. here. As, ProcessOuputTool can be
|
||||
overridden.
|
||||
|
||||
2009-09-24 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (HasLoggedErrors): Add missing property.
|
||||
|
||||
2009-09-23 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TaskLoggingHelper.cs (LogErrorFromException): Add missing overload.
|
||||
|
||||
2009-09-10 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* TaskLoggingHelper.cs (FormatString): Use the unformatted string
|
||||
even if the args array was empty.
|
||||
|
||||
2009-09-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (LogEventsFromTextOutput): Log message even if its not
|
||||
identified as an error or a warning.
|
||||
|
||||
2009-07-28 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask (.ctor): Initialize Timeout value.
|
||||
(Execute): Use HandleTaskExecutionErrors to determine task result. Set
|
||||
exitCode to the result of ExecuteTool and let HandleTaskExecutionErrors
|
||||
determine final result of the task.
|
||||
(RealExecute): Rename to ..
|
||||
(ExecuteTool): .. this. @responseFileCommands could be empty.
|
||||
Use specified timeout value for the executing tool.
|
||||
Rename 'compilerOutput' to 'toolOutput'. Cleanup resources in the
|
||||
finally block. Move processing of stdout/stderr output to ..
|
||||
(ProcessOutputFile): .. here and ..
|
||||
(LogEventsFromTextOutput): .. here.
|
||||
(HandleTaskExecutionErrors): Implement.
|
||||
(DeleteTempFile): Implement.
|
||||
|
||||
2009-04-24 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ToolTask.cs (RealExecute): Handle TypeLoadExceptions, compiler
|
||||
crashes and report them. Borrow some tricks from md.
|
||||
(LogEventsFromTextOutput): Ignore known non-error messages. Don't
|
||||
log unknown lines, crashes get handled elsewhere.
|
||||
|
||||
2009-04-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
Fix bug #491828.
|
||||
* ToolTask.cs (LogEventsFromTextOutput): Log even in case of
|
||||
unrecognized errors.
|
||||
|
||||
2009-02-25 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ProcessService.cs, IAsyncOperation.cs, IProcessAsyncOperation.cs,
|
||||
ProcessWrapper.cs: Brought in from monodevelop.
|
||||
* ToolTask.cs: Use the new ProcessService to execute the tool. Honor
|
||||
SkipTaskExecution (). Use response files, but log the contents of the
|
||||
response file instead of "@foo.rsp". Support environmentOverrides.
|
||||
(LogEventsFromTextOutput): Add null check.
|
||||
* Exec.cs (GetWorkingDirectory): Use the workingDirectory property.
|
||||
|
||||
2009-02-20 Ankit Jain <jankit@novell.com>
|
||||
|
||||
Fix bug #475438.
|
||||
* ToolTask.cs (RealExecute): Check whether the target executable exists.
|
||||
Log any execution errors.
|
||||
|
||||
2008-08-06 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* CommandLineBuilder.cs (AppendSwitchIfNotNull): Quote individual items
|
||||
of the array.
|
||||
|
||||
2008-07-31 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* CommandLineBuilder.cs (chars): Use a char array instead of a
|
||||
hashtable. Add ';' to the list.
|
||||
(embeddedQuotes): Regex not required.
|
||||
(IsQuotingRequired): Update.
|
||||
(VerifyThrowNoEmbeddedDoubleQuotes): Update.
|
||||
Use VerifyThrowNoEmbeddedDoubleQuotes at appropriate points (see tests).
|
||||
|
||||
2007-05-16 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Add quotes when there are needed.
|
||||
|
||||
2007-01-06 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolLocationHelper.cs: Implemented GetPathToDotNetFramework () and
|
||||
GetPathToDotNetFrameworkSdk ().
|
||||
|
||||
2006-12-29 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs (LogEventsFromTextOutput): This method is actually
|
||||
protected so we can't remove second parameter.
|
||||
|
||||
2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Logger.cs (FormatErrorEvent, FormatWarningEvent): Write only (a) or
|
||||
(a,b) or (a,b,c,d).
|
||||
|
||||
* CommandLineBuilder.cs: Added null checks.
|
||||
|
||||
2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs (VerifyThrowNoEmbeddedDoubleQuotes):
|
||||
Implemented.
|
||||
|
||||
2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs: Add a hack that will replace '\\' with
|
||||
Path.DirectorySeparatorChar.
|
||||
|
||||
2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs: Changed importance to Normal.
|
||||
|
||||
2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskLoggingHelper.cs: Changed "" to String.Empty.
|
||||
|
||||
2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskLoggingHelper.cs: Made LogErrorFromException () show stack trace
|
||||
by default.
|
||||
|
||||
2006-09-30 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ReservedNameUtils.cs: Added a null check.
|
||||
|
||||
2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs: Added some [MonoTODO]s.
|
||||
|
||||
2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Corrected IsQuotingRequired ().
|
||||
* TaskLoggingHelper.cs: Added null check.
|
||||
|
||||
2006-05-26 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Logger.cs: Added MonoTODO.
|
||||
* TaskLoggingHelper.cs: Changed helpKeywordPrefix to helpKeyword. It
|
||||
looks like it's still wrong.
|
||||
|
||||
2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs: Fixed exit code.
|
||||
|
||||
2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs, TaskItem.cs: Small fixes.
|
||||
* TaskLoggingHelper.cs: Added checking for null parameters.
|
||||
|
||||
2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs: Moved checking if metadata name is reserved to internal
|
||||
class (Mono.XBuild.Utilities.ReservedNameUtils).
|
||||
|
||||
2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs: Coding style changes.
|
||||
|
||||
2006-03-29 Crestez Leonard <cdleonard@gmail.com>
|
||||
|
||||
* TaskItem.cs: Cleaned up.
|
||||
|
||||
2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Corrected exceptions throwing.
|
||||
* TaskItem.cs: Fixed MetadataNames property.
|
||||
|
||||
2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Fixed a typo.
|
||||
* HostObjectInitializationStatus.cs: Fixed order.
|
||||
* ToolTask.cs: Updated for new API.
|
||||
|
||||
2006-02-25 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* HostObjectInitializationStatus.cs: Added.
|
||||
|
||||
2006-02-25 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs, Logger.cs, TaskLoggingHelper.cs, ToolTask.cs
|
||||
: Updated API.
|
||||
|
||||
2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* AppDomainIsolatedTask.cs, Task.cs: Quick hacks to make it compile with
|
||||
new API.
|
||||
|
||||
2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs, Logger.cs, AppDomainIsolatedTask.cs,
|
||||
ToolTask.cs, TaskItem.cs, Task.cs, ToolLocationHelper.cs,
|
||||
TargetDotNetFrameworkVersion.cs, ConcurrentLoggingHelper.cs,
|
||||
TaskLoggingHelper.cs: Added #if NET_2_0.
|
||||
|
||||
2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ToolTask.cs: Formatting.
|
||||
* TaskItem.cs: Removed obsoleted code.
|
||||
* ToolLocationHelper.cs: Formatting.
|
||||
|
||||
2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs, Logger.cs, AppDomainIsolatedTask.cs,
|
||||
ConcurrentLoggingHelper.cs, TaskLoggingHelper.cs: Changed protected
|
||||
fields to private.
|
||||
|
||||
2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs, TaskLoggingHelper.cs: Formatting.
|
||||
|
||||
2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Logger.cs: Formatting.
|
||||
* ToolTask.cs: Added error/warning handling.
|
||||
* TaskLoggingHelper.cs: Fixed LogErrorFromException ().
|
||||
|
||||
2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Added checking for null values.
|
||||
* ToolTask.cs: Added real execution.
|
||||
* Task.cs: Changed all fields to private.
|
||||
* TaskLoggingHelper.cs: Formatting.
|
||||
|
||||
2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs: MetadataCount fixed.
|
||||
|
||||
2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Task.cs: Added creation of TaskLoggingHelper.cs.
|
||||
* TaskLoggingHelper.cs: Ctor uses Task's BuildEngine.
|
||||
|
||||
2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItem.cs: Added GetMetadata and fixed other functions.
|
||||
|
||||
2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilder.cs: Add appending spaces (currently commented)
|
||||
* ToolTask.cs: Add process.
|
||||
|
||||
2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* AppDomainIsolatedTask.cs, CommandLineBuilder.cs,
|
||||
ConcurrentLoggingHelper.cs, Logger.cs, Task.cs, TaskItem.cs,
|
||||
TaskLoggingHelper.cs, ToolTask.cs: Various fixes.
|
||||
|
||||
2005-07-13 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* Logger.cs, AppDomainIsolatedTask.cs, ToolTask.cs, TaskItem.cs,
|
||||
ConcurrentLoggingHelper.cs, TaskLoggingHelper.cs: Small fixes, still
|
||||
unusable
|
||||
|
||||
2005-07-05 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* AppDomainIsolatedTask.cs, CommandLineBuilder.cs,
|
||||
ConcurrentLoggingHelper.cs, Logger.cs, MonoTODOAttribute.cs,
|
||||
TargetDotNetFrameworkVersion.cs, Task.cs, TaskItem.cs,
|
||||
TaskLoggingHelper.cs, ToolLocationHelper.cs, ToolTask.cs: Initial
|
||||
check-in, very buggy
|
||||
@@ -9,11 +9,11 @@ namespace Microsoft.Build.Utilities
|
||||
|
||||
internal class ProcessWrapper : Process, IProcessAsyncOperation
|
||||
{
|
||||
private Thread captureOutputThread;
|
||||
private Thread captureErrorThread;
|
||||
ManualResetEvent endEventOut = new ManualResetEvent (false);
|
||||
ManualResetEvent endEventErr = new ManualResetEvent (false);
|
||||
ManualResetEvent endEventExit = new ManualResetEvent (false);
|
||||
bool done;
|
||||
bool disposed;
|
||||
object lockObj = new object ();
|
||||
|
||||
public ProcessWrapper ()
|
||||
@@ -23,26 +23,59 @@ namespace Microsoft.Build.Utilities
|
||||
public new void Start ()
|
||||
{
|
||||
CheckDisposed ();
|
||||
|
||||
base.EnableRaisingEvents = true;
|
||||
|
||||
base.Exited += (s, args) => {
|
||||
try {
|
||||
endEventExit.Set ();
|
||||
WaitHandle.WaitAll (new WaitHandle[] { endEventOut, endEventErr });
|
||||
} catch (ObjectDisposedException) {
|
||||
return; // we already called Dispose
|
||||
}
|
||||
|
||||
OnExited (this, EventArgs.Empty);
|
||||
};
|
||||
|
||||
base.OutputDataReceived += (s, args) => {
|
||||
if (args.Data == null) {
|
||||
try {
|
||||
endEventOut.Set ();
|
||||
} catch (ObjectDisposedException) {
|
||||
return; // we already called Dispose
|
||||
}
|
||||
} else {
|
||||
ProcessEventHandler handler = OutputStreamChanged;
|
||||
if (handler != null)
|
||||
handler (this, args.Data + Environment.NewLine);
|
||||
}
|
||||
};
|
||||
|
||||
base.ErrorDataReceived += (s, args) => {
|
||||
if (args.Data == null) {
|
||||
try {
|
||||
endEventErr.Set ();
|
||||
} catch (ObjectDisposedException) {
|
||||
return; // we already called Dispose
|
||||
}
|
||||
} else {
|
||||
ProcessEventHandler handler = ErrorStreamChanged;
|
||||
if (handler != null)
|
||||
handler (this, args.Data + Environment.NewLine);
|
||||
}
|
||||
};
|
||||
|
||||
base.Start ();
|
||||
|
||||
captureOutputThread = new Thread (new ThreadStart(CaptureOutput));
|
||||
captureOutputThread.IsBackground = true;
|
||||
captureOutputThread.Start ();
|
||||
|
||||
if (ErrorStreamChanged != null) {
|
||||
captureErrorThread = new Thread (new ThreadStart(CaptureError));
|
||||
captureErrorThread.IsBackground = true;
|
||||
captureErrorThread.Start ();
|
||||
} else {
|
||||
endEventErr.Set ();
|
||||
}
|
||||
base.BeginOutputReadLine ();
|
||||
base.BeginErrorReadLine ();
|
||||
}
|
||||
|
||||
public void WaitForOutput (int milliseconds)
|
||||
{
|
||||
CheckDisposed ();
|
||||
WaitForExit (milliseconds);
|
||||
WaitHandle.WaitAll (new WaitHandle[] {endEventOut});
|
||||
WaitHandle.WaitAll (new WaitHandle[] { endEventOut, endEventErr, endEventExit }, milliseconds);
|
||||
}
|
||||
|
||||
public void WaitForOutput ()
|
||||
@@ -50,68 +83,30 @@ namespace Microsoft.Build.Utilities
|
||||
WaitForOutput (-1);
|
||||
}
|
||||
|
||||
private void CaptureOutput ()
|
||||
{
|
||||
try {
|
||||
if (OutputStreamChanged != null) {
|
||||
char[] buffer = new char [1024];
|
||||
int nr;
|
||||
while ((nr = StandardOutput.Read (buffer, 0, buffer.Length)) > 0) {
|
||||
if (OutputStreamChanged != null)
|
||||
OutputStreamChanged (this, new string (buffer, 0, nr));
|
||||
}
|
||||
}
|
||||
} catch (ThreadAbortException) {
|
||||
// There is no need to keep propagating the abort exception
|
||||
Thread.ResetAbort ();
|
||||
} finally {
|
||||
// WORKAROUND for "Bug 410743 - wapi leak in System.Diagnostic.Process"
|
||||
// Process leaks when an exit event is registered
|
||||
WaitHandle.WaitAll (new WaitHandle[] {endEventErr});
|
||||
|
||||
OnExited (this, EventArgs.Empty);
|
||||
|
||||
//call this AFTER the exit event, or the ProcessWrapper may get disposed and abort this thread
|
||||
if (endEventOut != null)
|
||||
endEventOut.Set ();
|
||||
}
|
||||
}
|
||||
|
||||
private void CaptureError ()
|
||||
{
|
||||
try {
|
||||
char[] buffer = new char [1024];
|
||||
int nr;
|
||||
while ((nr = StandardError.Read (buffer, 0, buffer.Length)) > 0) {
|
||||
if (ErrorStreamChanged != null)
|
||||
ErrorStreamChanged (this, new string (buffer, 0, nr));
|
||||
}
|
||||
} finally {
|
||||
endEventErr.Set ();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
lock (lockObj) {
|
||||
if (endEventOut == null)
|
||||
return;
|
||||
}
|
||||
if (disposed)
|
||||
return;
|
||||
|
||||
if (!done)
|
||||
((IAsyncOperation)this).Cancel ();
|
||||
|
||||
captureOutputThread = captureErrorThread = null;
|
||||
// if we race with base.Exited, we don't want to hang on WaitAll (endEventOut, endEventErr)
|
||||
endEventOut.Set ();
|
||||
endEventErr.Set ();
|
||||
|
||||
endEventOut.Close ();
|
||||
endEventErr.Close ();
|
||||
endEventOut = endEventErr = null;
|
||||
endEventExit.Close ();
|
||||
|
||||
disposed = true;
|
||||
|
||||
base.Dispose (disposing);
|
||||
}
|
||||
|
||||
void CheckDisposed ()
|
||||
{
|
||||
if (endEventOut == null)
|
||||
if (disposed)
|
||||
throw new ObjectDisposedException ("ProcessWrapper");
|
||||
}
|
||||
|
||||
@@ -132,10 +127,16 @@ namespace Microsoft.Build.Utilities
|
||||
} catch {
|
||||
// Ignore
|
||||
}
|
||||
if (captureOutputThread != null)
|
||||
captureOutputThread.Abort ();
|
||||
if (captureErrorThread != null)
|
||||
captureErrorThread.Abort ();
|
||||
try {
|
||||
base.CancelOutputRead ();
|
||||
} catch (InvalidOperationException) {
|
||||
// Ignore: might happen if Start wasn't called
|
||||
}
|
||||
try {
|
||||
base.CancelErrorRead ();
|
||||
} catch (InvalidOperationException) {
|
||||
// Ignore: might happen if Start wasn't called
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
//FIXME: Log
|
||||
@@ -151,20 +152,14 @@ namespace Microsoft.Build.Utilities
|
||||
|
||||
void OnExited (object sender, EventArgs args)
|
||||
{
|
||||
try {
|
||||
if (!HasExited)
|
||||
WaitForExit ();
|
||||
} catch {
|
||||
// Ignore
|
||||
} finally {
|
||||
lock (lockObj) {
|
||||
done = true;
|
||||
try {
|
||||
if (completedEvent != null)
|
||||
completedEvent (this);
|
||||
} catch {
|
||||
// Ignore
|
||||
}
|
||||
lock (lockObj) {
|
||||
done = true;
|
||||
try {
|
||||
OperationHandler handler = completedEvent;
|
||||
if (handler != null)
|
||||
handler (this);
|
||||
} catch {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +148,16 @@ namespace Microsoft.Build.Utilities
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string GetPathToDotNetFrameworkBinFile (string fileName)
|
||||
{
|
||||
string dir = Path.Combine(Directory.GetParent(Directory.GetParent(lib_mono_dir).FullName).FullName, "bin");
|
||||
string file = Path.Combine (dir, fileName);
|
||||
if (File.Exists (file))
|
||||
return file;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string GetPathToDotNetFrameworkSdk (TargetDotNetFrameworkVersion version)
|
||||
{
|
||||
return GetPathToDotNetFramework (version);
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
2010-07-16 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* AbsoluteToRelativePath: New.
|
||||
* RelativeToAbsolutePath: New. Taken from monodevelop.
|
||||
* GetReservedMetadata: Correctly handle 'RelativeDir' .
|
||||
|
||||
2010-02-19 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ReservedNameUtils.cs (GetReservedMetadata): Add dictionary param
|
||||
@metadata. Use this to check for existing value of "RecursiveDir"
|
||||
metadata, use that if present.
|
||||
|
||||
2009-10-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ReservedNameUtils.cs: Fix 'RootDir', 'Directory'.
|
||||
(WithTrailingSlash): New.
|
||||
Update to use the new WithTrailingSlash method.
|
||||
|
||||
2009-09-08 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* ReservedNameUtils.cs (RelativeDir): Add a trailing \ .
|
||||
|
||||
2007-01-24 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* MonoLocationHelper.cs: Made class internal. It will be removed soon
|
||||
(all its functionality is in ToolLocationHelper and it wasn't
|
||||
documented yet)
|
||||
|
||||
2007-01-06 Marek Sieradzki <marek.sieradzi@gmail.com>
|
||||
|
||||
* MonoLocationHelper.cs: Commented GetXBuildDir () out.
|
||||
|
||||
2006-08-15 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ReservedNameUtils.cs: Removed redundant function call.
|
||||
|
||||
2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* ReservedNameUtils.cs: Added.
|
||||
|
||||
2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* MonoLocationHelper.cs: Added GetXBuildDir ().
|
||||
|
||||
2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* MonoLocationHelper.cs: Added.
|
||||
@@ -100,7 +100,7 @@ namespace Mono.XBuild.Utilities {
|
||||
else
|
||||
return String.Empty;
|
||||
case "identity":
|
||||
return Path.Combine (Path.GetDirectoryName (itemSpec), Path.GetFileName (itemSpec));
|
||||
return itemSpec;
|
||||
case "modifiedtime":
|
||||
if (File.Exists (itemSpec))
|
||||
return File.GetLastWriteTime (itemSpec).ToString ();
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
2008-08-06 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* CommandLineBuilderTest.cs: Add more tests.
|
||||
|
||||
2008-07-31 Ankit Jain <jankit@novell.com>
|
||||
|
||||
* CommandLineBuilderTest.cs: Add more tests.
|
||||
|
||||
2007-05-16 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilderTest.cs: Added tests for filenames that contain
|
||||
spaces.
|
||||
|
||||
2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilderTest.cs, TaskItemTest.cs: More tests.
|
||||
|
||||
* LoggerTest.cs: Added.
|
||||
|
||||
2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskLoggingHelperTest.cs, CommandLineBuilderTest.cs: Removed Ignore.
|
||||
|
||||
2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskLoggingHelperTest.cs:
|
||||
* CommandLineBuilderTest.cs: Added [Ignore].
|
||||
|
||||
2006-09-02 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskItemTest.cs: Fixed TestCloneCustomMetadata ().
|
||||
|
||||
2006-05-26 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilderTest.cs: Added tests for
|
||||
VerifyThrowNoEmbeddedQuotes () and IsQuotingRequired ().
|
||||
|
||||
2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* TaskLoggingHelperTest.cs: Added new tests.
|
||||
|
||||
2006-03-29 Crestez Leonard <cdleonard@gmail.com>
|
||||
|
||||
* TaskItemTest.cs: Added new tests.
|
||||
|
||||
2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
|
||||
|
||||
* CommandLineBuilderTest.cs: Added.
|
||||
* TaskItemTest.cs: Added new test.
|
||||
|
||||
Reference in New Issue
Block a user