[ANN] Rant 0.4.0


S

Stefan Lang

Rant is a flexible build tool written entirely in Ruby,
similar to Rake.

=3D=3D What's new in this release?

* Creating zip and gzipped tar archives on all supported platforms
without installing extra software. Seamless integration with
rant-import.
* The standard RubyPackage tasks create zip and gzipped tar archives
(and optional gem packages) on all platforms, including Windows,
now.
* rant-import recognizes the new directives +uncomment+ and +remove+.

I'd appreciate suggestions about new features, names, etc.

=3D=3D Installing Rant

You can install Rant as a RubyGem:
=C2=A0 =C2=A0 % gem install --remote rant

or download the package from RubyForge(http://rubyforge.org/frs/?group_id=
=3D615)
and install with install.rb:
=C2=A0 =C2=A0 % ruby install.rb

=3D=3D 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
=C2=A0 applications and libraries.
* Primitive support for compiling C# sources portably with csc, cscc
=C2=A0 and mcs.
* Dependency checking for C/C++ source files.
* Creating gzipped tar and zip archives =E2=80=94 without installing
additional software.
* Multiple buildfiles (e.g. one per directory).
* The rant-import command creates a monolithic rant script,
=C2=A0 so you don't depend on an rant installation anymore.

=2E.. and more, visit http://make.ruby-co.de

=3D=3D Examples

Creating a gzipped tar archive, save the following lines in a file
called Rantfile:
=20
import "package/tgz"
gen Package::Tgz, "foo", :files =3D> sys["{bin,lib,test}/**/*"]

Invoke rant:

% rant foo.tgz

Use rant-import to get a monolithic make script (depends only on a
standard ruby installation):

% rant-import --auto make.rb

Distribute this script (make.rb) with your software and your users
don't depend on rant. They can simply use:

% ruby make.rb foo.tgz

=3D=3D Credits

Rant comes with parts of Mauricio Fernandez and Austin Ziegler's
archive-tar-minitar to create (gzipped) tar archives on platforms
where no tar command is available.

Rant comes with parts of Thomas Sondergaard's rubyzip to create zip
archives on platforms where no zip command is available.

=3D=3D Resources

Current docs:: http://make.ruby-co.de
Rubyforge page:: http://rubyforge.org/projects/make/

=2D-=20
Stefan
 
Ad

Advertisements

A

Austin Ziegler

Rant comes with parts of Mauricio Fernandez and Austin Ziegler's
archive-tar-minitar to create (gzipped) tar archives on platforms
where no tar command is available.

I'm curious as to why you chose to import parts of the code rather
than making it a dependency?

FWIW, I never use tar anymore in generating my distributions, as the
only major features that ardchive-tar-minitar is missing is symlink
support (it's missing more than that, but the symlink support is the
only one that's really important for a distribution purpose).

-austin
--=20
Austin Ziegler * (e-mail address removed)
* Alternate: (e-mail address removed)
 
S

Stefan Lang

I'm curious as to why you chose to import parts of the code rather
than making it a dependency?

Actually, I thought long about this before I decided to import
the code. There are mainly two reasons:

First, rant-import allows you to create a build script, tailored
to the needs of your project, that can be used instead of an
rant installation and depends only on a standard ruby installation:
% rant-import --auto make.rb
Now, make.rb contains exactly the code needed to build/install
the software package. That would have been harder to implement
if minitar were a dependency.

The second reason is that probably many users don't use the
packaging/archiving features or have the tar/zip commands anyway.
=> It wouldn't make sense to force them to install minitar and rubyzip
and so all packaging code would have to check if there is any
chance to create a tar/zip archive.

I've made to many bad experiences with package managers and building
and installing software in the past. I want to keep building with
Rant simple and hassle free.
FWIW, I never use tar anymore in generating my distributions, as the
only major features that ardchive-tar-minitar is missing is symlink
support (it's missing more than that, but the symlink support is the
only one that's really important for a distribution purpose).

Yes, symlink support would be great. You don't intend to implement
it for archive-tar-minitar? Would it be much work? I'd do it if
only I knew more about the format of tar archives.
 
Ad

Advertisements

A

Austin Ziegler

Actually, I thought long about this before I decided to import the
code. There are mainly two reasons:

Ok. It just makes a bit more work for you ;) There's nothing, at
least in Minitar's licence, that prevents this.
Yes, symlink support would be great. You don't intend to implement
it for archive-tar-minitar? Would it be much work? I'd do it if
only I knew more about the format of tar archives.

Theoretically, it shouldn't take much work at all. I'd have to dive
back into the code, but I'm a bit busy with work, articles, and
preparing for RubyConf to do so right now.

The hardest part about symlink support is not adding, but unpacking,
because the behaviour on Windows must be to make an actual COPY of
the file in question, since there are no file symlinks on Windows.
(And I don't think that Ruby supports junctions for directory
hardlinks.)

-austin
--=20
Austin Ziegler * (e-mail address removed)
* Alternate: (e-mail address removed)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

[ANN] Rant 0.4.2 2
[ANN] Rant 0.4.4 1
[ANN] Rant 0.4.8 5
[ANN] Rant 0.4.6 2
[ANN] Rant 0.5.0 0
[ANN] Rant 0.3.8 10
[ANN] Rant 0.5.4 6
Rant 0.5.2 0

Top