From lthiry at skynet.be Wed Jul 20 17:53:18 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Wed Jul 20 17:48:03 2005 Subject: [Rant] hello and test Message-ID: <42DEC7CE.6090903@skynet.be> Hello! Is the mailing list activated? Does it work? -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From lionel.thiry at gmail.com Wed Jul 20 17:51:56 2005 From: lionel.thiry at gmail.com (Lionel Thiry) Date: Wed Jul 20 18:01:30 2005 Subject: [Rant] hello and test Message-ID: <42DEC77C.3010308@gmail.com> Hello, this is a test: is the mailing list activated? -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From langstefan at gmx.at Wed Jul 20 18:18:57 2005 From: langstefan at gmx.at (Stefan Lang) Date: Wed Jul 20 18:11:04 2005 Subject: [Rant] Re: hello and test In-Reply-To: <42DEC77C.3010308@gmail.com> References: <42DEC77C.3010308@gmail.com> Message-ID: <200507210018.58577.langstefan@gmx.at> On Wednesday 20 July 2005 23:51, Lionel Thiry wrote: > Hello, > this is a test: is the mailing list activated? Yep, should work now :) -- Stefan From langstefan at gmx.at Fri Jul 22 14:27:32 2005 From: langstefan at gmx.at (Stefan Lang) Date: Fri Jul 22 14:19:20 2005 Subject: [Rant] Survey Message-ID: <200507222027.33205.langstefan@gmx.at> Hello, It seems that I have some spare time which I intend to invest in Rant development :) So I have to decide which features I should concentrate on. The following is a list of features I think of: * More (and fully portable) support for C/C++, similar to SCons: e.g. compile a program gen Program, "foo", ["main.c", "foo.c"] would create main.o, foo.o and foo on Posix with gcc and main.obj, foo.obj and foo.exe on Windows with MSVC++. Similar syntax for static and shared libraries. * Optional recognition of file changes with MD5 checksums instead of file modification times. * Basic support for OCaml * Scaffolding for Ruby projects e.g. with a new command called rant-admin: % rant-admin create ruby asks some questions then creates directories/files, eventuelly module, test and bin/*.rb stubs and an Rantfile with package, rdoc, testing and install tasks. * Improve C# support * Ruby 1.6.8 compatibility Please let me know what you would like to see implemented (doesn't need to be on the list above :). Should I create a survey on RubyForge and post to ruby-talk? Thanks, Stefan From lthiry at skynet.be Fri Jul 22 18:15:10 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Fri Jul 22 18:09:49 2005 Subject: [Rant] mailing list reply-to field Message-ID: <42E16FEE.7030207@skynet.be> Hello! It would be more practical if the reply-to field where pointing directly to the mailing list. Can it be set, please? -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From lthiry at skynet.be Fri Jul 22 18:17:38 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Fri Jul 22 18:12:11 2005 Subject: [Rant] Survey In-Reply-To: <200507222027.33205.langstefan@gmx.at> References: <200507222027.33205.langstefan@gmx.at> Message-ID: <42E17082.4040601@skynet.be> Stefan Lang a ?crit : >Hello, > >It seems that I have some spare time which I intend to >invest in Rant development :) >So I have to decide which features I should concentrate on. >The following is a list of features I think of: > >* More (and fully portable) support for C/C++, similar to SCons: > e.g. compile a program > > gen Program, "foo", ["main.c", "foo.c"] > > would create main.o, foo.o and foo on Posix with gcc > and main.obj, foo.obj and foo.exe on Windows with MSVC++. > Similar syntax for static and shared libraries. > >* Optional recognition of file changes with MD5 checksums > instead of file modification times. > >* Basic support for OCaml > >* Scaffolding for Ruby projects > e.g. with a new command called rant-admin: > > % rant-admin create ruby > > asks some questions then creates directories/files, > eventuelly module, test and bin/*.rb stubs and an > Rantfile with package, rdoc, testing and install tasks. > >* Improve C# support > >* Ruby 1.6.8 compatibility > >Please let me know what you would like to see implemented >(doesn't need to be on the list above :). > >Should I create a survey on RubyForge and post to ruby-talk? > >Thanks, > Stefan > > md5 checksum for file change recognition is important to me. Can you elaborate about the scaffolding? -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From lthiry at skynet.be Fri Jul 22 18:34:44 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Fri Jul 22 18:29:18 2005 Subject: [Rant] about md5 Message-ID: <42E17484.5030408@skynet.be> Hello! Change recognition by md5 checksum is a "must have" for me. In principle, it's easy to implement, you just need to manage two session: the current and the previous. But it is basically slow, without those techniques: *) when saving a checksum, also save date and/or size, these are faster to retrieve and compare *) once a target is build, do not save its real checksum, instead concatenate each checksum of the sources. I know scons does that by default, but it may be desactivated with some build options. There is another usefull technique with checksums: checksum the command line which where used to build a target. If this checksum change, then the target needs a rebuild. -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From langstefan at gmx.at Sat Jul 23 03:03:06 2005 From: langstefan at gmx.at (Stefan Lang) Date: Sat Jul 23 02:54:47 2005 Subject: [Rant] mailing list reply-to field In-Reply-To: <42E16FEE.7030207@skynet.be> References: <42E16FEE.7030207@skynet.be> Message-ID: <200507230903.06930.langstefan@gmx.at> On Saturday 23 July 2005 00:15, Lionel Thiry wrote: > Hello! > > It would be more practical if the reply-to field where pointing directly > to the mailing list. Can it be set, please? Yes, you're right, it should work now. -- Stefan From langstefan at gmx.at Sat Jul 23 03:36:58 2005 From: langstefan at gmx.at (Stefan Lang) Date: Sat Jul 23 03:28:36 2005 Subject: [Rant] about md5 In-Reply-To: <42E17484.5030408@skynet.be> References: <42E17484.5030408@skynet.be> Message-ID: <200507230936.58735.langstefan@gmx.at> On Saturday 23 July 2005 00:34, Lionel Thiry wrote: > Hello! > > Change recognition by md5 checksum is a "must have" for me. > In principle, it's easy to implement, you just need to manage two > session: the current and the previous. > But it is basically slow, without those techniques: > *) when saving a checksum, also save date and/or size, these are faster > to retrieve and compare > *) once a target is build, do not save its real checksum, instead > concatenate each checksum of the sources. > I know scons does that by default, but it may be desactivated with some > build options. > > There is another usefull technique with checksums: checksum the command > line which where used to build a target. > If this checksum change, then the target needs a rebuild. OK, I already considered most of this and the last days I've implemented a class which allows one to store arbitrary meta information about a target, which could be used to store md5 checksums, commandlines and so forth. The information is saved in a file called ".rant.meta" in each project directory (the root dir containing the root Rantfile and all dirs mentioned with "subdirs"). The file has a very simple text/line oriented fast-to-read and write format (but of course it's read and written by pure Ruby code and thus could get slow if the file grows really big). It can be used currently in the following way from Rantfiles (and thus also from other code extending Rant): # just a proof of concept require 'md5' import "metadata" gen Task, "file1" => ["file2", "file3"] do |t| sig = nil t.needed { return true unless test(?f, t.name) sig = "" t.prerequisites.each { |pre| sig << MD5.hexdigest(File.new(pre)) } # fetch will read ".rant.meta" if necessary old_sig = var[:__meta_data__].fetch("md5checksum", t.name) sig != old_sig # rebuild if signature changed } t.act { sys "" # command didn't blow up, set the new signature var[:__meta_data__].set("md5checksum", sig, t.name) } end What do you think of it? The question about the user interface for this is open, I'll show some possibilities in another post. -- Stefan From langstefan at gmx.at Sat Jul 23 18:26:40 2005 From: langstefan at gmx.at (Stefan Lang) Date: Sat Jul 23 18:18:16 2005 Subject: [Rant] First working implemention of md5 checksum file change recognition Message-ID: <200507240026.41547.langstefan@gmx.at> Excellent news! Nothing beats Ruby. After a few hours of work, the following is possible. # automatically imports "signature/md5" and "metadata" # since we didn't so explicitely import "signedfile" # this normal file task... file "a" => ["f1", "f2", "f3"] do |t| sys "cat f1 f2 f3 > #{t.name}" end # ...is equivalent to the following task gen SignedFile, "b" => ["f1", "f2", "f3"] do |t| sys "cat f1 f2 f3 > #{t.name}" end Now, file task "a" works with modification times and file task "b" with md5 checksums. If all goes well, tomorrow we'll have: import "signall" # and now, all file task use a SignedFile instead # of a normal FileTask file "a" => ["f1", "f2", "f3"] ... I haven't tested it much but I made a primitive benchmark: On my Athlon 900 Rant needs about 0.5 s to do the dependency checking for a file task with about 200 files (with a total size of about 12.5 MB) as prerequisites (i.e. source files). Should be acceptable? -- Stefan From lthiry at skynet.be Sun Jul 24 23:27:34 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Sun Jul 24 23:22:03 2005 Subject: [Rant] First working implemention of md5 checksum file change recognition In-Reply-To: <200507240026.41547.langstefan@gmx.at> References: <200507240026.41547.langstefan@gmx.at> Message-ID: <42E45C26.9020604@skynet.be> Stefan Lang a ?crit : >Excellent news! >Nothing beats Ruby. After a few hours of work, the following is possible. > > # automatically imports "signature/md5" and "metadata" > # since we didn't so explicitely > import "signedfile" > > # this normal file task... > file "a" => ["f1", "f2", "f3"] do |t| > sys "cat f1 f2 f3 > #{t.name}" > end > > # ...is equivalent to the following task > gen SignedFile, "b" => ["f1", "f2", "f3"] do |t| > sys "cat f1 f2 f3 > #{t.name}" > end > >Now, file task "a" works with modification times and >file task "b" with md5 checksums. > >If all goes well, tomorrow we'll have: > > import "signall" > > # and now, all file task use a SignedFile instead > # of a normal FileTask > file "a" => ["f1", "f2", "f3"] ... > >I haven't tested it much but I made a primitive benchmark: >On my Athlon 900 Rant needs about 0.5 s to do the dependency >checking for a file task with about 200 files (with a total size >of about 12.5 MB) as prerequisites (i.e. source files). >Should be acceptable? > > > I lack too much experience in md5 checksum benchmarking as with Rant to answer adequately to such a question. But sincerely, I'd primarly say "yes, it is" :) -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From lthiry at skynet.be Thu Jul 28 11:51:04 2005 From: lthiry at skynet.be (Lionel Thiry) Date: Thu Jul 28 11:45:26 2005 Subject: [Rant] Survey In-Reply-To: <200507222027.33205.langstefan@gmx.at> References: <200507222027.33205.langstefan@gmx.at> Message-ID: <42E8FEE8.3060101@skynet.be> Stefan Lang a ?crit : >Hello, > >It seems that I have some spare time which I intend to >invest in Rant development :) >So I have to decide which features I should concentrate on. >The following is a list of features I think of: > >* More (and fully portable) support for C/C++, similar to SCons: > e.g. compile a program > > gen Program, "foo", ["main.c", "foo.c"] > > would create main.o, foo.o and foo on Posix with gcc > and main.obj, foo.obj and foo.exe on Windows with MSVC++. > Similar syntax for static and shared libraries. > > This feature is really insteresting. But wouldn't it need some configuration before it can be used? How would that work? >* Basic support for OCaml > > Why OCaml? Have you special interest in this language? >* Scaffolding for Ruby projects > e.g. with a new command called rant-admin: > > % rant-admin create ruby > > asks some questions then creates directories/files, > eventuelly module, test and bin/*.rb stubs and an > Rantfile with package, rdoc, testing and install tasks. > > When you say ruby project, you mean C extension to ruby? Is it your intent to provide a Rant substitution for the extconf.rb mechanism? If it's the case, I'd be strongly interested. (and it would be even more powerfull with the "guess the compilo" scons alike feature) -- Lionel Thiry Personal web site: http://users.skynet.be/lthiry/ From langstefan at gmx.at Thu Jul 28 13:17:38 2005 From: langstefan at gmx.at (Stefan Lang) Date: Thu Jul 28 13:08:30 2005 Subject: [Rant] Survey In-Reply-To: <42E8FEE8.3060101@skynet.be> References: <200507222027.33205.langstefan@gmx.at> <42E8FEE8.3060101@skynet.be> Message-ID: <200507281917.38836.langstefan@gmx.at> On Thursday 28 July 2005 17:51, Lionel Thiry wrote: > Stefan Lang a ?crit : > >* More (and fully portable) support for C/C++, similar to SCons: > > e.g. compile a program > > > > gen Program, "foo", ["main.c", "foo.c"] > > > > would create main.o, foo.o and foo on Posix with gcc > > and main.obj, foo.obj and foo.exe on Windows with MSVC++. > > Similar syntax for static and shared libraries. > > This feature is really insteresting. But wouldn't it need some > configuration before it can be used? How would that work? Yes, configuration would be needed, but Rant would try to automate it. Before using Program, one would need e.g. to import "c". This would create a task, called e.g. configure which does the necessary environment and other checks and save the results in a file. All tasks created by Program would depend on this configure task. The implementation wouldn't be too hard, it's much harder to get the design right. > >* Basic support for OCaml > > Why OCaml? Have you special interest in this language? Yes, I like it somehow. So far I haven't done much with it. > >* Scaffolding for Ruby projects > > e.g. with a new command called rant-admin: > > > > % rant-admin create ruby > > > > asks some questions then creates directories/files, > > eventuelly module, test and bin/*.rb stubs and an > > Rantfile with package, rdoc, testing and install tasks. > > When you say ruby project, you mean C extension to ruby? Is it your > intent to provide a Rant substitution for the extconf.rb mechanism? If > it's the case, I'd be strongly interested. (and it would be even more > powerfull with the "guess the compilo" scons alike feature) At first I thought about pure Ruby projects. I find myself doing the same things whenever I start a new Ruby project. But when general support for C/C++ is implemented, the step to replace extconf.rb wouldn't be too far. -- Stefan From langstefan at gmx.at Thu Jul 28 13:30:49 2005 From: langstefan at gmx.at (Stefan Lang) Date: Thu Jul 28 13:21:41 2005 Subject: [Rant] MD5 signatures work! Message-ID: <200507281930.50548.langstefan@gmx.at> Rant is capable to detect source changes based on MD5 checksums now! To enable it, put import "md5" at the top of the Rantfile. I'll release it one of the next days (probably tomorrow). It would be nice if you could test it for your project(s) if you're using Rant already. In this case, I'll send the current development version. Kind regards, Stefan From langstefan at gmx.at Fri Jul 29 14:36:25 2005 From: langstefan at gmx.at (Stefan Lang) Date: Fri Jul 29 14:27:07 2005 Subject: [Rant] Rant 0.4.4 released Message-ID: <200507292036.26306.langstefan@gmx.at> == What's new in this release? Besides internal changes, this release is backwards compatible to 0.4.2. Fixes and minor improvements: * Rant is Ruby 1.8.0 compatible now. * Fixes for filelists. * A fix for Directory generator (and thus dependent features). New features: * Optional recognition of file changes based on MD5 checksums. To enable this feature, just put: import "md5" at the top of the Rantfile. == Installing Rant You can install Rant as a RubyGem: ? ? % gem install --remote rant or download the package from RubyForge(http://rubyforge.org/frs/?group_id=615) and install with install.rb: ? ? % ruby install.rb == More about Rant The equivalent to a Makefile for make is the Rantfile. An Rantfile is actually a valid Ruby script that is read by the rant command. Rant currently features: * Defining custom tasks * Automated packaging, testing and RDoc generation for Ruby ? applications and libraries. * Primitive support for compiling C# sources portably with csc, cscc ? and mcs. * Dependency checking for C/C++ source files. * Creating gzipped tar and zip archives ? without installing ? additional software. * Optional recognition of file changes based on MD5 checksums instead of file modification times. * Multiple buildfiles (e.g. one per directory). * The rant-import command creates a monolithic rant script, ? so you don't depend on an rant installation anymore. ... and more, visit http://make.ruby-co.de Rubyforge page:: http://rubyforge.org/projects/make/ -- Stefan