> -----Original Message-----
> From: Phil Tomson [mailto:ptkwt / shell1.aracnet.com]
> Sent: Friday, February 08, 2002 8:26 PM
> To: ruby-talk ML; undisclosed-recipients:
> Subject: Re: Setting the Ruby
>
> ...
> be seen as a replacement for CVS?  If it was good people would use it and
> Ruby would get installed.  How about the discussion about a 'make'
> replacement that was big here a few months back?  Same story, if we had a
> viable make replacement that was Ruby based it would help spread Ruby.
>

I'm working on it (Rubuild), but so far, it has not "crystallized".
Expect an alpha version by the end of the month (maybe :)

So far, the idea is to have 'BuildSet' objects that logically group some
root 'BuildNode' objects. A 'BuildNode' can have explicit dependencies
on other 'BuildNode' objects. Each 'BuildNode' knows how to rebuild itself,
using some 'Tool' object.

To effectively trigger a build, one gives a 'Configuration' object
to the 'make' method of a 'BuildSet'. The combination of the 'BuildSet'
info and of the 'Configuration' info enables the right 'Tool' instance
to be created.

Ok, that was a very sketchy description :). Basically the build files
will look like:

#######################################################

require 'rubuild/qt2'     # triggers the require of the rest
include Rubuild

class Qt2Integration < BuildSet

  attr_reader :qruby		# so that it can be referenced from
					# another build file elsewhere

  def initialize
    super "qt2/integration"

    @qruby = Cplusplus::Library.new "qruby"

    @qruby << "qruby.cpp"				# the Library creates a
								# Cplusplus::Source BuildNode
								# for /\.cpp$/ dependencies

    @qruby << Cplusplus::Qt2::Modifier.new	# a tool modifier will change
								# the settings for the tools
								# used (here Cplusplus::Compiler
								# and Cplusplus::Linker)
    self << @qruby
  end
end


if $0 == __FILE__

  local = Qt2Integration.new

  local.make 				# default config is used,
						# object files will be created under
						# ENV['RUBUILD_POOL']/default/qt2/integration

  local.make (Configuration.new :debug => true)
						# will build in 'debug' mode under
						# ENV['RUBUILD_POOL']/debug/qt2/integration
end
####################################

(see also http://www.bct-portal.com/opensource/ruby/rubuild/index.html,
but the site is also quite 'alpha', and there is no package to download
right now).

-- Christian