Re: [nant-dev] NAnt status report [2010-02-14]
Hey Charlies, Some quick responses: NAnt.build == I don't consider NAnt.build internal. The nightly.xml and release.xml are internal though, as these are used to build releases and nightly builds (or CI). In general, one should be able to build NAnt using its build file with the previous official release. But the recommended approach is to bootstrap NAnt (using make/nmake) and then using that bootstrapped version (with the NAnt build file) to build the full version. I think Ant uses the same approach. nant:scan-probing-paths === This function searches the probing paths - as defined in the NAnt configuration file - of the current target framework for a given file (generally an assembly). The advantage to using this function is that we can move around (third-party) assemblies without affecting our build file(s). For example: We could have a given assembly located in lib/net/2.0 today, because it contains code specific to .NET Framework 2.0 (hence we'd need a Mono specific version as well). If in a future release of that assembly that specific code is removed - making this assembly also usable in Mono - then we could just move it to lib/common/2.0 to make it available on Mono as well. By using this function, we make sure we use that the (third-party) libraries we use for building NAnt for a given target framework are the same libraries that we use for running NAnt on that framework (CLR). Linux/Mono support == It's ok if this is not high on your todo list, but you should keep it in mind. That way you don't introduce stuff that is not portable / cross-platform. Gert -Original Message- From: Charles Chan [mailto:cchan...@users.sourceforge.net] Sent: dinsdag 16 februari 2010 4:43 To: Gert Driesen; nant-developers@lists.sourceforge.net Subject: Re: [nant-dev] NAnt status report [2010-02-14] Hi Gert, Thanks for the information. I apologize if I appear to be stumbling a bit. More comments below... you feedback is much appreciated. Charles - Original Message From: Gert Driesen gert.drie...@telenet.be To: Charles Chan cchan...@users.sourceforge.net; nant-developers@lists.sourceforge.net Sent: Sun, February 14, 2010 11:10:00 PM Subject: RE: [nant-dev] NAnt status report [2010-02-14] Hey Charles, That function - which I consider to be internal - may indeed not be part of any official release. That is sort of what I figured and worried (see below). So in this case, you can only build NAnt with: * a nightly build (which hasn't been uploaded in quite a while due to scp/rsync issues with sourceforge) * a bootstrap of NAnt (though make/nmake) This last option is the one I'd recommend. If that's ok for you, I'd like you to revert the changes to the build file that removed the use of nant::scan-probing-paths. Use of this function gives us more flexibility as to the actual location of some libraries. I don't have a problem against it, but I just need to understand the mechanics of how the whole thing works. I believe the build/test/release process should be as simple as possible so any developers can pick it up -- fast. If it doesn't work out of the box, then most people probably will not spend time to figure out how to use it. This is my personal experience and probably echo a lot of other people. Also, there should be as little dependency as possible, and when there is, it needs to be fully documented. Anyone should be able to check out the code and go. This is also why I favor the use of CI server, it gives immediate response, and helps checks your code and the full build process. It also provides a secondary configuration to test the build against. Of course, I understand there might be reasons or difficulties that I am not aware of yet at this time, so I am open to ideas. Now back to the specific problem -- building NAnt with NAnt. 1) Is NAnt supposed to be built with make/nmake only? I guess my confusion is that every project (that uses NAnt) has a .build file in the base dir. However, building NAnt itself is probably different. Is NAnt.build internal? a) If 1) is true then: NAnt.build (nightly.xml and release.xml) is meant for internal build/release only. In that case, these files should not reside in the base folder. The average NAnt user does not need to be bothered and therefore it should be moved to a sub-folder. b) If 1) is false then: Users need to use NAnt.build and this is currently problematic because building the latest NAnt requires a non-released version of NAnt. I would suggest the following changes: * Change the trunk version to 0.87 * In NAnt.build, detect the runtime version of NAnt. If version 0.86, continue. Otherwise * Autodetect the platform, and use GNU make (linux) / nmake (windows) to compile bootstrap NAnt. This will probably involve the exec task. Note, however, we should not 'install' the bootstrap version. * Use the bootstrap NAnt to complete the rest of the compile
Re: [nant-dev] NAnt status report [2010-02-14]
Gert, A few more questions? Hope you don't mind ... :) Charles - Original Message From: Gert Driesen gert.drie...@telenet.be To: Charles Chan cchan...@users.sourceforge.net; nant-developers@lists.sourceforge.net Sent: Tue, February 16, 2010 12:27:03 PM Subject: RE: [nant-dev] NAnt status report [2010-02-14] Hey Charlies, Some quick responses: NAnt.build == I don't consider NAnt.build internal. The nightly.xml and release.xml are internal though, as these are used to build releases and nightly builds (or CI). In general, one should be able to build NAnt using its build file with the previous official release. But the recommended approach is to bootstrap NAnt (using make/nmake) and then using that bootstrapped version (with the NAnt build file) to build the full version. I think Ant uses the same approach. Thanks. I will experiment with this work flow and document it. What is the difference between a bootstrap version and the full version of NAnt? What is missing from the bootstrap version? docs? tests? nant:scan-probing-paths Thanks I will read. Linux/Mono support == It's ok if this is not high on your todo list, but you should keep it in mind. That way you don't introduce stuff that is not portable / cross-platform. Definitely. Portability is very important to me as well. That's why I will also test the process with Mono and Linux after I got the basics sorted out. __ Looking for the perfect gift? Give the gift of Flickr! http://www.flickr.com/gift/-- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] NAnt status report [2010-02-14]
Hey Charles, The bootstrap version only contains those assemblies that are required to build the full version. These assemblies are known to build on all supported CLR's . However, once the bootstrap version is built - the full version is immediately built using that bootstrap version. You could use the bootstrap target of the (n)make to only build the bootstrap version itself though. Aren't the instructions in README.txt (in the root of CVS module, and source distribution) clear about building NAnt ? Gert From: Charles Chan [mailto:cchan...@users.sourceforge.net] Sent: dinsdag 16 februari 2010 21:35 To: Gert Driesen; nant-developers@lists.sourceforge.net Subject: Re: [nant-dev] NAnt status report [2010-02-14] Gert, A few more questions? Hope you don't mind ... :) Charles - Original Message From: Gert Driesen gert.drie...@telenet.be To: Charles Chan cchan...@users.sourceforge.net; nant-developers@lists.sourceforge.net Sent: Tue, February 16, 2010 12:27:03 PM Subject: RE: [nant-dev] NAnt status report [2010-02-14] Hey Charlies, Some quick responses: NAnt.build == I don't consider NAnt.build internal. The nightly.xml and release.xml are internal though, as these are used to build releases and nightly builds (or CI). In general, one should be able to build NAnt using its build file with the previous official release. But the recommended approach is to bootstrap NAnt (using make/nmake) and then using that bootstrapped version (with the NAnt build file) to build the full version. I think Ant uses the same approach. Thanks. I will experiment with this work flow and document it. What is the difference between a bootstrap version and the full version of NAnt? What is missing from the bootstrap version? docs? tests? nant:scan-probing-paths Thanks I will read. Linux/Mono support == It's ok if this is not high on your todo list, but you should keep it in mind. That way you don't introduce stuff that is not portable / cross-platform. Definitely. Portability is very important to me as well. That's why I will also test the process with Mono and Linux after I got the basics sorted out. _ Be smarter than spam. See how smart SpamGuard is at giving junk email the boot with the http://ca.promos.yahoo.com/newmail/overview2/ All-new Yahoo! Mail No virus found in this incoming message. Checked by AVG - www.avg.com Version: 9.0.733 / Virus Database: 271.1.1/2690 - Release Date: 02/15/10 20:35:00 -- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] NAnt status report [2010-02-14]
Hi Gert, The part that really confused me was the fact the description inside README.txt seems to indicate the 'install' target must be used. make install MONO= MCS=csc prefix=installation path [DESTDIR=staging path] However, I just want to build it (not install it). After taking a closer look at the Makefiles, I now see there is an 'all' target: all: bootstrap build-nant That is exactly what I was really looking for. To help make it clear-er I have also updated README.txt with the following a. Overview --- The compilation process uses NAnt to build NAnt. The approach is to first compile a copy of NAnt (using make/nmake) for bootstrapping purpose. Next, the bootstrapped version of NAnt is used in conjunction with NAnt build file (NAnt.build) to build the full version. Thanks for your assistance. Charles P.S. As per request, I have also reverted the changes to the 13 files. __ Make your browsing faster, safer, and easier with the new Internet Explorer® 8. Optimized for Yahoo! Get it Now for Free! at http://downloads.yahoo.com/ca/internetexplorer/ -- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev ___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] NAnt status report [2010-02-14]
Hi Gert, Thanks for the information. I apologize if I appear to be stumbling a bit. More comments below... you feedback is much appreciated. Charles - Original Message From: Gert Driesen gert.drie...@telenet.be To: Charles Chan cchan...@users.sourceforge.net; nant-developers@lists.sourceforge.net Sent: Sun, February 14, 2010 11:10:00 PM Subject: RE: [nant-dev] NAnt status report [2010-02-14] Hey Charles, That function - which I consider to be internal - may indeed not be part of any official release. That is sort of what I figured and worried (see below). So in this case, you can only build NAnt with: * a nightly build (which hasn't been uploaded in quite a while due to scp/rsync issues with sourceforge) * a bootstrap of NAnt (though make/nmake) This last option is the one I'd recommend. If that's ok for you, I'd like you to revert the changes to the build file that removed the use of nant::scan-probing-paths. Use of this function gives us more flexibility as to the actual location of some libraries. I don't have a problem against it, but I just need to understand the mechanics of how the whole thing works. I believe the build/test/release process should be as simple as possible so any developers can pick it up -- fast. If it doesn't work out of the box, then most people probably will not spend time to figure out how to use it. This is my personal experience and probably echo a lot of other people. Also, there should be as little dependency as possible, and when there is, it needs to be fully documented. Anyone should be able to check out the code and go. This is also why I favor the use of CI server, it gives immediate response, and helps checks your code and the full build process. It also provides a secondary configuration to test the build against. Of course, I understand there might be reasons or difficulties that I am not aware of yet at this time, so I am open to ideas. Now back to the specific problem -- building NAnt with NAnt. 1) Is NAnt supposed to be built with make/nmake only? I guess my confusion is that every project (that uses NAnt) has a .build file in the base dir. However, building NAnt itself is probably different. Is NAnt.build internal? a) If 1) is true then: NAnt.build (nightly.xml and release.xml) is meant for internal build/release only. In that case, these files should not reside in the base folder. The average NAnt user does not need to be bothered and therefore it should be moved to a sub-folder. b) If 1) is false then: Users need to use NAnt.build and this is currently problematic because building the latest NAnt requires a non-released version of NAnt. I would suggest the following changes: * Change the trunk version to 0.87 * In NAnt.build, detect the runtime version of NAnt. If version 0.86, continue. Otherwise * Autodetect the platform, and use GNU make (linux) / nmake (windows) to compile bootstrap NAnt. This will probably involve the exec task. Note, however, we should not 'install' the bootstrap version. * Use the bootstrap NAnt to complete the rest of the compile (NAnt.build) Does this make sense? Can it be done? See any problem(s)? 2) Can you provide more details on what nant::scan-probing-paths() does? What is special about it? Sorry if I haven't been very responsive yet, but I hope to make up for this. Concerning your question about building on Linux: we actually have a linux box at our disposal through sponsorship by AOE media. I'll send you the details later (but don't hesitate to remind me if necessary). Thanks. In regards to Linux, don't worry too much about it. It's not high on my list of todo. __ Ask a question on any topic and get answers from real people. Go to Yahoo! Answers and share what you know at http://ca.answers.yahoo.com -- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev ___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] NAnt status report [2010-02-14]
Hey Charles, That function - which I consider to be internal - may indeed not be part of any official release. So in this case, you can only build NAnt with: * a nightly build (which hasn't been uploaded in quite a while due to scp/rsync issues with sourceforge) * a bootstrap of NAnt (though make/nmake) This last option is the one I'd recommend. If that's ok for you, I'd like you to revert the changes to the build file that removed the use of nant::scan-probing-paths. Use of this function gives us more flexibility as to the actual location of some libraries. Sorry if I haven't been very responsive yet, but I hope to make up for this. Concerning your question about building on Linux: we actually have a linux box at our disposal through sponsorship by AOE media. I'll send you the details later (but don't hesitate to remind me if necessary). The reason why Gerry was not able to contact me, is because my corporate e-mail address (which I used in NAnt sources) changed after a merger. I'll update all sources when I find a idle spot. Regards Gert -Original Message- From: Charles Chan [mailto:cchan...@users.sourceforge.net] Sent: maandag 15 februari 2010 3:38 To: nant-developers@lists.sourceforge.net Subject: [nant-dev] NAnt status report [2010-02-14] FYI. Based on the information from Gerry, I spend the past week trying to 'build NAnt with NAnt'. The first order of business was to understand how the whole thing works. After diving around at the code (adding more comments along the way), I focused on NAnt.build... (Long story short) After I determined the main tasks in the .build file, I just kept running 'nant' (command). Repeated, I keep getting errors similar to the one below: Unknown function 'nant::scan-probing-paths'. Expression: ${nant::scan-probing-paths('nunit.framework.dll')} I could not find any information regarding this function on the website. Although I could see the function in the latest trunk, but trunk is not a (real) release. So in the end, to replicate an 'average' NAnt user, I decided to install the last official release (0.86-beta1) and use that as the basis for the build. After replacing all instances of 'scan-probing-paths' and fix it with the correct path, the 'build' target finally works. I verified the changes both locally and on TeamCity [http://teamcity.codebetter.com/project.html?projectId=project69] Next steps (prioritized): * The 'test' target also compiles and runs, but a few tests are failing. Need to investigate. * Look at nightly.xml to generate nightly releases. * Look at release.xml to generate official releases. * Generate additional docs / comments to help others in future. * (Request from Leszek) Investigate 1) Mono and 2) Linux configuration. I am thinking of openSuse Build Service, but needs more investigation? [https://build.opensuse.org/] Regards, Charles __ Looking for the perfect gift? Give the gift of Flickr! http://www.flickr.com/gift/ -- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev ___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers No virus found in this incoming message. Checked by AVG - www.avg.com Version: 9.0.733 / Virus Database: 271.1.1/2688 - Release Date: 02/14/10 20:35:00 -- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev ___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers