setup.rb/install.rb is the installer for ruby scripts/extentions. You can automate installation and configuration of your program package by using this script. install.rb is the one for single library, setup.rb is the one for multi packages.
Just type 3 lines below. ("#" line may require root privilege)
$ ruby install.rb config $ ruby install.rb setup # ruby install.rb install
when setup.rb
$ ruby setup.rb config $ ruby setup.rb setup # ruby setup.rb install
Usage of install.rb/setup.rb is:
ruby install.rb [] ruby install.rb [ ]
Global Options
Tasks
In addition, setup.rb accepts these options:
[NOTE] You can pass options for extconf.rb like this:
ruby install.rb config -- --with-tklib=/usr/lib/libtk-jp.so.8.0
Options for install
install.rb can handle one set of ruby scripts, ruby extentions, commands, and data file. Call them a "package". install.rb requires that the archive is structured like this:
package-top/ install.rb lib/ ruby scripts ext/ ruby extentions bin/ commands data/ data files
Each file/directories acts as below:
These directories includes data files which are to be installed. This directory tree is mirrored to the target directory, from lib/ to RUBYLIB/, from bin/ to BINDIR/, from ext/ to RUBYLIB/ARCH/ ....
Use lib/ for ruby scripts, bin/ for commands, share/ for any other data files.
ext/ includes ruby extentions. If you want to install RUBYLIB/ARCH/someext.so, create a directory ext/someext/ and put source files into it.
[WARNING] Every extention source directory MUST includes "MANIFEST" file. install.rb will complies the only directory which includes MANIFEST file.
setup.rb can handle an archive which includes multiple packages. "package" means a set of install.rb's archive.
setup.rb requires this type of structure:
package-top/ setup.rb packages/ tmail/ (tmail package) lib/ ext/ bin/ data/ raccrt/ (raccrt package) : strscan/ (strscan package) : amstd/ (amstd package) :
You can hook any tasks, such as "config" "setup". For example, you want to make some files in lib/tmail/ when setup. Then create file "lib/tmail/pre-setup.rb" and put this:
# pre-setup.rb # process grammer file system "racc #{srcdir_root + '/src/mp.y'} -o mailp.rb" # require all ruby scripts in this directory from _loadlib.rb. list = Dir.glob(curr_srcdir + '/*.rb').collect {|n| File.basename(n) } File.open( '_loadlib.rb', 'w' ) {|f| f.puts list.collect {|n| "require 'tmail/" + n + "'" } } File.open( '../tmail.rb', 'w' ) {|f| f.puts "require 'tmail/_loadlib'" }
This file is evaluated on task "setup" in the directory, before processing any other thing. Acceptable hook file name is:
{pre,post}-{config,setup,install,clean}.rb
[NOTE] You can also put hook files in the top directory of archive and/or the type-root directory (bin/, lib/,...).
install.rb/setup.rb supports srcdir/objdir. In other words, you can compile everything out of the source directory.
If you write hooks, you should also supports srcdir/objdir system. When you read source code, read it from srcdir. When you write anything, write it to the current directory. There's some APIs to help your work:
GNU Lesser General Public License (LGPL) version 2. For details, see file "LGPL". NOTE: You CAN distribute your program under the any licenses you like. LGPL does not force you to make your programs LGPL if the installer is GPLed one.
Copyright (c) 2000,2001 Minero Aoki <aamine@loveruby.net>