[SCM] Samba Shared Repository - branch v3-devel updated - release-3-2-0pre2-3745-g81030e4

Michael Adam obnox at samba.org
Fri Aug 15 21:22:38 GMT 2008


The branch, v3-devel has been updated
       via  81030e49ce344260d279a3112b13a21ce3520748 (commit)
       via  bb19634138cfd1f527c44e16a44aa21ebee50c1c (commit)
       via  3346dd40832e8d61edfe4c56dce6fe85031f20f1 (commit)
       via  22fb3ef1bb4abb33b49d275f9a5d85a1924c22ea (commit)
       via  5ef9da6f4f04b07804b389902862fae0fbbfed13 (commit)
       via  bcb868e4340a856c4009450479628088a8a1628c (commit)
       via  34309f097f5c7321930bf6c2ea2447de1008130c (commit)
       via  b17d1ff646e22c3e979224d119b283fc3af780a8 (commit)
      from  85a781fa0248fcd0cefcc4de25b3dea3e37d5844 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-devel


- Log -----------------------------------------------------------------
commit 81030e49ce344260d279a3112b13a21ce3520748
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:45:57 2008 +0200

    popt: add support for setting MODULESDIR via popt_common_dynconfig.
    
    Michael

commit bb19634138cfd1f527c44e16a44aa21ebee50c1c
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:50:56 2008 +0200

    svcctl: use MODULESDIR instead of LIBDIR for the svcctl script directory.
    
    Michael

commit 3346dd40832e8d61edfe4c56dce6fe85031f20f1
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:49:19 2008 +0200

    libgpo: use MODULESDIR instead of LIBDIR for the group policy extensions.
    
    Michael

commit 22fb3ef1bb4abb33b49d275f9a5d85a1924c22ea
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:47:30 2008 +0200

    Use module_path() instead of lib_path() for loading shared modules.
    
    Michael

commit 5ef9da6f4f04b07804b389902862fae0fbbfed13
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:44:14 2008 +0200

    Add modules_path() to construct paths to files in MODULESDIR.
    
    Michael

commit bcb868e4340a856c4009450479628088a8a1628c
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:46:46 2008 +0200

    buildoptions: output MODULESDIR.
    
    Michael

commit 34309f097f5c7321930bf6c2ea2447de1008130c
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:43:31 2008 +0200

    dynconfig: add support for MODULESDIR.
    
    Michael

commit b17d1ff646e22c3e979224d119b283fc3af780a8
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 15 00:36:49 2008 +0200

    configure: Add --with-modulesdir to accompany --with-libdir.
    
    This starts the seplitting of libdir in to libdir and modulesdir.
    Our shared libs should go into libdir, the internal shared modules,
    codepages, and other stuff that was originally in libdir, should
    go into modulesdir.
    
    The idea behind this is, that in a typical installation,
    the shared (and static) libraries (as libtalloc, libsmbclient,
    libwbclient and others) should be put into /usr/lib, while
    the e.g. the vfs modules should reside in /usr/lib/samba.
    
    This is meant to ease the work of packagers and reduce
    the needs for manual interaction and workarounds.
    
    Michael

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile.in               |   21 ++++++++++++---------
 source/dynconfig.c               |    1 +
 source/include/dynconfig.h       |    4 ++++
 source/include/proto.h           |    1 +
 source/lib/module.c              |    2 +-
 source/lib/popt_common.c         |   10 ++++++++++
 source/lib/util.c                |   13 +++++++++++++
 source/libgpo/gpext/gpext.c      |    2 +-
 source/m4/check_path.m4          |   23 +++++++++++++++++++++--
 source/script/mkbuildoptions.awk |    1 +
 source/services/services_db.c    |    6 +++---
 source/services/svc_rcinit.c     |    6 +++---
 12 files changed, 71 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index 3ac09f3..d92ecec 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -99,17 +99,18 @@ BINDIR = @bindir@
 SBINDIR = @sbindir@
 ROOTSBINDIR = @rootsbindir@
 LIBDIR = @libdir@
+MODULESDIR = @modulesdir@
 INCLUDEDIR=@includedir@
 PAMMODULESDIR = @pammodulesdir@
-VFSLIBDIR = $(LIBDIR)/vfs
-PDBLIBDIR = $(LIBDIR)/pdb
-RPCLIBDIR = $(LIBDIR)/rpc
-IDMAPLIBDIR = $(LIBDIR)/idmap
-NSSINFOLIBDIR = $(LIBDIR)/nss_info
-CHARSETLIBDIR = $(LIBDIR)/charset
-AUTHLIBDIR = $(LIBDIR)/auth
-CONFIGLIBDIR = $(LIBDIR)/config
-GPEXTLIBDIR = $(LIBDIR)/gpext
+VFSLIBDIR = $(MODULESDIR)/vfs
+PDBLIBDIR = $(MODULESDIR)/pdb
+RPCLIBDIR = $(MODULESDIR)/rpc
+IDMAPLIBDIR = $(MODULESDIR)/idmap
+NSSINFOLIBDIR = $(MODULESDIR)/nss_info
+CHARSETLIBDIR = $(MODULESDIR)/charset
+AUTHLIBDIR = $(MODULESDIR)/auth
+CONFIGLIBDIR = $(MODULESDIR)/config
+GPEXTLIBDIR = $(MODULESDIR)/gpext
 CONFIGDIR = @configdir@
 VARDIR = @localstatedir@
 MANDIR = @mandir@
@@ -166,6 +167,7 @@ PATH_FLAGS = -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" \
 	-DLOCKDIR=\"$(LOCKDIR)\" \
 	-DPIDDIR=\"$(PIDDIR)\" \
 	-DLIBDIR=\"$(LIBDIR)\" \
+	-DMODULESDIR=\"$(MODULESDIR)\" \
 	-DLOGFILEBASE=\"$(LOGFILEBASE)\" \
 	-DSHLIBEXT=\"@SHLIBEXT@\" \
 	-DCTDBDIR=\"$(CTDBDIR)\" \
@@ -2541,6 +2543,7 @@ showlayout::
 	@echo "  bindir:      $(BINDIR)"
 	@echo "  sbindir:     $(SBINDIR)"
 	@echo "  libdir:      $(LIBDIR)"
+	@echo "  modulesdir:  $(MODULESDIR)"
 	@echo "  vardir:      $(VARDIR)"
 	@echo "  mandir:      $(MANDIR)"
 	@echo "  privatedir:  $(PRIVATE_DIR)"
diff --git a/source/dynconfig.c b/source/dynconfig.c
index 241a659..3a54507 100644
--- a/source/dynconfig.c
+++ b/source/dynconfig.c
@@ -73,6 +73,7 @@ DEFINE_DYN_CONFIG_PARAM(LOGFILEBASE) /** Log file directory. **/
 DEFINE_DYN_CONFIG_PARAM(LMHOSTSFILE) /** Statically configured LanMan hosts. **/
 DEFINE_DYN_CONFIG_PARAM(CODEPAGEDIR)
 DEFINE_DYN_CONFIG_PARAM(LIBDIR)
+DEFINE_DYN_CONFIG_PARAM(MODULESDIR)
 DEFINE_DYN_CONFIG_PARAM(SHLIBEXT)
 DEFINE_DYN_CONFIG_PARAM(LOCKDIR)
 DEFINE_DYN_CONFIG_PARAM(PIDDIR)
diff --git a/source/include/dynconfig.h b/source/include/dynconfig.h
index 8a9bb5e..758bde3 100644
--- a/source/include/dynconfig.h
+++ b/source/include/dynconfig.h
@@ -55,6 +55,10 @@ const char *get_dyn_LIBDIR(void);
 const char *set_dyn_LIBDIR(const char *newpath);
 bool is_default_dyn_LIBDIR(void);
 
+const char *get_dyn_MODULESDIR(void);
+const char *set_dyn_MODULESDIR(const char *newpath);
+bool is_default_dyn_MODULESDIR(void);
+
 const char *get_dyn_SHLIBEXT(void);
 const char *set_dyn_SHLIBEXT(const char *newpath);
 bool is_default_dyn_SHLIBEXT(void);
diff --git a/source/include/proto.h b/source/include/proto.h
index 7929033..db1adb6 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -1340,6 +1340,7 @@ char *myhostname(void);
 char *lock_path(const char *name);
 char *pid_path(const char *name);
 char *lib_path(const char *name);
+char *modules_path(const char *name);
 char *data_path(const char *name);
 char *state_path(const char *name);
 const char *shlib_ext(void);
diff --git a/source/lib/module.c b/source/lib/module.c
index 2e56e8e..7698338 100644
--- a/source/lib/module.c
+++ b/source/lib/module.c
@@ -118,7 +118,7 @@ NTSTATUS smb_probe_module(const char *subsystem, const char *module)
 
 	full_path = talloc_asprintf(ctx,
 			"%s/%s.%s",
-			lib_path(subsystem),
+			modules_path(subsystem),
 			module,
 			shlib_ext());
 	if (!full_path) {
diff --git a/source/lib/popt_common.c b/source/lib/popt_common.c
index b151f22..8ceac26 100644
--- a/source/lib/popt_common.c
+++ b/source/lib/popt_common.c
@@ -184,6 +184,7 @@ struct poptOption popt_common_debuglevel[] = {
  *		--swatdir
  *		--lmhostsfile
  *		--libdir
+ *		--modulesdir
  *		--shlibext
  *		--lockdir
  *		--piddir
@@ -197,6 +198,7 @@ enum dyn_item{
 	DYN_SWATDIR,
 	DYN_LMHOSTSFILE,
 	DYN_LIBDIR,
+	DYN_MODULESDIR,
 	DYN_SHLIBEXT,
 	DYN_LOCKDIR,
 	DYN_PIDDIR,
@@ -242,6 +244,12 @@ static void popt_dynconfig_callback(poptContext con,
 		}
 		break;
 
+	case DYN_MODULESDIR:
+		if (arg) {
+			set_dyn_MODULESDIR(arg);
+		}
+		break;
+
 	case DYN_SHLIBEXT:
 		if (arg) {
 			set_dyn_SHLIBEXT(arg);
@@ -289,6 +297,8 @@ const struct poptOption popt_common_dynconfig[] = {
 	    "Path to lmhosts file", "LMHOSTSFILE" },
 	{ "libdir", '\0' , POPT_ARG_STRING, NULL, DYN_LIBDIR,
 	    "Path to shared library directory", "LIBDIR" },
+	{ "modulesdir", '\0' , POPT_ARG_STRING, NULL, DYN_MODULESDIR,
+	    "Path to shared modules directory", "MODULESDIR" },
 	{ "shlibext", '\0' , POPT_ARG_STRING, NULL, DYN_SHLIBEXT,
 	    "Shared library extension", "SHLIBEXT" },
 	{ "lockdir", '\0' , POPT_ARG_STRING, NULL, DYN_LOCKDIR,
diff --git a/source/lib/util.c b/source/lib/util.c
index 0fdc995..201d87a 100644
--- a/source/lib/util.c
+++ b/source/lib/util.c
@@ -2603,6 +2603,19 @@ char *lib_path(const char *name)
 }
 
 /**
+ * @brief Returns an absolute path to a file in the Samba modules directory.
+ *
+ * @param name File to find, relative to MODULESDIR.
+ *
+ * @retval Pointer to a string containing the full path.
+ **/
+
+char *modules_path(const char *name)
+{
+	return talloc_asprintf(talloc_tos(), "%s/%s", get_dyn_MODULESDIR(), name);
+}
+
+/**
  * @brief Returns an absolute path to a file in the Samba data directory.
  *
  * @param name File to find, relative to CODEPAGEDIR.
diff --git a/source/libgpo/gpext/gpext.c b/source/libgpo/gpext/gpext.c
index 184a2fa..2ae9e2c 100644
--- a/source/libgpo/gpext/gpext.c
+++ b/source/libgpo/gpext/gpext.c
@@ -479,7 +479,7 @@ static NTSTATUS gp_glob_ext_list(TALLOC_CTX *mem_ctx,
 	SMB_STRUCT_DIR *dir = NULL;
 	SMB_STRUCT_DIRENT *dirent = NULL;
 
-	dir = sys_opendir(lib_path(SAMBA_SUBSYSTEM_GPEXT));
+	dir = sys_opendir(modules_path(SAMBA_SUBSYSTEM_GPEXT));
 	if (!dir) {
 		return map_nt_error_from_unix(errno);
 	}
diff --git a/source/m4/check_path.m4 b/source/m4/check_path.m4
index 0537b7a..c39efc6 100644
--- a/source/m4/check_path.m4
+++ b/source/m4/check_path.m4
@@ -22,10 +22,11 @@ test "${mandir}" || mandir="\${prefix}/man"
 logfilebase="\${VARDIR}"
 privatedir="\${prefix}/private"
 test "${libdir}" || libdir="\${prefix}/lib"
+modulesdir="\${LIBDIR}"
 pammodulesdir="\${LIBDIR}/security"
 configdir="\${LIBDIR}"
 swatdir="\${prefix}/swat"
-codepagedir="\${LIBDIR}"
+codepagedir="\${MODULESDIR}"
 statedir="\${LOCKDIR}"
 cachedir="\${LOCKDIR}"
 
@@ -39,9 +40,10 @@ AC_ARG_WITH(fhs,
     logfilebase="\${VARDIR}/log/samba"
     privatedir="\${CONFIGDIR}/private"
     test "${libdir}" || libdir="\${prefix}/lib/samba"
+    modulesdir="\${LIBDIR}"
     configdir="\${sysconfdir}/samba"
     swatdir="\${DATADIR}/samba/swat"
-    codepagedir="\${LIBDIR}"
+    codepagedir="\${MODULESDIR}"
     statedir="\${VARDIR}/lib/samba"
     cachedir="\${VARDIR}/lib/samba"
     AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
@@ -191,6 +193,22 @@ AC_ARG_WITH(libdir,
   esac])
 
 #################################################
+# set shared modules (internal lib) directory location
+AC_ARG_WITH(modulesdir,
+[AS_HELP_STRING([--with-modulesdir=DIR], [Where to put shared modules ($libdir)])],
+[ case "$withval" in
+  yes|no)
+  #
+  # Just in case anybody does it
+  #
+    AC_MSG_WARN([--with-modulesdir without argument - will use default])
+  ;;
+  * )
+    modulesdir="$withval"
+    ;;
+  esac])
+
+#################################################
 # set PAM modules directory location
 AC_ARG_WITH(pammodulesdir,
 [AS_HELP_STRING([--with-pammodulesdir=DIR], [Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)])],
@@ -236,6 +254,7 @@ AC_SUBST(statedir)
 AC_SUBST(cachedir)
 AC_SUBST(rootsbindir)
 AC_SUBST(pammodulesdir)
+AC_SUBST(modulesdir)
 
 #################################################
 # set prefix for 'make test'
diff --git a/source/script/mkbuildoptions.awk b/source/script/mkbuildoptions.awk
index c4e257f..02562cf 100644
--- a/source/script/mkbuildoptions.awk
+++ b/source/script/mkbuildoptions.awk
@@ -84,6 +84,7 @@ BEGIN {
 	print "       output(screen,\"   LMHOSTSFILE: %s\\n\",get_dyn_LMHOSTSFILE());";
 
 	print "       output(screen,\"   LIBDIR: %s\\n\",get_dyn_LIBDIR());";
+	print "       output(screen,\"   MODULESDIR: %s\\n\",get_dyn_MODULESDIR());";
 	print "       output(screen,\"   SHLIBEXT: %s\\n\",get_dyn_SHLIBEXT());";
 
 	print "       output(screen,\"   LOCKDIR: %s\\n\",get_dyn_LOCKDIR());";
diff --git a/source/services/services_db.c b/source/services/services_db.c
index 620b036..49761c3 100644
--- a/source/services/services_db.c
+++ b/source/services/services_db.c
@@ -199,7 +199,7 @@ static bool read_init_file( const char *servicename, struct rcinit_file_informat
 
 	/* attempt the file open */
 
-	filepath = talloc_asprintf(info, "%s/%s/%s", get_dyn_LIBDIR(),
+	filepath = talloc_asprintf(info, "%s/%s/%s", get_dyn_MODULESDIR(),
 				SVCCTL_SCRIPT_DIR, servicename);
 	if (!filepath) {
 		TALLOC_FREE(info);
@@ -277,7 +277,7 @@ static void fill_service_values( const char *name, REGVAL_CTR *values )
 		if ( strequal( name, builtin_svcs[i].servicename ) ) {
 			char *pstr = NULL;
 			if (asprintf(&pstr, "%s/%s/%s",
-					get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR,
+					get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR,
 					builtin_svcs[i].daemon) > 0) {
 				init_unistr2( &ipath, pstr, UNI_STR_TERMINATE );
 				SAFE_FREE(pstr);
@@ -297,7 +297,7 @@ static void fill_service_values( const char *name, REGVAL_CTR *values )
 		char *dispname = NULL;
 		struct rcinit_file_information *init_info = NULL;
 
-		if (asprintf(&pstr, "%s/%s/%s",get_dyn_LIBDIR(),
+		if (asprintf(&pstr, "%s/%s/%s",get_dyn_MODULESDIR(),
 					SVCCTL_SCRIPT_DIR, name) > 0) {
 			init_unistr2( &ipath, pstr, UNI_STR_TERMINATE );
 			SAFE_FREE(pstr);
diff --git a/source/services/svc_rcinit.c b/source/services/svc_rcinit.c
index b7684b9..3d9e667 100644
--- a/source/services/svc_rcinit.c
+++ b/source/services/svc_rcinit.c
@@ -28,7 +28,7 @@ static WERROR rcinit_stop( const char *service, SERVICE_STATUS *status )
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s stop",
-				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 
@@ -60,7 +60,7 @@ static WERROR rcinit_start( const char *service )
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s start",
-				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 
@@ -87,7 +87,7 @@ static WERROR rcinit_status( const char *service, SERVICE_STATUS *status )
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s status",
-				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list