Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 586 lines (482 sloc) 14.4 KB
#!/bin/bash
# Generic AIO installation script.
# Platform
pushd `dirname $0`
WGET="wget -c -t0"
if [ "`echo ${OSTYPE%%[0-9]*}`" = "darwin" ]
then
WGET="curl -O --retry 10"
fi
SOURCE_DIR=`pwd`
# Defaults
PREFIX="/usr/local"
TMP="/tmp"
LUA_SUFFIX=""
BUILD_LUA="yes"
INSTALL_LUA="yes"
USE_READLINE="yes"
NCURSES_DIR="/usr"
READLINE_DIR="/usr"
LUA_DIR="/usr"
LUA_INCDIR="/usr/include"
LUA_LIBDIR="/usr/lib"
LUA_BINDIR="/usr/bin"
SKIP_PACKAGE=no
SKIP_LR=no
BOOTSTRAP=no
UNAME="`uname`"
if ! [ "$UNAME" = "Linux" -o "$UNAME" = "Darwin" -o "$UNAME" = "FreeBSD" ]
then
USE_READLINE=no
fi
# Installer parameters
LUA_VERSION=5.1.4
PACKAGE=WSAPI
PACKAGE_OPT=wsapi
PACKAGE_ROCK=wsapi-xavante
INSTALLER_VERSION=0.6
PACKAGE_VERSION=1.4
LUAROCKS_REPO=http://luarocks.org/repositories/rocks
LUAROCKS_URL=http://www.luarocks.org/releases/luarocks-2.0.3.tar.gz
LUAROCKS_VERSION=2.0.3
# Help
show_help() {
cat <<EOF
$PACKAGE Installer version $INSTALLER_VERSION.
Installs Lua $LUA_VERSION, LuaRocks $LUAROCKS_VERSION and $PACKAGE $PACKAGE_VERSION.
--help This help.
--prefix=DIR Prefix where Lua should be installed.
Default is $PREFIX. Creates \$PREFIX/bin,
\$PREFIX/include, \$PREFIX/lib, \$PREFIX/share,
and \$PREFIX/man.
--include-dir=DIR Prefix where C header files should be installed.
Default is \$(PREFIX)/include
--lua-suffix=SUFFIX Versioning suffix to use in Lua filenames.
(lua vs. lua5.1, liblua.a vs. liblua5.1.a...)
--with-readline=DIR Prefix where Readline is installed.
Used by Lua.
Default is $READLINE_DIR
--with-ncurses=DIR Prefix where NCurses is installed.
Used by Lua when Readline is enabled.
Default is $NCURSES_DIR
--without-readline Disable Readline support when building Lua.
--from=URL Install from LuaRocks repository URL
--with-$PACKAGE_OPT=VERSION
Installs the provided $PACKAGE version instead
of $PACKAGE $PACKAGE_VERSION
--without-$PACKAGE_OPT
Does not install $PACKAGE, just Lua and LuaRocks
--without-rocks Does not install LuaRocks and $PACKAGE, just Lua
--bootstrap Also downloads Lua, LuaRocks, and the rocks for
$PACKAGE in the current path
EOF
}
# Parse options
while [ "$1" ]
do
value="`echo $1 | sed 's/.*=\(.*\)/\1/'`"
if echo "$value" | grep -q "~"
then
echo
echo '*WARNING*: the "~" sign is not expanded in flags.'
echo 'If you mean the home directory, use $HOME instead.'
echo
exit 1
fi
case "$1" in
--help)
show_help
exit 0
;;
--prefix=*)
PREFIX="$value"
PREFIX_SET=yes
;;
--include-dir=*)
INCLUDEDIR="$value"
INCLUDEDIR_SET=yes
;;
--lua-suffix=*)
LUA_SUFFIX="$value"
LUA_SUFFIX_SET=yes
;;
--with-readline=*)
READLINE_DIR="$value"
USE_READLINE=yes
;;
--from=*)
LUAROCKS_REPO="$value"
;;
--with-ncurses=*)
NCURSES_DIR="$value"
;;
--with-$PACKAGE_OPT=*)
PACKAGE_VERSION="$value"
;;
--without-$PACKAGE_OPT*)
SKIP_PACKAGE=yes
;;
--without-rocks*)
SKIP_PACKAGE=yes
SKIP_LR=yes
;;
--bootstrap*)
BOOTSTRAP=yes
;;
--without-readline)
USE_READLINE=no
;;
*)
echo "Error: Unknown flag: $1"
exit 1
;;
esac
shift
done
echo "$PACKAGE Installer version $PACKAGE_VERSION."
if ! [ "$INCLUDEDIR_SET" = "yes" ]
then
INCLUDEDIR="$PREFIX/include"
fi
LUA_DIR="$PREFIX"
LUA_INCDIR="$INCLUDEDIR"
LUA_LIBDIR="$LUA_DIR/lib"
LUA_BINDIR="$LUA_DIR/bin"
echo
echo "The name of the Lua executable is lua$LUA_SUFFIX"
echo "Lua installation prefix: $PREFIX"
echo "Include files: $PREFIX/include"
echo
echo "Will create bin, etc, lib, share, and man"
echo "directories in $PREFIX"
echo
echo "Proceed with setup? [Y/n] "
read YESNO
if [ "$YESNO" = "n" ]
then
echo "Setup aborted"
exit 1
fi
if [ "$YESNO" = "N" ]
then
echo "Setup aborted"
exit 1
fi
# External dependencies
test_package() {
package_keyword="$1"
package_name="$2"
with_flag="$3"
shift 3
if echo "$OPTIONAL_PACKAGES" | grep -q "$package_keyword"
then
echo -n "Checking $package_name... "
tried=""
while [ "$1" ]
do
test_file="$1"
if [ -e "$test_file" ]
then
echo "found: $test_file"
return 0
fi
tried="$tried $1"
shift
done
echo "not found:$tried"
echo
echo "Error: Could not verify the presence of $package_name."
echo "You may need to install development packages for $package_name."
if [ "$with_flag" ]
then
echo "If you are sure they are installed,"
echo "you can supply their location with $with_flag."
fi
echo "See --help for details."
exit 1
fi
}
if [ "$USE_READLINE" = "yes" ]
then
test_package "" "Readline" --with-readline $READLINE_DIR/include/readline/readline.h
if [ "$UNAME" = "Linux" ]
then
test_package "" "NCurses" --with-ncurses $NCURSES_DIR/include/ncurses.h
fi
fi
if [[ -f lua-$LUA_VERSION.tar.gz && -f luarocks-$LUAROCKS_VERSION.tar.gz && -d rocks ]]; then
echo "Installing from current directory..."
else
echo "Installing from the Net..."
mkdir -p /tmp/$PACKAGE_OPT-$PACKAGE_VERSION && pushd /tmp/$PACKAGE_OPT-$PACKAGE_VERSION
fi
cat <<EOF > Makefile
# This file was automatically generated by the configure script.
# Run "./configure --help" for details.
BUILD_LUA=$BUILD_LUA
INSTALL_LUA=$INSTALL_LUA
USE_READLINE=$USE_READLINE
PREFIX=$PREFIX
INCLUDEDIR=$INCLUDEDIR
LUA_SUFFIX=$LUA_SUFFIX
READLINE_DIR=$READLINE_DIR
NCURSES_DIR=$NCURSES_DIR
LUA_DIR=$LUA_DIR
LUA_INCDIR=$LUA_INCDIR
LUA_LIBDIR=$LUA_LIBDIR
LUA_BINDIR=$LUA_BINDIR
LUA_URL=http://www.lua.org/ftp
READLINE_LIBDIR=\$(READLINE_DIR)/lib
READLINE_INCLUDEDIR=\$(READLINE_DIR)/include
NCURSES_LIBDIR=\$(NCURSES_DIR)/lib
NCURSES_INCLUDEDIR=\$(NCURSES_DIR)/include
LUA_VERSION=$LUA_VERSION
PLATFORM_CFLAGS=-Wl,-E
PLATFORM_LDFLAGS=-lm -ldl
LIB_FLAG=-shared
ifeq (\$(shell uname -m | sed 's/i.86/i386/'),i386)
FPIC=
else
FPIC=-fpic
endif
LUA_LIB=\$(LUA_LIBDIR)/liblua\$(LUA_SUFFIX).a
LUA_DEFPATH=-DLUA_ROOT=\\\\\\"\$(LUA_DIR)\\\\\\"
ifeq (\$(USE_READLINE), yes)
LUA_READLINE_CFLAGS=-DLUA_USE_READLINE -I\$(READLINE_INCLUDEDIR)
LUA_READLINE_LIBS=-lreadline -lhistory -lncurses -L\$(READLINE_LIBDIR) -L\$(NCURSES_LIBDIR)
else
LUA_READLINE_CFLAGS=
LUA_READLINE_LIBS=
endif
LUA_MYCFLAGS=-DLUA_USE_POSIX -DLUA_USE_DLOPEN \$(LUA_READLINE_CFLAGS)
LUA_MYLIBS=\$(PLATFORM_CFLAGS) -ldl \$(LUA_READLINE_LIBS)
WGET=wget -c -t0
PLATFORM_BUILD=build
ifeq (\$(shell bash -c 'echo ${OSTYPE%%[0-9]*}'),darwin)
WGET=curl -O --retry 10
PLATFORM_BUILD=OSX-build
ifneq (\$(LUA_READLINE_LIBS),)
LUA_READLINE_LIBS=-lreadline -L\$(READLINE_LIBDIR)
endif
endif
ifeq (\$(shell uname -s),FreeBSD)
PLATFORM_BUILD=FreeBSD-build
endif
platform: \$(PLATFORM_BUILD)
OSX-build:
MACOSX_DEPLOYMENT_TARGET=10.3 \$(MAKE) \\
LUA_MYCFLAGS="-DLUA_USE_MACOSX \$(LUA_READLINE_CFLAGS)" \\
LUA_MYLIBS="\$(LUA_READLINE_LIBS)" \\
PLATFORM_CFLAGS="-dynamic" \\
PLATFORM_LDFLAGS="-lm -ldl" \\
LIB_FLAG="-bundle -undefined dynamic_lookup -all_load" \\
build
FreeBSD-build:
\$(MAKE) \\
LUA_MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" \\
LUA_MYLIBS="-Wl,-E" \\
PLATFORM_LDFLAGS="-lm" \\
build
LUA_TESTFILE=lua-\$(LUA_VERSION)/src/lua\$(LUA_SUFFIX)
fetch: lua-\$(LUA_VERSION)
lua-\$(LUA_VERSION).tar.gz:
\$(WGET) \$(LUA_URL)/\$@
lua-\$(LUA_VERSION):
\$(MAKE) lua-\$(LUA_VERSION).tar.gz
test -d \$@ || tar zxvpf lua-\$(LUA_VERSION).tar.gz
cd lua-\$(LUA_VERSION) && patch -p1 < ../lua-\$(LUA_VERSION)-easylua.diff
build: \$(LUA_TESTFILE)
\$(LUA_TESTFILE): lua-\$(LUA_VERSION)
cd lua-\$(LUA_VERSION) && \$(MAKE) \\
LUA_SUFFIX="\$(LUA_SUFFIX)" \\
INSTALL_INC="\$(LUA_INCDIR)" \\
MYCFLAGS="\$(LUA_DEFPATH) \$(LUA_MYCFLAGS)" \\
MYLIBS="\$(LUA_MYLIBS)" \\
CC="\$(CC)" \\
generic
install: build
cd lua-\$(LUA_VERSION) && \$(MAKE) \\
LUA_SUFFIX="\$(LUA_SUFFIX)" \\
INSTALL_INC="\$(LUA_INCDIR)" \\
INSTALL_TOP="\$(LUA_DIR)" \\
MYCFLAGS="\$(LUA_MYCFLAGS)" \\
MYLIBS="\$(LUA_MYLIBS)" \\
INSTALL_EXEC="install -p -m 0755" \\
INSTALL_DATA="install -p -m 0644" \\
STRIP="true" \\
install
clean:
if [ -d lua-\$(LUA_VERSION) ]; then \\
cd lua-\$(LUA_VERSION) && \$(MAKE) \\
LUA_SUFFIX="\$(LUA_SUFFIX)" \\
clean; \\
fi
klean:
rm -f lua-\$(LUA_VERSION).tar.gz
rm -rf lua-\$(LUA_VERSION)
rm -f Makefile
rm -f lua-\$(LUA_VERSION)-easylua.diff
EOF
cat <<EOF > lua-5.1.4-easylua.diff
diff -Naur lua-5.1.4-orig/Makefile lua-5.1.4/Makefile
--- lua-5.1.4-orig/Makefile 2007-03-25 11:44:39.000000000 -0300
+++ lua-5.1.4/Makefile 2007-05-11 16:08:02.000000000 -0300
@@ -41,10 +41,10 @@
PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
# What to install.
-TO_BIN= lua luac
+TO_BIN= lua\$(LUA_SUFFIX) luac\$(LUA_SUFFIX)
TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
-TO_LIB= liblua.a
-TO_MAN= lua.1 luac.1
+TO_LIB= liblua\$(LUA_SUFFIX).a
+TO_MAN= lua\$(LUA_SUFFIX).1 luac\$(LUA_SUFFIX).1
# Lua version and release.
V= 5.1
@@ -56,11 +56,15 @@
cd src && \$(MAKE) \$@
test: dummy
- src/lua test/hello.lua
+ src/lua\$(LUA_SUFFIX) test/hello.lua
install: dummy
- cd src && \$(MKDIR) \$(INSTALL_BIN) \$(INSTALL_INC) \$(INSTALL_LIB) \$(INSTALL_MAN) \$(INSTALL_LMOD) \$(INSTALL_CMOD)
+ cd src && \$(MKDIR) -p \$(INSTALL_BIN) \$(INSTALL_INC) \$(INSTALL_LIB) \$(INSTALL_MAN) \$(INSTALL_LMOD) \$(INSTALL_CMOD)
cd src && \$(INSTALL_EXEC) \$(TO_BIN) \$(INSTALL_BIN)
cd src && \$(INSTALL_DATA) \$(TO_INC) \$(INSTALL_INC)
cd src && \$(INSTALL_DATA) \$(TO_LIB) \$(INSTALL_LIB)
+ cp doc/lua.1 doc/t_lua.1
+ cp doc/luac.1 doc/t_luac.1
+ mv doc/t_lua.1 doc/lua\$(LUA_SUFFIX).1
+ mv doc/t_luac.1 doc/luac\$(LUA_SUFFIX).1
cd doc && \$(INSTALL_DATA) \$(TO_MAN) \$(INSTALL_MAN)
diff -Naur lua-5.1.4-orig/src/luaconf.h lua-5.1.4/src/luaconf.h
--- lua-5.1.4-orig/src/luaconf.h 2007-03-24 00:01:55.000000000 -0300
+++ lua-5.1.4/src/luaconf.h 2007-05-11 16:12:55.000000000 -0300
@@ -94,9 +94,11 @@
".\\\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll"
#else
-#define LUA_ROOT "/usr/local/"
-#define LUA_LDIR LUA_ROOT "share/lua/5.1/"
-#define LUA_CDIR LUA_ROOT "lib/lua/5.1/"
+#ifndef LUA_ROOT
+#define LUA_ROOT "/usr/local"
+#endif
+#define LUA_LDIR LUA_ROOT "/share/lua/5.1/"
+#define LUA_CDIR LUA_ROOT "/lib/lua/5.1/"
#define LUA_PATH_DEFAULT \\
"./?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \\
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua"
diff -Naur lua-5.1.4-orig/src/Makefile lua-5.1.4/src/Makefile
--- lua-5.1.4-orig/src/Makefile 2007-03-25 11:49:23.000000000 -0300
+++ lua-5.1.4/src/Makefile 2007-05-11 16:08:02.000000000 -0300
@@ -22,17 +22,17 @@
PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
-LUA_A= liblua.a
+LUA_A= liblua\$(LUA_SUFFIX).a
CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \\
lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \\
lundump.o lvm.o lzio.o
LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \\
lstrlib.o loadlib.o linit.o
-LUA_T= lua
+LUA_T= lua\$(LUA_SUFFIX)
LUA_O= lua.o
-LUAC_T= luac
+LUAC_T= luac\$(LUA_SUFFIX)
LUAC_O= luac.o print.o
ALL_O= \$(CORE_O) \$(LIB_O) \$(LUA_O) \$(LUAC_O)
@@ -93,7 +93,7 @@
\$(MAKE) all MYCFLAGS="-DLUA_USE_LINUX" MYLIBS="-Wl,-E -lreadline"
generic:
- \$(MAKE) all MYCFLAGS=
+ \$(MAKE) all
linux:
\$(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
EOF
echo
echo
echo "========================================================="
echo "Installing Lua $LUA_VERSION on $PREFIX"
echo "========================================================="
echo
echo
if [ "`uname -s`" = "FreeBSD" ]
then
MAKE=gmake
else
MAKE=make
fi
cleanup() {
echo
echo "Cleaning up..."
echo
if [ -d /tmp/$PACKAGE_OPT-$PACKAGE_VERSION ]; then
popd && rm -rf /tmp/$PACKAGE_OPT-$PACKAGE_VERSION
fi
}
$MAKE clean > /dev/null 2> /dev/null
$MAKE || (echo "Failed compiling Lua. Exiting..."; cleanup; exit 1)
$MAKE install || (echo "Failed installing Lua. Exiting..."; cleanup; exit 1)
echo
echo "Done. Lua is installed on $PREFIX."
echo
if ! [ $SKIP_LR = "yes" ]
then
echo
echo
echo "========================================================="
echo "Now installing LuaRocks $LUAROCKS_VERSION in $PREFIX."
echo "========================================================="
echo
echo
if [ $LUAROCKS_URL != "" ]
then
if [ ! -f luarocks-$LUAROCKS_VERSION.tar.gz ]; then
$WGET $LUAROCKS_URL
fi
tar zxvf luarocks-$LUAROCKS_VERSION.tar.gz
cd luarocks-$LUAROCKS_VERSION
else
cvs -d:pserver:anonymous@cvs.luaforge.net:/cvsroot/luarocks export -r HEAD luarocks
cd luarocks
fi
sh configure --prefix=$PREFIX --with-lua=$PREFIX \
--with-lua-include=$LUA_INCDIR && make && make install || (echo "Failed installing LuaRocks. Exiting..."; cleanup; exit 1)
cd ..
fi
if ! [ $SKIP_PACKAGE = "yes" ]
then
echo
echo
echo "========================================================="
echo "Now installing $PACKAGE in $PREFIX."
echo "========================================================="
echo
if [ -d rocks ]; then
$PREFIX/bin/luarocks install $PACKAGE_ROCK --only-from=`pwd`/rocks $PACKAGE_VERSION
else
$PREFIX/bin/luarocks install --from=$LUAROCKS_REPO $PACKAGE_ROCK $PACKAGE_VERSION
fi
fi
if [ $BOOTSTRAP = "yes" ]
then
cat <<EOF > /tmp/$PACKAGE_OPT-$PACKAGE_VERSION/pack_tree.lua
#!/usr/bin/env lua
require "luarocks.require"
require "lfs"
local prefix, tree, target = ...
rockspecs = io.popen('find "' .. tree .. '" -name "*.rockspec"')
if lfs.attributes(target, "mode") ~= "d" then
lfs.mkdir(target)
end
lfs.chdir(target)
for rockspec in rockspecs:lines() do
os.execute('"' .. prefix .. '/bin/luarocks" pack "' .. rockspec .. '"')
end
os.execute('"' .. prefix .. '/bin/luarocks-admin" make_manifest "' .. target .. '"')
EOF
cp /tmp/$PACKAGE_OPT-$PACKAGE_VERSION/lua-$LUA_VERSION.tar.gz "$SOURCE_DIR/"
cp /tmp/$PACKAGE_OPT-$PACKAGE_VERSION/luarocks-$LUAROCKS_VERSION.tar.gz "$SOURCE_DIR/"
"$PREFIX/bin/lua" /tmp/$PACKAGE_OPT-$PACKAGE_VERSION/pack_tree.lua "$PREFIX" "$PREFIX/lib/luarocks/rocks" "$SOURCE_DIR/rocks"
fi
cleanup
Something went wrong with that request. Please try again.