Installation improvements (auto-creation of data directories)
authorMatthew Wild <mwild1@gmail.com>
Sun, 30 Nov 2008 04:22:43 +0000 (04:22 +0000)
committerMatthew Wild <mwild1@gmail.com>
Sun, 30 Nov 2008 04:22:43 +0000 (04:22 +0000)
Makefile
configure
prosody

index bc53452580780d32a590db9890e40b5b5c2cf5db..6676fc5bfcac0321b196f05b9130a904a4b27836 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,16 +6,18 @@ CONFIG = $(DESTDIR)$(SYSCONFDIR)
 MODULES = $(DESTDIR)$(PREFIX)/lib/prosody/modules
 SOURCE = $(DESTDIR)$(PREFIX)/lib/prosody
 
+DATADIR?=data
+
 INSTALLEDSOURCE = $(PREFIX)/lib/prosody
 INSTALLEDCONFIG = $(SYSCONFDIR)
 INSTALLEDMODULES = $(PREFIX)/lib/prosody/modules
+INSTALLEDDATA = $(DATADIR)
 
-
-all:
+all: prosody.install prosody.cfg.lua.install
        $(MAKE) all -C util-src
 
 install: prosody.install prosody.cfg.lua.install util/encodings.so util/encodings.so
-       install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE)
+       install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE) $(DATADIR)
        install -d $(CONFIG)/certs
        install -d $(SOURCE)/core $(SOURCE)/net $(SOURCE)/util
        install ./prosody.install $(BIN)/prosody
@@ -40,7 +42,12 @@ util/hashes.so:
        $(MAKE) install -C util-src
 
 prosody.install: prosody
-       sed "s|^CFG_SOURCEDIR=.*;$$|CFG_SOURCEDIR='$(INSTALLEDSOURCE)';|;s|^CFG_CONFIGDIR=.*;$$|CFG_CONFIGDIR='$(INSTALLEDCONFIG)';|;s|^CFG_PLUGINDIR=.*;$$|CFG_PLUGINDIR='$(INSTALLEDMODULES)/';|;" prosody > prosody.install
+       cp prosody prosody.install
+       sed -i "s|^CFG_SOURCEDIR=.*;$$|CFG_SOURCEDIR='$(INSTALLEDSOURCE)';|;" prosody.install
+       sed -i "s|^CFG_CONFIGDIR=.*;$$|CFG_CONFIGDIR='$(INSTALLEDCONFIG)';|;" prosody.install
+       sed -i "s|^CFG_DATADIR=.*;$$|CFG_DATADIR='$(INSTALLEDDATA)';|;" prosody.install
+       # The trailing slash is intentional in this one
+       sed -i "s|^CFG_PLUGINDIR=.*;$$|CFG_PLUGINDIR='$(INSTALLEDMODULES)/';|;" prosody.install
 
 prosody.cfg.lua.install:
        sed 's|certs/|$(INSTALLEDCONFIG)/certs/|' prosody.cfg.lua.dist > prosody.cfg.lua.install
index 9d071bc16147520bec79b865c368c5d34c494485..dda98cd7b399ba04be5cf33a349009bb2d2abcdf 100755 (executable)
--- a/configure
+++ b/configure
@@ -4,13 +4,14 @@
 
 PREFIX=/usr/local
 SYSCONFDIR="$PREFIX/etc/prosody"
+DATADIR="$PREFIX/var/lib/prosody"
 LUA_SUFFIX=""
 LUA_DIR="/usr"
 LUA_BINDIR="/usr/bin"
 LUA_INCDIR="/usr/include"
 LUA_LIBDIR="/usr/lib"
 IDN_LIB=idn
-OPENSSL_LIB=ssl
+OPENSSL_LIB=crypto
 
 # Help
 
@@ -23,6 +24,8 @@ Configure Prosody prior to building.
                             Default is $PREFIX
 --sysconfdir=DIR            Location where the config file should be installed.
                             Default is \$PREFIX/etc/prosody
+--datadir=DIR               Location where the server data should be stored.
+                            Default is \$PREFIX/var/lib/prosody
 --lua-suffix=SUFFIX         Versioning suffix to use in Lua filenames.
                             Default is "$LUA_SUFFIX" (lua$LUA_SUFFIX...)
 --with-lua=PREFIX           Use Lua from given prefix.
@@ -60,6 +63,10 @@ do
       PREFIX="$value"
       PREFIX_SET=yes
       ;;
+   --data-dir=*)
+       DATADIR="$value"
+       DATADIR_SET=yes
+      ;;
    --require-config)
       REQUIRE_CONFIG=yes
       ;;
@@ -100,6 +107,14 @@ then
    fi
 fi
 
+if [ "$PREFIX_SET" = "yes" -a ! "$DATADIR_SET" = "yes" ]
+then
+   if [ "$PREFIX" = "/usr" ]
+   then DATADIR=/var/lib/prosody
+   else DATADIR=$PREFIX/var/lib/prosody
+   fi
+fi
+
 find_program() {
    path="$PATH"
    item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
@@ -221,6 +236,7 @@ cat <<EOF > config.unix
 
 PREFIX=$PREFIX
 SYSCONFDIR=$SYSCONFDIR
+DATADIR=$DATADIR
 LUA_SUFFIX=$LUA_SUFFIX
 LUA_DIR=$LUA_DIR
 LUA_INCDIR=$LUA_INCDIR
diff --git a/prosody b/prosody
index 77f72e7ff1c12f51e61d5757ea0d2071f50638de..dd3cd06826e7ff955cfb0318e316609450015713 100755 (executable)
--- a/prosody
+++ b/prosody
@@ -5,28 +5,20 @@
 CFG_SOURCEDIR=nil;
 CFG_CONFIGDIR=nil;
 CFG_PLUGINDIR=nil;
+CFG_DATADIR=nil;
 
 -- -- -- -- -- --
 
 if CFG_SOURCEDIR then
-       if os.getenv("HOME") then
-               CFG_SOURCEDIR = CFG_SOURCEDIR:gsub("^~", os.getenv("HOME"));
-       end
        package.path = CFG_SOURCEDIR.."/?.lua;"..package.path
        package.cpath = CFG_SOURCEDIR.."/?.so;"..package.cpath
 end
 
-if CFG_CONFIGDIR then
-       if os.getenv("HOME") then
-               CFG_CONFIGDIR = CFG_CONFIGDIR:gsub("^~", os.getenv("HOME"));
-       end
-end    
-
-if CFG_PLUGINDIR then
+if CFG_DATADIR then
        if os.getenv("HOME") then
-               CFG_PLUGINDIR = CFG_PLUGINDIR:gsub("^~", os.getenv("HOME"));
+               CFG_DATADIR = CFG_DATADIR:gsub("^~", os.getenv("HOME"));
        end
-end    
+end
 
 -- Required to be able to find packages installed with luarocks
 pcall(require, "luarocks.require")
@@ -56,7 +48,7 @@ do
        end
 end
 
-local data_path = config.get("*", "core", "data_path") or "data";
+local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
 local path_separator = "/"; if os.getenv("WINDIR") then path_separator = "\\" end
 local _mkdir = {}
 function mkdir(path)