Re: Regarding exec task
No problem, In the mean time I will use a locally modified version of ant for the build. Thanks Vimil From: Stefan Bodewig To: dev@ant.apache.org Sent: Wednesday, February 22, 2012 8:35 AM Subject: Re: Regarding exec task On 2012-02-21, Vimil Saju wrote: > When you get a chance could you look at the patch for the below issue? That's Bugzilla issue 52706, right? Unfortunately I didn't have the time to review it, yet. > I really would like to see this make into ant 1.8.3 release. If it hadn't been for the regression 1.8.3 would be out there already. I really only want to address the single issue, cut the release and then go on after that. I understand this may be unsatisfying and can only promise to look into it soon after preparing the release so it'll end up in whatever comes after 1.8.3. Sorry Stefan - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
On 2012-02-21, Vimil Saju wrote: > When you get a chance could you look at the patch for the below issue? That's Bugzilla issue 52706, right? Unfortunately I didn't have the time to review it, yet. > I really would like to see this make into ant 1.8.3 release. If it hadn't been for the regression 1.8.3 would be out there already. I really only want to address the single issue, cut the release and then go on after that. I understand this may be unsatisfying and can only promise to look into it soon after preparing the release so it'll end up in whatever comes after 1.8.3. Sorry Stefan - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
On 2012-02-14, Vimil Saju wrote: > Your help is very much appreciated. Would using a custom > CommandLauncher make it possible for all the built-in ant tasks that > support fork attribute to use it. Right now Execute uses a static CommandLauncher instance which is initialize inside the static initializer ("class constructor"). CommandLauncher's responsibility is tro create the Process instances. We don't have a way to make Execute use a different CommandLauncher, but if there was (like using the ProcessHelper you describe) then it would be used by all Execute instances - or we could make it so. > I was thinking of an approach similar to how ant allows property > expansion to be customized. By just adding our own custom > PropertyHelper we can change how properties are expanded globally. If > we have something like that for processes too, it would be great. > I'd like to write a patch for this if possible, but I'd like to know > the best way to implement it, without breaking anything else. That's great. > My idea was to provide something like ProcessHelper class that can be > stored as a reference in the project. The Execute class then calls > this class to get an appropriate Process implementation. I'm not sure about the name ProcessHelper when CommandLauncher is already there, but I'm not good at names either. One thing you must keep in mind is Execute may not have access to a Project instance at all - it may know about one if setAntRun has been used, but using that is somewhat optional. Also some methods in Execute are static and don't provide a Project. There need to be usable defaults for this case. Stefan - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
Thanks Stefan, Your help is very much appreciated. Would using a custom CommandLauncher make it possible for all the built-in ant tasks that support fork attribute to use it. I was thinking of an approach similar to how ant allows property expansion to be customized. By just adding our own custom PropertyHelper we can change how properties are expanded globally. If we have something like that for processes too, it would be great. I'd like to write a patch for this if possible, but I'd like to know the best way to implement it, without breaking anything else. My idea was to provide something like ProcessHelper class that can be stored as a reference in the project. The Execute class then calls this class to get an appropriate Process implementation. This ProcessHelper class should then have the ability to provide a default Process implementation as well as a mechanism to delegate process creation to a user-defined class. Thanks again. Vimil From: Stefan Bodewig To: dev@ant.apache.org Sent: Tuesday, February 14, 2012 4:46 AM Subject: Re: Regarding exec task On 2012-02-12, Vimil Saju wrote: > So I thought of somehow extending the 'Execute' class of ant to use > the functionality of this 3rd party library, but I find that its > difficult if not impossible to extend this class. It has certainly not been designed for this, no. > Is it possible to make the Execute class in ant extensible so that it > becomes possible to plugin our own implementation of Process class. If you had a way to provide your own CommandLauncher then you could wrap Execute's default choice with your own implementation and return a Process class of your liking. This is not possible today, but I'm testing whether this would be enough for you. Stefan - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
On 2012-02-12, Vimil Saju wrote: > So I thought of somehow extending the 'Execute' class of ant to use > the functionality of this 3rd party library, but I find that its > difficult if not impossible to extend this class. It has certainly not been designed for this, no. > Is it possible to make the Execute class in ant extensible so that it > becomes possible to plugin our own implementation of Process class. If you had a way to provide your own CommandLauncher then you could wrap Execute's default choice with your own implementation and return a Process class of your liking. This is not possible today, but I'm testing whether this would be enough for you. Stefan - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
I could do that, but I will have to copy all the code from the execute class that does stuff like adding hooks to destroy processes when the jvm exits, parsing command-line arguments etc, when all I want to do is override how processes created by ant are destroyed. Besides even if I were to create another exec task, none of the built-in ant tasks that support the fork attribute (like java task) are going to call my class to create processes. From looking at the ant source code, I see that all tasks use to the 'Execute' class for process creation. I was thinking if the Execute class allowed the process creation code to be overridden then I could provide a new process destruction mechanism and it will be invoked by all the built-in tasks that support the fork attribute. From: wolfgang häfelinger To: Ant Developers List ; Vimil Saju Sent: Sunday, February 12, 2012 7:32 AM Subject: Re: Regarding exec task > Is it possible to make the Execute class in ant extensible so that it becomes > possible to plugin our own implementation of Process class. Implement your own ueber-exec taks which uses default exec class when not-on windows and otherwise makes use of your own jvnet-process exec task. On Sun, Feb 12, 2012 at 3:29 PM, Vimil Saju wrote: > > > > > Hi, > > I noticed that on windows, if I use the exec task to run a batch script which > in turn starts other processes then if kill ant then the sub-processes > created by the batch script still continues to run. I did some research on > google and found that the default java implementation of Process.destroy does > not kill the child processes created by a process on windows. I also found > that there are some third party libraries like jvnet that provide the > capability of killing all processes created by a process on windows. > > So I thought of somehow extending the 'Execute' class of ant to use the > functionality of this 3rd party library, but I find that its difficult if not > impossible to extend this class. I can't find a way to provide my > implementation of Process class that does something different when its > destroy method is called. Other core tasks such as java task directly create > an instance of the 'Execute' class which makes it difficult to globally > change how a forked process is destroyed within ant. > > Is it possible to make the Execute class in ant extensible so that it becomes > possible to plugin our own implementation of Process class. > > > Thanks > > Vimil -- Wolfgang Häfelinger - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org
Re: Regarding exec task
> Is it possible to make the Execute class in ant extensible so that it becomes > possible to plugin our own implementation of Process class. Implement your own ueber-exec taks which uses default exec class when not-on windows and otherwise makes use of your own jvnet-process exec task. On Sun, Feb 12, 2012 at 3:29 PM, Vimil Saju wrote: > > > > > Hi, > > I noticed that on windows, if I use the exec task to run a batch script which > in turn starts other processes then if kill ant then the sub-processes > created by the batch script still continues to run. I did some research on > google and found that the default java implementation of Process.destroy does > not kill the child processes created by a process on windows. I also found > that there are some third party libraries like jvnet that provide the > capability of killing all processes created by a process on windows. > > So I thought of somehow extending the 'Execute' class of ant to use the > functionality of this 3rd party library, but I find that its difficult if not > impossible to extend this class. I can't find a way to provide my > implementation of Process class that does something different when its > destroy method is called. Other core tasks such as java task directly create > an instance of the 'Execute' class which makes it difficult to globally > change how a forked process is destroyed within ant. > > Is it possible to make the Execute class in ant extensible so that it becomes > possible to plugin our own implementation of Process class. > > > Thanks > > Vimil -- Wolfgang Häfelinger - To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org