setup.rb is the installer for (mainly) ruby scripts, and ruby extentions. You can automate installation and configuration of your program package with this script.
see "ruby setup.rb --help"
setup.rb can handle an archive which includes many packages. In this sentence "package" means a set of commands, ruby scripts, ruby extentions, and data files.
setup.rb requires that the archive is structured like this:
package-top/ setup.rb setup/ PACKAGE1.rb PACKAGE2.rb : lib/ [dirs...]/ANYFILES.rb ext/ [dirs...]/ANYFILES.c bin/ [dirs...]/ANYFILES share/ [dirs...]/ANYFILES
Each file/directories acts as below:
This is an example archive that I'm using really.
tmail-0.9.6/
|- setup.rb
|- setup/
| |- amstd.rb
| |- raccrt.rb
| |- strscan.rb
| o- tmail.rb
|- lib/
| |- amstd/
| | |- bench.rb
| | |- bug.rb
| | |- collfrom.rb
| | |- constdef.rb
| | |- dispatch.rb
| | |- errutil.rb
| | |- extmod.rb
| | |- fileutils.rb
| | |- futils.rb
| | |- gconst.rb
| | |- getdep.rb
| | |- info.rb
| | |- must.rb
| | |- pipeline.rb
| | |- rbparams.rb
| | |- recycle.rb
| | |- rubyemu.rb
| | |- strquote.rb
| | |- symbol.rb
| | |- timer.rb
| | |- to_s.rb
| | o- version.rb
| |- raccrt/
| | o- parser.rb
| |- strscan/
| | |- rscan.rb
| | |- scanner.rb
| | o- strscan.rb
| o- tmail/
| |- _loadlib.rb
| |- base64.rb
| |- encode.rb
| |- facade.rb
| |- field.rb
| |- info.rb
| |- loader.rb
| |- mail.rb
| |- net.rb
| |- parsemail.rb
| |- port.rb
| |- rmails.rb
| |- scanmail.rb
| o- tmail.rb
o- ext/
|- b64/
| |- MANIFEST
| |- depend
| |- extconf.rb
| o- tmbase64.c
|- cparse/
| |- MANIFEST
| |- cparse.c
| o- extconf.rb
|- cscan/
| |- MANIFEST
| |- cscan.c
| o- extconf.rb
o- mails/
|- MANIFEST
|- depend
|- extconf.rb
o- mails.c
This is setup/tmail.rb for "tmail" package.
class Installer_tmail < Installer DIRS = { 'lib/tmail' => 'tmail', 'ext/b64' => 'tmail', 'ext/mails' => 'tmail' } end
You can hook any tasks, such as "config" "setup". Create the file "setup/PACKAGE_NAME.rb" and write down in it like this:
class Installer_PACKAGE_NAME < Installer def setup Dir.mkdir 'doc' system "rd2html #{package_root}/doc/manual.rd > doc/manual.html" super end end
"pre_TASK" is invoked before the task is executed. "post_TASK" is invoked after the task is executed.
NOTE: Since setup.rb supports srcdir, it is not assured that the current directory equals the package top. Get real package's top directory by package_root().
GNU General Public License (GPL) version 2. For details, see file "GPL". NOTE: You CAN distribute your program under the any licenses you like. GPL does not force you to make your programs GPL if installer is GPLed one.
Copyright (c) 2000,2001 Minero Aoki <aamine@loveruby.net>