Re: [nant-dev] NAnt status report [2010-02-14]

2010-02-16 Thread Gert Driesen
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]

2010-02-16 Thread Charles Chan
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]

2010-02-16 Thread Gert Driesen
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]

2010-02-16 Thread Charles Chan
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]

2010-02-15 Thread Charles Chan
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]

2010-02-14 Thread Gert Driesen
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