summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/client/clitar.c58
-rwxr-xr-xsource3/selftest/tests.py42
-rw-r--r--source3/wscript20
-rwxr-xr-xsource3/wscript_build5
4 files changed, 110 insertions, 15 deletions
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index 265a77bff6c..1e2b4f0840a 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -71,6 +71,9 @@
#include "client/client_proto.h"
#include "client/clitar_proto.h"
#include "libsmb/libsmb.h"
+
+#ifdef HAVE_LIBARCHIVE
+
#include <archive.h>
#include <archive_entry.h>
@@ -1671,3 +1674,58 @@ static char *path_base_name (const char *path)
return base;
}
+
+#else
+
+#define NOT_IMPLEMENTED DEBUG(0, ("tar mode not compiled. build with --with-libarchive\n"))
+
+struct tar
+{
+ int dummy;
+};
+
+struct tar tar_ctx;
+
+int cmd_block(void)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+int cmd_tarmode(void)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+int cmd_setmode(void)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+int cmd_tar(void)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+int tar_process(struct tar* tar)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+int tar_parse_args(struct tar *tar, const char *flag, const char **val, int valsize)
+{
+ NOT_IMPLEMENTED;
+ return 1;
+}
+
+bool tar_to_process(struct tar *tar)
+{
+ NOT_IMPLEMENTED;
+ return false;
+}
+
+#endif
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 9676b741418..b8f477a8494 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -201,15 +201,39 @@ for env in ["s3dc"]:
# encrypted
plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "-e"])
- # Test smbclient/tarmode
- plantestsuite("samba3.blackbox.smbclient_tarmode (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
-
- # Test suite for new smbclient/tar with libarchive (GSoC 13)
- plantestsuite("samba3.blackbox.smbclient_tar (%s)" % env, env,
- [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
- '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
- '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH', '-d', '$PREFIX',
- '-b', smbclient3, '--subunit', '--', configuration])
+
+ #
+ # tar command tests
+ #
+
+ # find config.h
+ try:
+ config_h = os.environ["CONFIG_H"]
+ except KeyError:
+ config_h = os.path.join(samba4bindir, "default/include/config.h")
+
+ # see if libarchive is supported
+ f = open(config_h, 'r')
+ try:
+ have_libarchive = ("HAVE_LIBARCHIVE 1" in f.read())
+ finally:
+ f.close()
+
+ # tar command enabled only if built with libarchive
+ if have_libarchive:
+ # Test smbclient/tarmode
+ plantestsuite("samba3.blackbox.smbclient_tarmode (%s)" % env, env,
+ [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
+ '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
+ '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
+
+ # Test suite for new smbclient/tar with libarchive (GSoC 13)
+ plantestsuite("samba3.blackbox.smbclient_tar (%s)" % env, env,
+ [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
+ '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
+ '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH',
+ '-d', '$PREFIX', '-b', smbclient3,
+ '--subunit', '--', configuration])
#TODO encrypted against member, with member creds, and with DC creds
plantestsuite("samba3.blackbox.net.misc", "s3dc:local",
diff --git a/source3/wscript b/source3/wscript
index 31ec1a24118..8382160d1c8 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -43,6 +43,7 @@ def set_options(opt):
opt.SAMBA3_ADD_OPTION('dmapi', default=None) # None means autodetection
opt.SAMBA3_ADD_OPTION('fam', default=None) # None means autodetection
opt.SAMBA3_ADD_OPTION('profiling-data', default=False)
+ opt.SAMBA3_ADD_OPTION('libarchive', default=None)
opt.SAMBA3_ADD_OPTION('cluster-support', default=None)
@@ -75,10 +76,6 @@ def configure(conf):
if sys.platform != 'openbsd5':
conf.ADD_LDFLAGS("-Wl,--export-dynamic", testflags=True)
- # libarchive in smbclient
- conf.CHECK_HEADERS('archive.h')
- conf.CHECK_LIB('libarchive')
-
conf.CHECK_HEADERS('execinfo.h libexc.h libunwind.h netdb.h')
conf.CHECK_HEADERS('linux/falloc.h')
@@ -197,6 +194,21 @@ main() {
elif check_for_fam:
Logs.warn('no suitable FAM library found')
+ # check for libarchive (tar command in smbclient)
+ use_libarchive = False
+ # None means autodetect
+ if Options.options.with_libarchive is None:
+ Logs.info("Checking for libarchive existence")
+ if conf.CHECK_HEADERS('archive.h') and conf.CHECK_LIB('archive'):
+ use_libarchive = True
+ elif Options.options.with_libarchive == True:
+ conf.CHECK_HEADERS('archive.h', mandatory=True)
+ conf.CHECK_LIB('archive', mandatory=True)
+ use_libarchive = True
+
+ if use_libarchive:
+ conf.DEFINE('SAMBA_LIBARCHIVE_LIBS', '-larchive')
+
# check for DMAPI libs
Logs.info("Checking for DMAPI library existence")
conf.env['dmapi_lib'] = ''
diff --git a/source3/wscript_build b/source3/wscript_build
index fb98e543e9e..9265e00c395 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -995,7 +995,6 @@ bld.SAMBA3_BINARY('client/smbclient',
source='''client/client.c
client/clitar.c
client/dnsbrowse.c''',
- ldflags='-larchive',
deps='''
talloc
popt_samba3
@@ -1005,7 +1004,9 @@ bld.SAMBA3_BINARY('client/smbclient',
libsmb
msrpc3
RPC_NDR_SRVSVC
- cli_smb_common''')
+ cli_smb_common
+ '''+
+ ('archive' if bld.CONFIG_SET('HAVE_LIBARCHIVE') else ''))
bld.SAMBA3_BINARY('net',
source='''utils/net.c