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>