#!/bin/sh # A basic configure script for LuaRocks. # Not doing any fancy shell stuff here to keep good compatibility. # Defaults PREFIX="/usr/local" SYSCONFDIR="$PREFIX/etc/luarocks" ROCKS_TREE="$PREFIX" LUA_SUFFIX="" LUA_DIR="/usr" LUA_BINDIR="/usr/bin" LUA_INCDIR="/usr/include" LUA_LIBDIR="/usr/lib" LUA_VERSION="5.1" MULTIARCH_SUBDIR="" # ---------------------------------------------------------------------------- # FUNCTION DEFINITIONS # ---------------------------------------------------------------------------- # Help show_help() { cat </dev/null` if [ -n "$prog" ] then dirname "$prog" fi } die() { echo "$*" echo echo "configure failed." echo exit 1 } find_helper() { explanation="$1" shift tried="$*" while [ -n "$1" ] do found=`find_program "$1"` if [ -n "$found" ] then echo "$1 found at $found" HELPER=$1 return fi shift done echo "Could not find a $explanation. Tried: $tried." die "Make sure one of them is installed and available in your PATH." } case `echo -n x` in -n*) echo_n_flag='';; *) echo_n_flag='-n';; esac echo_n() { echo $echo_n_flag "$*" } # ---------------------------------------------------------------------------- # MAIN PROGRAM # ---------------------------------------------------------------------------- # Parse options while [ -n "$1" ] do value="`echo $1 | sed 's/[^=]*.\(.*\)/\1/'`" key="`echo $1 | sed 's/=.*//'`" if `echo "$value" | grep "~" >/dev/null 2>/dev/null` then echo echo '*WARNING*: the "~" sign is not expanded in flags.' echo 'If you mean the home directory, use $HOME instead.' echo fi case "$key" in --help) show_help exit 0 ;; --prefix) [ -n "$value" ] || die "Missing value in flag $key." PREFIX="$value" PREFIX_SET=yes ;; --sysconfdir) [ -n "$value" ] || die "Missing value in flag $key." SYSCONFDIR="$value" SYSCONFDIR_SET=yes ;; --rocks-tree) [ -n "$value" ] || die "Missing value in flag $key." ROCKS_TREE="$value" ROCKS_TREE_SET=yes ;; --force-config) FORCE_CONFIG=yes ;; --versioned-rocks-dir) VERSIONED_ROCKS_DIR=yes ;; --lua-suffix) [ -n "$value" ] || die "Missing value in flag $key." LUA_SUFFIX="$value" LUA_SUFFIX_SET=yes ;; --lua-version|--with-lua-version) [ -n "$value" ] || die "Missing value in flag $key." LUA_VERSION="$value" [ "$LUA_VERSION" = "5.1" -o "$LUA_VERSION" = "5.2" -o "$LUA_VERSION" = "5.3" ] || die "Invalid Lua version in flag $key." LUA_VERSION_SET=yes ;; --with-lua) [ -n "$value" ] || die "Missing value in flag $key." LUA_DIR="$value" LUA_DIR_SET=yes ;; --with-lua-bin) [ -n "$value" ] || die "Missing value in flag $key." LUA_BINDIR="$value" LUA_BINDIR_SET=yes ;; --with-lua-include) [ -n "$value" ] || die "Missing value in flag $key." LUA_INCDIR="$value" LUA_INCDIR_SET=yes ;; --with-lua-lib) [ -n "$value" ] || die "Missing value in flag $key." LUA_LIBDIR="$value" LUA_LIBDIR_SET=yes ;; --with-downloader) [ -n "$value" ] || die "Missing value in flag $key." case "$value" in wget|curl) LUAROCKS_DOWNLOADER="$value" ;; *) die "Invalid option: $value. See --help." ;; esac LUAROCKS_DOWNLOADER_SET=yes ;; --with-md5-checker) [ -n "$value" ] || die "Missing value in flag $key." case "$value" in md5sum|openssl|md5) LUAROCKS_MD5CHECKER="$value" ;; *) die "Invalid option: $value. See --help." ;; esac LUAROCKS_MD5CHECKER_SET=yes ;; *) die "Error: Unknown flag: $1" ;; esac shift done if [ "$PREFIX_SET" = "yes" -a ! "$SYSCONFDIR_SET" = "yes" ] then if [ "$PREFIX" = "/usr" ] then SYSCONFDIR=/etc/luarocks else SYSCONFDIR=$PREFIX/etc/luarocks fi fi if [ "$PREFIX_SET" = "yes" -a ! "$ROCKS_TREE_SET" = "yes" ] then ROCKS_TREE=$PREFIX fi detect_lua_version() { detected_lua=`$1 -e 'print(_VERSION:sub(5))' 2> /dev/null` if [ "$detected_lua" = "5.1" -o "$detected_lua" = "5.2" -o "$detected_lua" = "5.3" ] then echo "Lua version detected: $detected_lua" if [ "$LUA_VERSION_SET" != "yes" ] then LUA_VERSION=$detected_lua elif [ "$LUA_VERSION" != "$detected_lua" ] then die "This clashes with the value of --lua-version. Please check your configuration." fi fi } search_interpreter() { suffix="$1" if [ "$LUA_BINDIR_SET" = "yes" ] then find_lua="$LUA_BINDIR" elif [ "$LUA_DIR_SET" = "yes" ] then if [ -f "$LUA_DIR/bin/lua$suffix" ] then find_lua="$LUA_DIR/bin" fi else find_lua=`find_program lua$suffix` fi if [ -n "$find_lua" -a -x "$find_lua/lua$suffix" ] then echo "Lua interpreter found: $find_lua/lua$suffix..." LUA_SUFFIX=$suffix detect_lua_version "$find_lua/lua$LUA_SUFFIX" return 0 fi return 1 } if [ "$LUA_SUFFIX_SET" != "yes" ] then if [ "$LUA_VERSION_SET" = "yes" -a "$LUA_VERSION" = "5.1" ] then suffixes="5.1 51 -5.1 -51" elif [ "$LUA_VERSION_SET" = "yes" -a "$LUA_VERSION" = "5.2" ] then suffixes="5.2 52 -5.2 -52" elif [ "$LUA_VERSION_SET" = "yes" -a "$LUA_VERSION" = "5.3" ] then suffixes="5.3 53 -5.3 -53" else suffixes="5.3 53 -5.3 -53 5.2 52 -5.2 -52 5.1 51 -5.1 -51" fi lua_interp_found=no for suffix in "" `echo $suffixes` do search_interpreter "$suffix" && { lua_interp_found=yes break } done fi if [ "$LUA_DIR_SET" != "yes" ] then if [ -z "$find_lua" ] then echo_n "Looking for Lua... " find_lua=`find_program lua$LUA_SUFFIX` fi if [ -n "$find_lua" ] then LUA_DIR=`dirname $find_lua` LUA_BINDIR="$find_lua" echo "lua$LUA_SUFFIX found in \$PATH: $find_lua" else echo "lua$LUA_SUFFIX not found in \$PATH." die "You may want to use the flags --with-lua, --with-lua-bin and/or --lua-suffix. See --help." fi fi if [ "$LUA_INCDIR_SET" != "yes" ] then LUA_INCDIR="$LUA_DIR/include" fi if [ "$LUA_LIBDIR_SET" != "yes" ] then LUA_LIBDIR="$LUA_DIR/lib" fi if [ "$LUA_DIR_SET" = "yes" -a "$LUA_BINDIR_SET" != "yes" ] then LUA_BINDIR="$LUA_DIR/bin" fi if [ "$lua_interp_found" != "yes" ] then echo_n "Checking Lua interpreter... " if [ -x "$LUA_BINDIR/lua$LUA_SUFFIX" ] then echo "lua$LUA_SUFFIX found in $LUA_BINDIR" else echo "lua$LUA_SUFFIX not found (looked in $LUA_BINDIR)" die "You may want to use the flag --with-lua or --with-lua-bin. See --help." fi fi echo_n "Checking Lua includes... " lua_h="$LUA_INCDIR/lua.h" if [ -f "$lua_h" ] then echo "lua.h found in $lua_h" else v_dir="$LUA_INCDIR/lua/$LUA_VERSION" lua_h="$v_dir/lua.h" if [ -f "$lua_h" ] then echo "lua.h found in $lua_h" LUA_INCDIR="$v_dir" else d_dir="$LUA_INCDIR/lua$LUA_VERSION" lua_h="$d_dir/lua.h" if [ -f "$lua_h" ] then echo "lua.h found in $lua_h (Debian/Ubuntu)" LUA_INCDIR="$d_dir" else echo "lua.h not found (looked in $LUA_INCDIR, $v_dir, $d_dir)" die "You may want to use the flag --with-lua or --with-lua-include. See --help." fi fi fi if [ "$LUAROCKS_DOWNLOADER_SET" != "yes" ] then find_helper "downloader helper program" curl wget fetch LUAROCKS_DOWNLOADER=$HELPER fi if [ "$LUAROCKS_MD5CHECKER_SET" != "yes" ] then find_helper "MD5 checksum calculator" md5sum openssl md5 LUAROCKS_MD5CHECKER=$HELPER fi echo_n "Configuring for system... " if uname -s then LUAROCKS_UNAME_S=`uname -s` else die "Could not determine operating system. 'uname -s' failed." fi echo_n "Configuring for architecture... " if uname -m then LUAROCKS_UNAME_M=`uname -m` else die "Could not determine processor architecture. 'uname -m' failed." fi for v in 5.1 5.2 5.3; do if [ "$v" != "$LUA_VERSION" ]; then if [ -e "$PREFIX/share/lua/$v/luarocks/site_config.lua" ]; then LUA_OTHER_VERSION="$v" break fi fi done LUAROCKS_ROCKS_SUBDIR=/lib/luarocks/rocks if [ "$VERSIONED_ROCKS_DIR" = "yes" ] then LUAROCKS_ROCKS_SUBDIR=$LUAROCKS_ROCKS_SUBDIR-$LUA_VERSION echo "Using versioned rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR" elif [ -e "$PREFIX/share/lua/$LUA_VERSION/luarocks/site_config.lua" ] then echo "Existing installation detected." LUAROCKS_ROCKS_SUBDIR=`grep "LUAROCKS_ROCKS_SUBDIR" "$PREFIX/share/lua/$LUA_VERSION/luarocks/site_config.lua" | sed 's,.*=\[\[\(.*\)\]\],\1,'` echo "Using previously configured rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR" elif [ -n "$LUA_OTHER_VERSION" ] then echo "Existing installation detected for other Lua version ($LUA_OTHER_VERSION)." LUAROCKS_ROCKS_SUBDIR=$LUAROCKS_ROCKS_SUBDIR-$LUA_VERSION echo "Using versioned rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR" else echo "Using unversioned rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR" fi if [ "$LUAROCKS_UNAME_S" = Linux ] then GCC_ARCH=`gcc -print-multiarch 2>/dev/null` if [ -n "$GCC_ARCH" -a -d "/usr/lib/$GCC_ARCH" ] then MULTIARCH_SUBDIR="lib/$GCC_ARCH" elif [ -d "/usr/lib64" ] then # Useful for Fedora systems MULTIARCH_SUBDIR="lib64" fi fi if [ -f config.unix ]; then rm -f config.unix fi # Write config echo "Writing configuration..." echo rm -f built cat < config.unix # This file was automatically generated by the configure script. # Run "./configure --help" for details. LUA_VERSION=$LUA_VERSION PREFIX=$PREFIX SYSCONFDIR=$SYSCONFDIR ROCKS_TREE=$ROCKS_TREE LUA_SUFFIX=$LUA_SUFFIX LUA_DIR=$LUA_DIR LUA_DIR_SET=$LUA_DIR_SET LUA_INCDIR=$LUA_INCDIR LUA_LIBDIR=$LUA_LIBDIR LUA_BINDIR=$LUA_BINDIR FORCE_CONFIG=$FORCE_CONFIG LUAROCKS_UNAME_M=$LUAROCKS_UNAME_M LUAROCKS_UNAME_S=$LUAROCKS_UNAME_S LUAROCKS_DOWNLOADER=$LUAROCKS_DOWNLOADER LUAROCKS_MD5CHECKER=$LUAROCKS_MD5CHECKER LUAROCKS_ROCKS_SUBDIR=$LUAROCKS_ROCKS_SUBDIR MULTIARCH_SUBDIR=$MULTIARCH_SUBDIR EOF echo "Installation prefix: $PREFIX" echo "LuaRocks configuration directory: $SYSCONFDIR" echo "Using Lua from: $LUA_DIR" make clean > /dev/null 2> /dev/null echo echo "Done configuring." echo "- Type 'make build' and 'make install':" echo " to install to $PREFIX as usual." echo "- Type 'make bootstrap':" echo " to install LuaRocks in $PREFIX as a rock." echo