]> jfr.im git - irc/blitzed-org/charybdis.git/commitdiff
Add explicit support for being installed into a system triggered with --enable-fhs...
authorNathan Phillip Brink <redacted>
Thu, 1 Mar 2012 02:41:09 +0000 (02:41 +0000)
committerNathan Phillip Brink <redacted>
Thu, 1 Mar 2012 02:41:09 +0000 (02:41 +0000)
Add two mechanism for avoiding name-collisions in a system-wide
installation of charybdis. The ssld and bandb daemons, intended to be
directly used by ircd and not the user, install into libexec when
--enable-fhs-paths is set. For binaries which are meant to be in PATH
(bindir), such as ircd and viconf, there is now an option
--with-program-prefix=progprefix inspired by automake. If the user
specifies --with-program-prefix=charybdis, the ircd binary is named
charybdisircd when installed.

Add support for saving the pidfile to a rundir and storing the ban
database in localstatedir instead of in sysconfdir. This is, again,
conditional on --enable-fhs-paths.

Fix(?) genssl.sh to always write created SSL key/certificate/dh
parameters to the sysconfdir specified during ./configure. The
previous behavior was to assume that the user ran genssl.sh after
ensuring that his current working directory was either sysconfdir or a
sibling directory of sysconfdir.

19 files changed:
.gitignore
Makefile.in
aclocal.m4
bandb/Makefile.in
configure.ac
doc/Makefile.in
extensions/Makefile.in
help/Makefile.in
include/config.h
libratbox/acinclude.m4
modules/Makefile.in
src/Makefile.in
src/bandbi.c
src/sslproc.c
ssld/Makefile.in
tools/Makefile.in
tools/genssl.sh [deleted file]
tools/genssl.sh.in [new file with mode: 0755]
tools/viconf.c

index cd04a06aa2124ba266d80dde145f362eb382ffa9..ed7985f3b67fdccb902b8c4886026b734ef2f433 100644 (file)
@@ -34,6 +34,7 @@ src/y.tab.c
 ssld/ssld
 tools/convertilines
 tools/convertklines
+tools/genssl.sh
 tools/mkpasswd
 tools/viconf
 include/serno.h
index 80cab41291ac7ab4e9037eed4a500692bfa331ec..729a54bedb4654119040f39d13c2410d22493a11 100644 (file)
@@ -24,10 +24,17 @@ prefix              = @prefix@
 exec_prefix    = @exec_prefix@
 bindir         = @bindir@
 mandir         = @mandir@
+libdir          = @libdir@
+pkglibdir       = @pkglibdir@
 moduledir      = @moduledir@
 helpdir                = @helpdir@
 confdir                = @confdir@
 logdir         = @logdir@
+rundir         = @rundir@
+pkgrundir      = @pkgrundir@
+localstatedir  = @localstatedir@
+pkglocalstatedir= @pkglocalstatedir@
+PACKAGE_TARNAME        = @PACKAGE_TARNAME@
 
 # Default CFLAGS
 # CFLAGS = -g -O2 -DNDEBUG
@@ -118,21 +125,27 @@ lint:
 install-mkdirs:
        @echo "ircd: setting up ircd directory structure"
        -@if test ! -d $(DESTDIR)$(prefix); then \
-               mkdir $(DESTDIR)$(prefix); \
+               mkdir -p -m 755 $(DESTDIR)$(prefix); \
        fi
        -@if test ! -d $(DESTDIR)$(bindir); then \
-               mkdir $(DESTDIR)$(bindir); \
+               mkdir -p -m 755 $(DESTDIR)$(bindir); \
        fi
        -@if test ! -d $(DESTDIR)$(confdir); then \
-               mkdir $(DESTDIR)$(confdir); \
+               mkdir -p -m 755 $(DESTDIR)$(confdir); \
        fi
        -@if test ! -d $(DESTDIR)$(mandir); then \
-               mkdir $(DESTDIR)$(mandir); \
+               mkdir -p -m 755 $(DESTDIR)$(mandir); \
        fi
        -@if test ! -d $(DESTDIR)$(logdir); then \
-               mkdir $(DESTDIR)$(logdir); \
+               mkdir -p -m 755 $(DESTDIR)$(logdir); \
        fi
-       
+       -@if test ! -d '$(DESTDIR)$(pkgrundir)'; then \
+               mkdir -p -m 755 '$(DESTDIR)$(pkgrundir)'; \
+       fi
+       -@if test ! -d '$(DESTDIR)$(pkglocalstatedir)'; then \
+               mkdir -p -m 755 '$(DESTDIR)$(pkglocalstatedir)'; \
+       fi
+
 install: install-mkdirs all
        @for i in $(SUBDIRS); do \
                echo "install ==> $$i";\
index 83a647d2094b3139bc1a065a602918a24be823ad..b2aec7a9b2ef28f4b3f315d832685a9c527cc5fe 100644 (file)
@@ -2,8 +2,12 @@
 AC_DEFUN([AC_DEFINE_DIR], [
   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo [$]$2`
-  ac_define_dir=`eval echo [$]ac_define_dir`
+  last_ac_define_dir=`eval echo [$]$2`
+  ac_define_dir=`eval echo [$]last_ac_define_dir`
+  while test "x[$]last_ac_define_dir" != "x[$]ac_define_dir"; do
+    last_ac_define_dir="[$]ac_define_dir"
+    ac_define_dir=`eval echo [$]last_ac_define_dir`
+  done
   $1="$ac_define_dir"
   AC_SUBST($1)
   ifelse($3, ,
index 49ba3288c085743529cb05dc61fc6ad02bfda103..644f40ec85af1f763901f6c41e4373f858b66252 100644 (file)
@@ -22,8 +22,12 @@ exec_prefix     = @exec_prefix@
 bindir          = @bindir@
 libdir         = @libdir@
 libexecdir      = @libexecdir@
+pkglibexecdir   = @pkglibexecdir@
 confdir         = @confdir@
 localstatedir   = @localstatedir@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+
+PROGRAM_PREFIX   = @PROGRAM_PREFIX@
 
 ZIP_LIB                = @ZLIB_LD@
 
@@ -34,7 +38,9 @@ CPPFLAGS        = ${INCLUDES} @CPPFLAGS@
 
 CFLAGS          += -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION=1
 
-PROGS          = bandb bantool
+pkglibexec_PROGS = bandb
+bin_PROGS       = bantool
+PROGS          = $(pkglibexec_PROGS) $(bin_PROGS)
 
 BANDB_SOURCES =     \
   bandb.c      \
@@ -64,12 +70,18 @@ bantool: ${BANTOOL_OBJECTS}
 
 install: build
        @echo "ircd: installing bandb ($(PROGS))"
-       @for i in $(PROGS); do \
-                if test -f $(DESTDIR)$(bindir)/$$i; then \
-                        $(MV) $(DESTDIR)$(bindir)/$$i $(DESTDIR)$(bindir)/$$i.old; \
+       @for i in $(bin_PROGS); do \
+                if test -f $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; then \
+                        $(MV) $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i.old; \
                 fi; \
-                $(INSTALL_BIN) $$i $(DESTDIR)$(bindir); \
+                $(INSTALL_BIN) $$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; \
         done
+       @for i in $(pkglibexec_PROGS); do \
+               if test -f '$(DESTDIR)$(pkglibexecdir)/'$$i; then \
+                       $(MV) '$(DESTDIR)$(pkglibexecdir)/'$$i '$(DESTDIR)$(pkglibexecdir)/'$$i.old; \
+               fi; \
+               $(INSTALL_BIN) $$i '$(DESTDIR)$(pkglibexecdir)/'$$i; \
+       done
 
 .c.o:
        ${CC} ${CPPFLAGS} ${CFLAGS} -c $<
index 29bcfa2a4407c31f88865498f90dc2caebb33bf1..9ab0cbf98cbd4a222c48aa1b945634f2782c1d9c 100644 (file)
@@ -225,12 +225,37 @@ if test "$LEX" = ":"; then
        AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
 fi
 
+AC_ARG_ENABLE([fhs-paths],
+       [AS_HELP_STRING([--enable-fhs-paths], [User more FHS-like pathnames (for packagers).])],
+       [],
+       [dnl detect if the user appears to want --enable-fhs-paths
+       AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \
+               test "$localstatedir" = '${prefix}/var' && \
+               test "$libdir" = '${exec_prefix}/lib'],
+               [enable_fhs_paths=no],
+               [enable_fhs_paths=yes])
+       ])
 dnl use directory structure of cached as default (hack)
-if test "$libexecdir" = '${exec_prefix}/libexec' &&
-   test "$localstatedir" = '${prefix}/var'; then
-       libexecdir='${bindir}'
+AS_IF([test "x$enable_fhs_paths" = "xyes"],
+       [dnl Avoid name collisions.
+       pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
+       rundir=${rundir-'${prefix}/run'}
+       pkgrundir='${rundir}/${PACKAGE_TARNAME}'
+       pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'],
+       [libexecdir='${bindir}'
+       pkglibexecdir='${libexecdir}'
+       rundir='${sysconfdir}'
+       pkgrundir='${rundir}'
        localstatedir='${prefix}'
-fi
+       pkglocalstatedir='${sysconfdir}'])
+pkglibdir='${libdir}/${PACKAGE_TARNAME}'
+AC_SUBST([pkglibdir])
+AC_SUBST([rundir])
+AC_SUBST([pkgrundir])
+AC_SUBST([pkglocalstatedir])
+AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as band database]])
+AC_SUBST([pkglibexecdir])
+AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
 
 dnl Checks for header files.
 AC_HEADER_STDC
@@ -595,7 +620,7 @@ AC_HELP_STRING([--with-confdir=DIR],
                 AC_MSG_RESULT(yes)
                 AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
                 AC_SUBST_DIR([confdir]) ],
-              [ confdir='${prefix}/etc'
+              [ confdir='${sysconfdir}'
                 AC_MSG_RESULT(no)
                 AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
                 AC_SUBST_DIR([confdir])]
@@ -610,14 +635,13 @@ AC_ARG_WITH(logdir,
 AC_HELP_STRING([--with-logdir=DIR],
               [Directory where to write logfiles.]),
               [ logdir=`echo $withval | sed 's/\/$//'`
-                AC_MSG_RESULT(yes)
-                AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
-                AC_SUBST_DIR([logdir]) ],
-              [ logdir='${prefix}/logs'
-                AC_MSG_RESULT(no)
-                AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
-                AC_SUBST_DIR([logdir])]
-)
+                AC_MSG_RESULT(yes)],
+              [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
+                       [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
+                       [logdir='${prefix}/logs'])
+                AC_MSG_RESULT(no)])
+AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
+AC_SUBST_DIR([logdir])
 
 dnl **********************************************************************
 dnl Check for --with-helpdir
@@ -628,14 +652,13 @@ AC_ARG_WITH(helpdir,
 AC_HELP_STRING([--with-helpdir=DIR],
               [Directory to install help files.]),
               [ helpdir=`echo $withval | sed 's/\/$//'`
-                AC_MSG_RESULT(yes)
-                AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help files are installed.])
-                AC_SUBST_DIR([helpdir]) ],
-              [ helpdir='${prefix}/help'
-                AC_MSG_RESULT(no)
-                AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help file are installed.])
-                AC_SUBST_DIR([helpdir])]
-)
+                AC_MSG_RESULT(yes) ],
+              [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
+                       [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
+                       [helpdir='${prefix}/help'])
+                AC_MSG_RESULT(no) ])
+AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
+AC_SUBST_DIR([helpdir])
 
 dnl **********************************************************************
 dnl Check for --with-moduledir
@@ -643,17 +666,44 @@ dnl **********************************************************************
 
 AC_MSG_CHECKING([whether to modify moduledir])
 AC_ARG_WITH(moduledir, 
-AC_HELP_STRING([--with-moduledir=DIR],
-              [Directory to install modules.]),
+       [AC_HELP_STRING([--with-moduledir=DIR],
+              [Directory to install modules.])],
               [ moduledir=`echo $withval | sed 's/\/$//'`
-                AC_MSG_RESULT(yes)
-                AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
-                AC_SUBST_DIR([moduledir]) ],
-              [ moduledir='${prefix}/modules'
+                AC_MSG_RESULT(yes)],
+              [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
+                       [moduledir='${pkglibdir}/modules'],
+                       [moduledir='${prefix}/modules'])
                 AC_MSG_RESULT(no)
-                AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
-                AC_SUBST_DIR([moduledir])]
-)
+               ])
+AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
+AC_SUBST_DIR([moduledir])
+
+dnl Check for --with-rundir
+
+AC_MSG_CHECKING([whether or modify rundir])
+AC_ARG_WITH([rundir],
+       [AC_HELP_STRING([--with-rundir=DIR],
+               [Directory in which to store pidfile.])],
+       [AC_MSG_RESULT([yes])
+       rundir=`echo $withval | sed 's/\/$//'`],
+       [AC_MSG_RESULT([no])
+       AS_IF([test "x$enable_fhs_paths" = "xyes"],
+               [rundir='${prefix}/run'],
+               [rundir='${sysconfdir}'])])
+AC_SUBST([rundir])
+AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
+
+dnl Installed utility program prefixes (does not affect binaries
+dnl installed into pkglibexecdir)
+AC_MSG_CHECKING([for program prefix])
+AC_ARG_WITH([program-prefix],
+       [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
+       [test "x$with_program_prefix" = "xno" && with_program_prefix=],
+       [with_program_prefix=])
+AC_MSG_RESULT(["$with_program_prefix"])
+PROGRAM_PREFIX="$with_program_prefix"
+AC_SUBST([PROGRAM_PREFIX])
+AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
 
 dnl **********************************************************************
 dnl Branding
@@ -1197,9 +1247,11 @@ AC_CONFIG_FILES(                 \
        src/Makefile                    \
        modules/Makefile                \
        tools/Makefile                  \
+       tools/genssl.sh                 \
        doc/Makefile                    \
        help/Makefile                   \
 )
+AC_CONFIG_COMMANDS([tools/genssl.sh_chmod], [chmod 755 tools/genssl.sh])
 
 AC_OUTPUT
 
index 5d48353c6b12eeb81353d32dc91106d5f74f8c3d..e78b2071bfddd2b2600d2d159149afa05babf27f 100644 (file)
@@ -15,6 +15,8 @@ RM            = @RM@
 CP             = @CP@
 TOUCH          = @TOUCH@
 
+PROGRAM_PREFIX  = @PROGRAM_PREFIX@
+
 prefix         = @prefix@
 exec_prefix    = @exec_prefix@
 exec_suffix    = @exec_suffix@
@@ -73,8 +75,8 @@ install: install-mkdirs build
 
        @echo "ircd: installing manpage"
        @for i in $(MANPAGES); do \
-               if test ! -f $(DESTDIR)$(mandir)/$$i; then \
-                       $(INSTALL_DATA) $$i $(DESTDIR)$(mandir); \
+               if test ! -f $(DESTDIR)$(mandir)/$(PROGRAM_PREFIX)$$i; then \
+                       $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/$(PROGRAM_PREFIX)$$i; \
                fi; \
        done
 
index 75a3f4a5492fa97ca36855bdef452b4d29c636c4..9b163277653e46bbd8968d1e85cf8644204e8b93 100644 (file)
@@ -16,7 +16,14 @@ INSTALL_PROGRAM      = @INSTALL_PROGRAM@
 INSTALL_DATA   = @INSTALL_DATA@
 INSTALL_SUID    = @INSTALL_PROGRAM@ -o root -m 4755
 SHELL          = /bin/sh
-AUTOMODULEDIR  = @moduledir@/extensions
+
+prefix          = @prefix@
+exec_prefix     = @exec_prefix@
+libdir          = @libdir@
+pkglibdir       = @pkglibdir@
+moduledir       = @moduledir@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+AUTOMODULEDIR  = $(moduledir)/extensions
 
 SSL_LIBS       = @SSL_LIBS@
 SSL_INCLUDES   = @SSL_INCLUDES@
index 534b36f84407f58a29d9beff8ad5227f9a4a5695..587f08664fe7c5f75a66e5bae9189edb4137e30c 100644 (file)
@@ -7,7 +7,9 @@ INSTALL_DATA=   @INSTALL_DATA@
 RM=            @RM@
 
 prefix=                @prefix@
-exec_prefix=   @execprefix@
+exec_prefix=   @exec_prefix@
+datarootdir     = @datarootdir@
+datadir         = @datadir@
 helpdir=       @helpdir@
 uhelpdir=      ${helpdir}/users
 ohelpdir=      ${helpdir}/opers
index 664ff7c32667f4027d6a0adf738f15a8b6491dd2..cc1ab2f1ffbc94357ef65f5dd1196ea9029ddece 100644 (file)
 #define HPATH  HELP_DIR "/opers"
 
 /* files */
-#define SPATH    BINPATH "/ircd"                  /* ircd executable */
-#define LIPATH   LIBPATH "/libircd" SHARED_SUFFIX  /* ircd library */
+#define SPATH    BINPATH "/" PROGRAM_PREFIX "ircd"                /* ircd executable */
 #define CPATH    ETCPATH "/ircd.conf"             /* ircd.conf file */
 #define MPATH    ETCPATH "/ircd.motd"             /* MOTD file */
 #define LPATH    LOGPATH "/ircd.log"              /* ircd logfile */
-#define PPATH    ETCPATH "/ircd.pid"              /* pid file */
+#define PPATH    PKGRUNDIR "/ircd.pid"            /* pid file */
 #define OPATH    ETCPATH "/opers.motd"            /* oper MOTD file */
-#define DBPATH   ETCPATH "/ban.db"                 /* bandb file */
+#define DBPATH   PKGLOCALSTATEDIR "/ban.db"                 /* bandb file */
 
 /* IGNORE_BOGUS_TS
  * Ignore bogus timestamps from other servers. Yes this will desync
index 4a0c6e1364fe5c1d35a92ef282a4059c2f494120..e1e75a5c042f88d34d099b153179d4e494165bd2 100644 (file)
@@ -2,8 +2,12 @@
 AC_DEFUN([AC_DEFINE_DIR], [
   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo [$]$2`
-  ac_define_dir=`eval echo [$]ac_define_dir`
+  last_ac_define_dir=`eval echo [$]$2`
+  ac_define_dir=`eval echo [$]last_ac_define_dir`
+  while test "x[$]last_ac_define_dir" != "x[$]ac_define_dir"; do
+    last_ac_define_dir="[$]ac_define_dir"
+    ac_define_dir=`eval echo [$]last_ac_define_dir`
+  done
   $1="$ac_define_dir"
   AC_SUBST($1)
   ifelse($3, ,
index 8f5d2a725f789339ce101def8ab608c68a4c9c4f..c4f2c9fc35f733a10554d7f8faa5aecc068511b7 100644 (file)
@@ -28,7 +28,11 @@ SSL_INCLUDES = @SSL_INCLUDES@
 IRCDLIBS        = @LIBS@ $(SSL_LIBS)
 
 prefix          = @prefix@
+exec_prefix     = @exec_prefix@
+libdir          = @libdir@
+pkglibdir       = @pkglibdir@
 moduledir       = @moduledir@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
 # Change this later! -- adrian
 automoduledir   = @moduledir@/autoload
 
index dc7dcef2c0526b2be395eb867446192e5038e16f..a2fd0c7081243655be7633940e226da5d5c5163a 100644 (file)
@@ -12,7 +12,7 @@ RM            = @RM@
 LEX            = @LEX@
 LEXLIB         = @LEXLIB@
 PICFLAGS       = @PICFLAGS@
-CFLAGS         = @IRC_CFLAGS@ -DIRCD_PREFIX=\"@prefix@\"
+CFLAGS         = @IRC_CFLAGS@
 LDFLAGS        = @LDFLAGS@
 MKDEP          = @MKDEP@ -DIRCD_PREFIX=\"@prefix@\"
 MV             = @MV@
@@ -23,6 +23,9 @@ exec_prefix   = @exec_prefix@
 bindir         = @bindir@
 libdir         = @libdir@
 libexecdir     = @libexecdir@
+pkglibexecdir   = @pkglibexecdir@
+
+PROGRAM_PREFIX   = @PROGRAM_PREFIX@
 
 DOLLAR = $$
 
@@ -36,7 +39,7 @@ SSL_INCLUDES  = @SSL_INCLUDES@
 IRCDLIBS       = @MODULES_LIBS@ -L../libratbox/src/.libs -lratbox @LIBS@ $(SSL_LIBS)
 
 INCLUDES       = -I../include -I../libratbox/include $(SSL_INCLUDES)
-CPPFLAGS       = ${INCLUDES} @CPPFLAGS@
+CPPFLAGS       = ${INCLUDES} -DIRCD_PREFIX=\"@prefix@\" @CPPFLAGS@
  
 default:       all
 
@@ -133,10 +136,10 @@ install: install-mkdirs build
        fi
        @echo "ircd: installing ircd ($(PROGS))"
        @for i in $(PROGS); do \
-               if test -f $(DESTDIR)$(bindir)/$$i; then \
-                       $(MV) $(DESTDIR)$(bindir)/$$i $(DESTDIR)$(bindir)/$$i.old; \
+               if test -f $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; then \
+                       $(MV) $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i.old; \
                fi; \
-               $(INSTALL_BIN) $$i $(DESTDIR)$(bindir); \
+               $(INSTALL_BIN) $$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; \
        done
 
 version.c: version.c.SH
index eda44b304c6b9b97c99bcbfd04a545d9f6c14a76..5c9933e26b483e28374eec3c6828037ba785c973 100644 (file)
@@ -85,7 +85,7 @@ start_bandb(void)
        rb_setenv("BANDB_DPATH", ConfigFileEntry.dpath, 1);
        if(bandb_path == NULL)
        {
-               rb_snprintf(fullpath, sizeof(fullpath), "%s/bandb%s", BINPATH, suffix);
+               rb_snprintf(fullpath, sizeof(fullpath), "%s/bandb%s", PKGLIBEXECDIR, suffix);
 
                if(access(fullpath, X_OK) == -1)
                {
@@ -95,8 +95,8 @@ start_bandb(void)
                        if(access(fullpath, X_OK) == -1)
                        {
                                ilog(L_MAIN,
-                                    "Unable to execute bandb in %s or %s/bin",
-                                    BINPATH, ConfigFileEntry.dpath);
+                                    "Unable to execute bandb%s in %s or %s/bin",
+                                    suffix, PKGLIBEXECDIR, ConfigFileEntry.dpath);
                                return 0;
                        }
                }
index 8b929436e2c6cb3a3988f4c9aa80c3bf5edfa1ba..51078fbf291013af2bd906e9eb78cc52fa899079 100644 (file)
@@ -261,7 +261,7 @@ start_ssldaemon(int count, const char *ssl_cert, const char *ssl_private_key, co
 
        if(ssld_path == NULL)
        {
-               rb_snprintf(fullpath, sizeof(fullpath), "%s/ssld%s", BINPATH, suffix);
+               rb_snprintf(fullpath, sizeof(fullpath), "%s/ssld%s", PKGLIBEXECDIR, suffix);
 
                if(access(fullpath, X_OK) == -1)
                {
@@ -270,8 +270,8 @@ start_ssldaemon(int count, const char *ssl_cert, const char *ssl_private_key, co
                        if(access(fullpath, X_OK) == -1)
                        {
                                ilog(L_MAIN,
-                                    "Unable to execute ssld%s in %s/bin or %s",
-                                    ConfigFileEntry.dpath, suffix, BINPATH);
+                                    "Unable to execute ssld%s in %s or %s/bin",
+                                    suffix, PKGLIBEXECDIR, ConfigFileEntry.dpath);
                                return 0;
                        }
                }
index 3b49f8400397aa7aac1aaea65f010f9a18c617ba..cdf3b85370a491c6303731cb070dc812449d1a63 100644 (file)
@@ -22,8 +22,12 @@ exec_prefix     = @exec_prefix@
 bindir          = @bindir@
 libdir         = @libdir@
 libexecdir      = @libexecdir@
+pkglibexecdir   = @pkglibexecdir@
 confdir         = @confdir@
 localstatedir   = @localstatedir@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+
+PROGRAM_PREFIX   = @PROGRAM_PREFIX@
 
 ZIP_LIB                = @ZLIB_LD@
 
@@ -32,7 +36,8 @@ IRCDLIBS      = @MODULES_LIBS@ -L../libratbox/src/.libs -lratbox @LIBS@ $(SSL_LIBS) $
 INCLUDES        = -I. -I../include -I../libratbox/include $(SSL_INCLUDES)
 CPPFLAGS        = ${INCLUDES} @CPPFLAGS@
 
-PROGS          = ssld
+pkglibexec_PROGS = ssld
+PROGS          = $(pkglibexec_PROGS)
 
 SOURCES =     \
   ssld.c
@@ -47,14 +52,27 @@ build: all
 ssld: ${OBJECTS}
        ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJECTS} ${IRCDLIBS}
 
-install: build
+install-mkdirs:
+       -@for dir in '$(bindir)' '$(pkglibexecdir)'; do \
+               if test ! -d '$(DESTDIR)'"$${dir}"; then \
+                       mkdir -p -m 755 '$(DESTDIR)'"$${dir}"; \
+               fi; \
+       done
+
+install: install-mkdirs build
        @echo "ircd: installing ssld ($(PROGS))"
-       @for i in $(PROGS); do \
+       @for i in $(bin_PROGS); do \
                 if test -f $(DESTDIR)$(bindir)/$$i; then \
-                        $(MV) $(DESTDIR)$(bindir)/$$i $(DESTDIR)$(bindir)/$$i.old; \
+                        $(MV) $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i.old; \
                 fi; \
-                $(INSTALL_BIN) $$i $(DESTDIR)$(bindir); \
+                $(INSTALL_BIN) $$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; \
         done
+       @for i in $(pkglibexec_PROGS); do \
+               if test -f '$(DESTDIR)$(pkglibexecdir)/'$$i; then \
+                       $(MV) '$(DESTDIR)$(pkglibexecdir)/'$$i '$(DESTDIR)$(pkglibexecdir)/'$$i.old; \
+               fi; \
+               $(INSTALL_BIN) $$i '$(DESTDIR)$(pkglibexecdir)/'$$i; \
+       done
 
 .c.o:
        ${CC} ${CPPFLAGS} ${CFLAGS} -c $<
index 93ae067d6016be2dbacc83f052855d205e8553b8..062713273c25b90ced79a36dcd5cfc2d8a7fbb22 100644 (file)
@@ -15,6 +15,8 @@ MV            = @MV@
 RM             = @RM@
 LN              = @LN@
 
+PROGRAM_PREFIX   = @PROGRAM_PREFIX@
+
 IRCDLIBS       = -L../libratbox/src/.libs -lratbox @LIBS@ 
 INCLUDES       = -I../include -I../libratbox/include
 CPPFLAGS       = ${INCLUDES} @CPPFLAGS@
@@ -45,13 +47,14 @@ convertilines: convertilines.c
 convertklines: convertklines.c
        $(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) convertklines.c -o convertklines $(IRCDLIBS)
 
-genssl.sh:
+genssl.sh: genssl.sh.in
+       cd .. && ./config.status tools/genssl.sh && ./config.status tools/genssl.sh_chmod
 
 clean:
        $(RM) -f encspeed viconf chkconf mkpasswd *~ core *.exe convertklines convertilines
 
 distclean: clean
-       $(RM) -f Makefile
+       $(RM) -f genssl.sh Makefile
 
 lint:
        lint -aacgprxhH $(CPPFLAGS) -DIRCD_PREFIX=\"@prefix@\" $(convertklines_SOURCES) $(mkpasswd_SOURCES) $(viconf_SOURCES) $(encspeed_SOURCES) >>../lint.out
@@ -91,11 +94,11 @@ install-mkdirs:
 install: install-mkdirs build
        @echo "ircd: installing tools ($(PROGS))"
        @for i in $(PROGS); do \
-               if test -f $(DESTDIR)$(bindir)/$$i; then \
-                       $(MV) $(DESTDIR)$(bindir)/$$i $(DESTDIR)$(bindir)/$$i.old; \
+               if test -f $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; then \
+                       $(MV) $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i.old; \
                fi; \
-               $(INSTALL_BIN) $$i $(DESTDIR)$(bindir); \
+               $(INSTALL_BIN) $$i $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)$$i; \
        done; \
-       $(RM) -f $(DESTDIR)$(bindir)/vimotd
-       $(LN) $(DESTDIR)$(bindir)/viconf $(DESTDIR)$(bindir)/vimotd
+       $(RM) -f $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)vimotd
+       $(LN) $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)viconf $(DESTDIR)$(bindir)/$(PROGRAM_PREFIX)vimotd
 
diff --git a/tools/genssl.sh b/tools/genssl.sh
deleted file mode 100755 (executable)
index de7f165..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-echo "Generating self-signed certificate .. "
-openssl req -x509 -nodes -newkey rsa:1024 -keyout ../etc/ssl.key -out ../etc/ssl.cert
-
-echo "Generating Diffie-Hellman file for secure SSL/TLS negotiation .. "
-openssl dhparam -out ../etc/dh.pem 1024
-
-echo " 
-Now change these lines in the IRCd config file:
-
-    ssl_private_key = "etc/ssl.key";
-    ssl_cert = "etc/ssl.cert";
-    ssl_dh_params = "etc/dh.pem";
-
-Enjoy using ssl.
-"
diff --git a/tools/genssl.sh.in b/tools/genssl.sh.in
new file mode 100755 (executable)
index 0000000..2e65f65
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+sysconfdir="@sysconfdir@"
+
+echo "Generating self-signed certificate .. "
+openssl req -x509 -nodes -newkey rsa:1024 -keyout "${sysconfdir}"/ssl.key -out "${sysconfdir}"/ssl.cert
+
+echo "Generating Diffie-Hellman file for secure SSL/TLS negotiation .. "
+openssl dhparam -out "${sysconfdir}"/dh.pem 1024
+
+# If sysconfdir is relative to prefix, make the path relative. I.e.,
+# prefix=/usr and sysconfdir=/etc -> relative_sysconfdir=/etc,
+# prefix=/home/binki/chary and sysconfdir=/home/binki/chary/etc ->
+# relative_sysconfdir=etc
+relative_sysconfdir="${sysconfdir#${prefix%/}/}"
+relative_sysconfdir="${relative_sysconfdir%/}"
+
+cat <<EOF
+
+
+Now change these lines in the IRCd config file:
+
+    ssl_private_key = "${relative_sysconfdir}/ssl.key";
+    ssl_cert = "${relative_sysconfdir}/ssl.cert";
+    ssl_dh_params = "${relative_sysconfdir}/dh.pem";
+
+Enjoy using ssl.
+EOF
index 0f2022f6ffca5b2d687cf61e6cb6d4a8dd381a05..19c6aa2b9d7839c5feb3ee7b3e38171ae75ef994 100644 (file)
@@ -13,6 +13,9 @@
 #include <signal.h>
 #include "config.h"
 
+#ifndef PROGRAM_PREFIX
+#define PROGRAM_PREFIX ""
+#endif
 
 /* wait.h is in /include on solaris, likely on other SYSV machines as well
  * but wait.h is normally in /include/sys on BSD boxen,
@@ -45,7 +48,7 @@ int main(int argc, char *argv[])
   else
     p++;
 
-  if(strcmp(p, "vimotd") == 0)
+  if(strcmp(p, PROGRAM_PREFIX "vimotd") == 0)
     filename = MPATH;
 
   if(LockedFile(filename))