diff options
-rw-r--r-- | source3/client/clitar.c | 58 | ||||
-rwxr-xr-x | source3/selftest/tests.py | 42 | ||||
-rw-r--r-- | source3/wscript | 20 | ||||
-rwxr-xr-x | source3/wscript_build | 5 |
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 |