Hi Jelmer,

here's the next version of the patch. (it's now attached :-)

I added --with-sambadatadir witch is default ${datadir}/samba (--with-fhs) or ${datadir}
${datadir} is ${prefix}/share by default, so $(sambadatadir) is ${prefix}/share/samba or ${prefix}/share.

the valid.dat ... files are now installed to sambadatadir

I'm happy with this patch, but NOT with the name 'sambadatadir' DOES ANYBODY HAVE ABETTER IDEA?

I removed the modules/Makfile.ext_modules.in stuff

I think we should put ALL header files in include/ and then after make proto we can install all headers to ${prefix}/include/samba

so that the modules only have to include:
#include <samba/includes.h>



metze
-----------------------------------------------------------------------------
Stefan "metze" Metzmacher <[EMAIL PROTECTED]>
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/Makefile.in HEAD-fix/source/Makefile.in
--- HEAD/source/Makefile.in     Tue Nov 26 07:19:11 2002
+++ HEAD-fix/source/Makefile.in Tue Nov 26 07:41:52 2002
@@ -56,8 +56,13 @@ INSTALLPERMS = 0755
 # These can be overridden by command line switches (see smbd(8))
 # or in smb.conf (see smb.conf(5))
 LOGFILEBASE = @logfilebase@
-CONFIGFILE = $(LIBDIR)/smb.conf
-LMHOSTSFILE = $(LIBDIR)/lmhosts
+CONFIGDIR = @configdir@
+CONFIGFILE = $(CONFIGDIR)/smb.conf
+LMHOSTSFILE = $(CONFIGDIR)/lmhosts
+# This is where modules are installed and searched by default
+MODULESDIR = @modulesdir@
+# This is where valid.dat,upcase.dat,lowcase.dat are installed and searched by default
+SAMBADATADIR = @sambadatadir@
 # This is where smbpasswd et al go
 PRIVATEDIR = @privatedir@
 
@@ -93,7 +98,8 @@ PATH_FLAGS2 = $(PATH_FLAGS1) -DBINDIR=\"
 PATH_FLAGS3 = $(PATH_FLAGS2) -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" 
 PATH_FLAGS4 = $(PATH_FLAGS3) -DSWATDIR=\"$(SWATDIR)\"  -DLOCKDIR=\"$(LOCKDIR)\" 
-DPIDDIR=\"$(PIDDIR)\"
 PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" -DLOGFILEBASE=\"$(LOGFILEBASE)\"
-PATH_FLAGS = $(PATH_FLAGS5) $(PASSWD_FLAGS)
+PATH_FLAGS6 = $(PATH_FLAGS5) -DMODULESDIR=\"$(MODULESDIR)\" 
+-DSAMBADATADIR=\"$(SAMBADATADIR)\"
+PATH_FLAGS = $(PATH_FLAGS6) $(PASSWD_FLAGS)
 
 SBIN_PROGS = bin/smbd bin/nmbd bin/swat bin/wrepld @EXTRA_SBIN_PROGS@
 
@@ -573,7 +579,7 @@ nsswitch : SHOWFLAGS bin/winbindd bin/wb
 
 wins : SHOWFLAGS nsswitch/libnss_wins.@SHLIBEXT@
 
-modules: SHOWFLAGS $(MODULES)
+modules: SHOWFLAGS proto_exists $(MODULES)
 
 everything: all libsmbclient debug2html smbfilter talloctort
 
@@ -896,23 +902,23 @@ bin/tdbbackup: $(TDBBACKUP_OBJ) bin/.dum
 install: installbin installman installscripts installdat installswat 
 
 installdirs:
-       @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) 
$(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) 
$(DESTDIR)$(PRIVATEDIR)
+       @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) 
+$(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(SAMBADATADIR) 
+$(DESTDIR)$(MODULESDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PRIVATEDIR)
 
 installservers: all installdirs
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
$(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
+$(DESTDIR)$(SBINDIR) $(DESTDIR)$(SAMBADATADIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
 
 installbin: all installdirs
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
$(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
-       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
$(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
+$(DESTDIR)$(SBINDIR) $(DESTDIR)$(SAMBADATADIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
+       @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) 
+$(DESTDIR)$(BINDIR) $(DESTDIR)$(SAMBADATADIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS)
 
-installmodules: all installdirs
-       @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) 
$(DESTDIR)$(BASEDIR) $(DESTDIR)$(LIBDIR) $(MODULES)
+installmodules: modules installdirs
+       @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) 
+$(DESTDIR)$(BASEDIR) $(DESTDIR)$(MODULESDIR) $(MODULES)
 
 installscripts: installdirs
        @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) 
$(DESTDIR)$(BINDIR) $(SCRIPTS)
 
 installdat: installdirs
-       @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir)
+       @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(SAMBADATADIR) $(srcdir)
 
 installswat: installdirs
        @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir)
@@ -1001,11 +1007,11 @@ uninstallman:
        @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) 
$(man_langs)
 
 uninstallbin:
-       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) 
$(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) 
$(DESTDIR)$(SBIN_PROGS)
-       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) 
$(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) 
$(DESTDIR)$(BIN_PROGS)
+       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) 
+$(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(SAMBADATADIR) 
+$(DESTDIR)$(VARDIR) $(DESTDIR)$(SBIN_PROGS)
+       @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) 
+$(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SAMBADATADIR) 
+$(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS)
 
 uninstallmodules:
-       @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) 
$(DESTDIR)$(BASEDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MODULES)
+       @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) 
+$(DESTDIR)$(BASEDIR) $(DESTDIR)$(MODULESDIR) $(DESTDIR)$(MODULES)
 
 uninstallscripts:
        @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) 
$(DESTDIR)$(BINDIR) $(SCRIPTS)
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/configure.in HEAD-fix/source/configure.in
--- HEAD/source/configure.in    Fri Nov 22 08:13:31 2002
+++ HEAD-fix/source/configure.in        Sun Nov 24 18:00:01 2002
@@ -12,17 +12,21 @@ AC_PREFIX_DEFAULT(/usr/local/samba)
 AC_ARG_WITH(fhs, 
 [  --with-fhs              Use FHS-compliant paths (default=no)],
     configdir="${sysconfdir}/samba"
+    modulesdir="\${LIBDIR}/samba"
     lockdir="\${VARDIR}/cache/samba"
     piddir="\$(VARDIR)/run/samba"
     logfilebase="\${VARDIR}/log/samba"
     privatedir="\${CONFIGDIR}/private"
-    swatdir="\${DATADIR}/samba/swat",
+    swatdir="${datadir}/samba/swat"
+    sambadatadir="${datadir}/samba",
     configdir="\$(LIBDIR)"
+    modulesdir="\${LIBDIR}"
     logfilebase="\$(VARDIR)"
     lockdir="\${VARDIR}/locks"
     piddir="\$(VARDIR)/locks"
     privatedir="\${prefix}/private"
-    swatdir="\${prefix}/swat")
+    swatdir="\${prefix}/swat"
+    sambadatadir="${datadir}")
 
 #################################################
 # set private directory location
@@ -105,6 +109,38 @@ AC_ARG_WITH(configdir,
   esac])
 
 #################################################
+# set modules directory location
+AC_ARG_WITH(modulesdir,
+[  --with-modulesdir=DIR   Where to put modules (\$libdir)],
+[ case "$withval" in
+  yes|no)
+  #
+  # Just in case anybody does it
+  #
+    AC_MSG_WARN([--with-modulesdir called without argument - will use default])
+  ;;
+  * )
+    modulesdir="$withval"
+    ;;
+  esac])
+
+#################################################
+# set samba data directory location
+AC_ARG_WITH(modulesdir,
+[  --with-sambadatadir=DIR Where to put shared data (\$datadir)],
+[ case "$withval" in
+  yes|no)
+  #
+  # Just in case anybody does it
+  #
+    AC_MSG_WARN([--with-sambadatadir called without argument - will use default])
+  ;;
+  * )
+    sambadatadir="$withval"
+    ;;
+  esac])
+
+#################################################
 # set log directory location
 AC_ARG_WITH(logfilebase,
 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
@@ -121,6 +157,8 @@ AC_ARG_WITH(logfilebase,
   esac])
 
 AC_SUBST(configdir)
+AC_SUBST(modulesdir)
+AC_SUBST(sambadatadir)
 AC_SUBST(lockdir)
 AC_SUBST(piddir)
 AC_SUBST(logfilebase)
@@ -625,7 +663,7 @@ test "${with_readline+set}" != "set" && 
 # test for where we get readline() from
 AC_MSG_CHECKING(whether to use readline)
 AC_ARG_WITH(readline,
-[  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
+[  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
 [  case "$with_readline" in
   yes)
     AC_MSG_RESULT(yes)
@@ -1954,7 +1992,7 @@ with_ads_support=yes
 AC_MSG_CHECKING([whether to use Active Directory])
 
 AC_ARG_WITH(ads,
-[   --with-ads  Active Directory support (default yes)],
+[  --with-ads              Active Directory support (default yes)],
 [ case "$withval" in
     no)
        with_ads_support=no
@@ -2054,7 +2092,7 @@ with_ldap_support=yes
 AC_MSG_CHECKING([whether to use LDAP])
 
 AC_ARG_WITH(ldap,
-[   --with-ldap  LDAP support (default yes)],
+[  --with-ldap             LDAP support (default yes)],
 [ case "$withval" in
     no)
        with_ldap_support=no
@@ -2250,7 +2288,7 @@ AC_ARG_WITH(sam,
 # check for a LDAP password database configuration backwards compatibility
 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
 AC_ARG_WITH(ldapsam,
-[  --with-ldapsam           Include LDAP SAM 2.2 compatible configuration 
(default=no)],
+[  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration 
+(default=no)],
 [ case "$withval" in
   yes)
     AC_MSG_RESULT(yes)
@@ -2767,7 +2805,7 @@ samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_
 with_sendfile_support=yes
 AC_MSG_CHECKING(whether to check to support sendfile)
 AC_ARG_WITH(sendfile-support,
-[  --with-sendfile-support      Check for sendfile support (default=yes)],
+[  --with-sendfile-support Check for sendfile support (default=yes)],
 [ case "$withval" in
   yes)
 
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/dynconfig.c HEAD-fix/source/dynconfig.c
--- HEAD/source/dynconfig.c     Tue Nov  5 16:25:26 2002
+++ HEAD-fix/source/dynconfig.c Sun Nov 24 17:26:50 2002
@@ -54,9 +54,9 @@ pstring dyn_LMHOSTSFILE = LMHOSTSFILE;
 /**
  * @brief Samba library directory.
  *
- * @sa lib_path() to get the path to a file inside the LIBDIR.
+ * @sa sambadata_path() to get the path to a file inside the SAMBADATADIR.
  **/
-pstring dyn_LIBDIR = LIBDIR;  
+pstring dyn_SAMBADATADIR = SAMBADATADIR;  
 
 /**
  * @brief Directory holding lock files.
@@ -68,3 +68,6 @@ const pstring dyn_PIDDIR  = PIDDIR;
 
 const pstring dyn_SMB_PASSWD_FILE = SMB_PASSWD_FILE;
 const pstring dyn_PRIVATE_DIR = PRIVATE_DIR;
+
+/** default for lp_modules_path() **/
+const pstring dyn_MODULESDIR = MODULESDIR;
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/include/dynconfig.h HEAD-fix/source/include/dynconfig.h
--- HEAD/source/include/dynconfig.h     Tue Nov  5 16:25:26 2002
+++ HEAD-fix/source/include/dynconfig.h Sun Nov 24 17:27:38 2002
@@ -29,8 +29,9 @@ extern char const *dyn_SBINDIR,
 
 extern pstring dyn_CONFIGFILE;
 extern pstring dyn_LOGFILEBASE, dyn_LMHOSTSFILE;
-extern pstring dyn_LIBDIR;
+extern pstring dyn_SAMBADATADIR;
 extern const pstring dyn_LOCKDIR; 
 extern const pstring dyn_PIDDIR;
 extern const pstring dyn_SMB_PASSWD_FILE;
 extern const pstring dyn_PRIVATE_DIR;
+extern const pstring dyn_MODULESDIR;
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/intl/lang_tdb.c HEAD-fix/source/intl/lang_tdb.c
--- HEAD/source/intl/lang_tdb.c Sat Nov 23 17:52:43 2002
+++ HEAD-fix/source/intl/lang_tdb.c     Sun Nov 24 17:35:40 2002
@@ -123,7 +123,7 @@ BOOL lang_tdb_init(const char *lang)
        /* if no lang then we don't translate */
        if (!lang) return True;
 
-       asprintf(&msg_path, "%s.msg", lib_path((char *)lang));
+       asprintf(&msg_path, "%s.msg", sambadata_path((char *)lang));
        if (stat(msg_path, &st) != 0) {
                /* the msg file isn't available */
                free(msg_path);
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/lib/module.c HEAD-fix/source/lib/module.c
--- HEAD/source/lib/module.c    Wed Nov 13 19:52:32 2002
+++ HEAD-fix/source/lib/module.c        Fri Nov 22 10:00:56 2002
@@ -27,28 +27,37 @@ NTSTATUS smb_load_module(const char *mod
        void *handle;
        init_module_function *init;
        NTSTATUS nt_status;
+       pstring full_module_name;
+
+       if (module_name[0]=='/') {
+               pstrcpy(full_module_name,module_name);
+       } else {
+               pstrcpy(full_module_name,lp_modules_path());
+               pstrcat(full_module_name,"/");
+               pstrcat(full_module_name,module_name);
+       }
 
        /* Always try to use LAZY symbol resolving; if the plugin has 
         * backwards compatibility, there might be symbols in the 
         * plugin referencing to old (removed) functions
         */
-       handle = sys_dlopen(module_name, RTLD_LAZY);
+       handle = sys_dlopen(full_module_name, RTLD_LAZY);
 
        if(!handle) {
-               DEBUG(0, ("Error loading module '%s': %s\n", module_name, 
sys_dlerror()));
+               DEBUG(0, ("Error loading module '%s': %s\n", full_module_name, 
+sys_dlerror()));
                return NT_STATUS_UNSUCCESSFUL;
        }
 
        init = sys_dlsym(handle, "init_module");
 
        if(!init) {
-               DEBUG(0, ("Error trying to resolve symbol 'init_module' in %s: %s\n", 
module_name, sys_dlerror()));
+               DEBUG(0, ("Error trying to resolve symbol 'init_module' in %s: %s\n", 
+full_module_name, sys_dlerror()));
                return NT_STATUS_UNSUCCESSFUL;
        }
 
        nt_status = init();
 
-       DEBUG(2, ("Module '%s' loaded\n", module_name));
+       DEBUG(2, ("Module '%s' loaded\n", full_module_name));
 
        return nt_status;
 }
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/lib/util_unistr.c HEAD-fix/source/lib/util_unistr.c
--- HEAD/source/lib/util_unistr.c       Sun Nov 10 00:34:38 2002
+++ HEAD-fix/source/lib/util_unistr.c   Sun Nov 24 17:31:13 2002
@@ -43,8 +43,8 @@ void load_case_tables(void)
        if (initialised) return;
        initialised = 1;
 
-       upcase_table = map_file(lib_path("upcase.dat"), 0x20000);
-       lowcase_table = map_file(lib_path("lowcase.dat"), 0x20000);
+       upcase_table = map_file(sambadata_path("upcase.dat"), 0x20000);
+       lowcase_table = map_file(sambadata_path("lowcase.dat"), 0x20000);
 
        /* we would like Samba to limp along even if these tables are
           not available */
@@ -108,7 +108,7 @@ void init_valid_table(void)
        if (initialised && mapped_file) return;
        initialised = 1;
 
-       valid_table = map_file(lib_path("valid.dat"), 0x10000);
+       valid_table = map_file(sambadata_path("valid.dat"), 0x10000);
        if (valid_table) {
                mapped_file = 1;
                return;
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/param/loadparm.c HEAD-fix/source/param/loadparm.c
--- HEAD/source/param/loadparm.c        Mon Nov 25 06:45:26 2002
+++ HEAD-fix/source/param/loadparm.c    Mon Nov 25 06:46:44 2002
@@ -111,6 +111,7 @@ typedef struct
        char *szPrivateDir;
        char **szPassdbBackend;
        char **szSamBackend;
+       char *szModulesPath;
        char **szModules;
        char *szPasswordServer;
        char *szSocketOptions;
@@ -796,6 +797,7 @@ static struct parm_struct parm_table[] =
        {"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, 
FLAG_HIDE},
        {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL 
| FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
        {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE},
+       {"modules path", P_STRING, P_GLOBAL, &Globals.szModulesPath, NULL, NULL, 
+FLAG_BASIC | FLAG_GLOBAL},
        {"modules", P_LIST, P_GLOBAL, &Globals.szModules, NULL, NULL, FLAG_BASIC | 
FLAG_GLOBAL},
 
        {"Logging Options", P_SEP, P_SEPARATOR},
@@ -1382,6 +1384,8 @@ static void init_globals(void)
        Globals.ldap_ssl = LDAP_SSL_ON;
        Globals.ldap_passwd_sync = LDAP_PASSWD_SYNC_OFF;
 
+       string_set(&Globals.szModulesPath, dyn_MODULESDIR);
+
 /* these parameters are set to defaults that are more appropriate
    for the increasing samba install base:
 
@@ -1566,6 +1570,7 @@ static FN_GLOBAL_STRING(lp_announce_vers
 FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases)
 FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend)
 FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend)
+FN_GLOBAL_STRING(lp_modules_path, &Globals.szModulesPath)
 FN_GLOBAL_LIST(lp_modules, &Globals.szModules)
 FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction)
 FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript)


Reply via email to