DPDK patches and discussions
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: Jan Viktorin <viktorin@rehivetech.com>
Cc: David Hunt <david.hunt@intel.com>, dev@dpdk.org
Subject: [dpdk-dev] [PATCH] config: make libarchive optional
Date: Tue, 14 Jun 2016 10:59:49 +0200	[thread overview]
Message-ID: <1465894789-20733-1-git-send-email-thomas.monjalon@6wind.com> (raw)
In-Reply-To: <575FBF1A.5080005@intel.com>

The commit 66819e6 has introduced a dependency on libarchive to be able
to use some tar resources in the unit tests.
It is now an optional dependency because some systems do not have it
installed.

If CONFIG_RTE_APP_TEST_RESOURCE_TAR is disabled, the PCI test will not
be run. When a "configure" script will be integrated, the libarchive
availability could be checked to automatically enable the option.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 app/test/Makefile                 | 11 +++++++----
 app/test/resource.c               |  8 ++++++--
 app/test/test_mp_secondary.c      |  4 ++++
 app/test/test_resource.c          |  5 +++++
 config/common_base                |  1 +
 doc/guides/linux_gsg/sys_reqs.rst |  3 +++
 scripts/test-build.sh             |  4 ++++
 7 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/app/test/Makefile b/app/test/Makefile
index 7e4d484..5ca5c0b 100644
--- a/app/test/Makefile
+++ b/app/test/Makefile
@@ -71,9 +71,6 @@ SRCS-y += test.c
 SRCS-y += resource.c
 SRCS-y += test_resource.c
 $(eval $(call linked_resource,test_resource_c,resource.c))
-$(eval $(call linked_tar_resource,test_resource_tar,test_resource.c))
-SRCS-y += test_pci.c
-$(eval $(call linked_tar_resource,test_pci_sysfs,test_pci_sysfs))
 SRCS-y += test_prefetch.c
 SRCS-y += test_byteorder.c
 SRCS-y += test_per_lcore.c
@@ -88,6 +85,13 @@ SRCS-y += test_ring.c
 SRCS-y += test_ring_perf.c
 SRCS-y += test_pmd_perf.c
 
+ifeq ($(CONFIG_RTE_APP_TEST_RESOURCE_TAR),y)
+$(eval $(call linked_tar_resource,test_resource_tar,test_resource.c))
+SRCS-y += test_pci.c
+$(eval $(call linked_tar_resource,test_pci_sysfs,test_pci_sysfs))
+LDLIBS += -larchive
+endif
+
 ifeq ($(CONFIG_RTE_LIBRTE_TABLE),y)
 SRCS-y += test_table.c
 SRCS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test_table_pipeline.c
@@ -194,7 +198,6 @@ CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -D_GNU_SOURCE
 
 LDLIBS += -lm
-LDLIBS += -larchive
 
 # Disable VTA for memcpy test
 ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
diff --git a/app/test/resource.c b/app/test/resource.c
index 8c42eea..0e2b62c 100644
--- a/app/test/resource.c
+++ b/app/test/resource.c
@@ -33,8 +33,6 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <archive.h>
-#include <archive_entry.h>
 #include <errno.h>
 #include <sys/queue.h>
 
@@ -97,6 +95,10 @@ int resource_fwrite_file(const struct resource *r, const char *fname)
 	return ret;
 }
 
+#ifdef RTE_APP_TEST_RESOURCE_TAR
+#include <archive.h>
+#include <archive_entry.h>
+
 static int do_copy(struct archive *r, struct archive *w)
 {
 	const void *buf;
@@ -295,6 +297,8 @@ fail:
 	return -1;
 }
 
+#endif /* RTE_APP_TEST_RESOURCE_TAR */
+
 void resource_register(struct resource *r)
 {
 	TAILQ_INSERT_TAIL(&resource_list, r, next);
diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c
index 4dfe418..f66b68f 100644
--- a/app/test/test_mp_secondary.c
+++ b/app/test/test_mp_secondary.c
@@ -245,6 +245,7 @@ run_object_creation_tests(void)
 	printf("# Checked rte_lpm_create() OK\n");
 #endif
 
+#ifdef RTE_APP_TEST_RESOURCE_TAR
 	/* Run a test_pci call */
 	if (test_pci() != 0) {
 		printf("PCI scan failed in secondary\n");
@@ -252,6 +253,7 @@ run_object_creation_tests(void)
 			return -1;
 	} else
 		printf("PCI scan succeeded in secondary\n");
+#endif
 
 	return 0;
 }
@@ -266,9 +268,11 @@ test_mp_secondary(void)
 {
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
 		if (!test_pci_run) {
+#ifdef RTE_APP_TEST_RESOURCE_TAR
 			printf("=== Running pre-requisite test of test_pci\n");
 			test_pci();
 			printf("=== Requisite test done\n");
+#endif
 		}
 		return run_secondary_instances();
 	}
diff --git a/app/test/test_resource.c b/app/test/test_resource.c
index 1e85040..39a6468 100644
--- a/app/test/test_resource.c
+++ b/app/test/test_resource.c
@@ -85,6 +85,7 @@ static int test_resource_c(void)
 	return 0;
 }
 
+#ifdef RTE_APP_TEST_RESOURCE_TAR
 REGISTER_LINKED_RESOURCE(test_resource_tar);
 
 static int test_resource_tar(void)
@@ -111,6 +112,8 @@ static int test_resource_tar(void)
 	return 0;
 }
 
+#endif /* RTE_APP_TEST_RESOURCE_TAR */
+
 static int test_resource(void)
 {
 	if (test_resource_dpdk())
@@ -119,8 +122,10 @@ static int test_resource(void)
 	if (test_resource_c())
 		return -1;
 
+#ifdef RTE_APP_TEST_RESOURCE_TAR
 	if (test_resource_tar())
 		return -1;
+#endif /* RTE_APP_TEST_RESOURCE_TAR */
 
 	return 0;
 }
diff --git a/config/common_base b/config/common_base
index 47c26f6..b9ba405 100644
--- a/config/common_base
+++ b/config/common_base
@@ -546,6 +546,7 @@ CONFIG_RTE_INSECURE_FUNCTION_WARNING=n
 # Compile the test application
 #
 CONFIG_RTE_APP_TEST=y
+CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
 
 #
 # Compile the PMD test application
diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index 959709e..b321544 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -101,6 +101,9 @@ Compilation of the DPDK
 *   libpcap headers and libraries (libpcap-devel) to compile and use the libpcap-based poll-mode driver.
     This driver is disabled by default and can be enabled by setting ``CONFIG_RTE_LIBRTE_PMD_PCAP=y`` in the build time config file.
 
+*   libarchive headers and library are needed for some unit tests using tar to get their resources.
+
+
 Running DPDK Applications
 -------------------------
 
diff --git a/scripts/test-build.sh b/scripts/test-build.sh
index 48539c1..9a11f94 100755
--- a/scripts/test-build.sh
+++ b/scripts/test-build.sh
@@ -35,6 +35,7 @@ default_path=$PATH
 # Load config options:
 # - AESNI_MULTI_BUFFER_LIB_PATH
 # - DPDK_BUILD_TEST_CONFIGS (defconfig1+option1+option2 defconfig2)
+# - DPDK_DEP_ARCHIVE
 # - DPDK_DEP_CFLAGS
 # - DPDK_DEP_LDFLAGS
 # - DPDK_DEP_MOFED (y/[n])
@@ -111,6 +112,7 @@ reset_env ()
 {
 	export PATH=$default_path
 	unset CROSS
+	unset DPDK_DEP_ARCHIVE
 	unset DPDK_DEP_CFLAGS
 	unset DPDK_DEP_LDFLAGS
 	unset DPDK_DEP_MOFED
@@ -149,6 +151,8 @@ config () # <directory> <target> <options>
 		sed -ri         's,(PCI_CONFIG=)n,\1y,' $1/.config
 		sed -ri    's,(LIBRTE_IEEE1588=)n,\1y,' $1/.config
 		sed -ri             's,(BYPASS=)n,\1y,' $1/.config
+		test "$DPDK_DEP_ARCHIVE" != y || \
+		sed -ri       's,(RESOURCE_TAR=)n,\1y,' $1/.config
 		test "$DPDK_DEP_MOFED" != y || \
 		sed -ri           's,(MLX._PMD=)n,\1y,' $1/.config
 		test "$DPDK_DEP_SZE" != y || \
-- 
2.7.0

  parent reply	other threads:[~2016-06-14  9:00 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-29 13:11 [dpdk-dev] [RFC 0/4] Include resources in tests Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 1/4] app/test: introduce resources for tests Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 2/4] app/test: support resources externally linked Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 3/4] app/test: add functions to create files from resources Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 4/4] app/test: support resources archived by tar Jan Viktorin
2016-05-05 13:33   ` Bruce Richardson
2016-05-05 17:05     ` Jan Viktorin
2016-05-06  9:02       ` Bruce Richardson
2016-04-29 14:42 ` [dpdk-dev] [RFC 0/4] Include resources in tests Bruce Richardson
2016-04-29 20:52   ` Jan Viktorin
2016-05-05 13:29 ` Bruce Richardson
2016-05-05 17:03   ` Jan Viktorin
2016-05-06  9:03     ` Bruce Richardson
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 00/10] " Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 01/10] app/test: introduce resources for tests Jan Viktorin
2016-05-06 14:01   ` Thomas Monjalon
2016-05-06 16:20     ` Jan Viktorin
2016-05-12 14:58       ` Thomas Monjalon
2016-05-12 15:01         ` Jan Viktorin
2016-05-09 15:36     ` Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 02/10] app/test: support resources externally linked Jan Viktorin
2016-05-06 14:32   ` Thomas Monjalon
2016-05-06 16:31     ` Jan Viktorin
2016-05-09 15:19     ` Jan Viktorin
2016-05-12 15:05       ` Thomas Monjalon
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 03/10] app/test: add functions to create files from resources Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 04/10] app/test: support resources archived by tar Jan Viktorin
2016-05-12 15:26   ` Thomas Monjalon
2016-05-12 15:28     ` Thomas Monjalon
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 05/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 06/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 07/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 08/10] eal/pci: replace SYSFS_PCI_DEVICES with pci_get_sysfs_path() Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 09/10] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 00/11] Include resources in tests Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 01/11] app/test: introduce resources for tests Jan Viktorin
2016-05-12 15:13   ` Thomas Monjalon
2016-05-12 15:19   ` Thomas Monjalon
2016-05-12 15:26     ` Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 02/11] mk: define objcopy-specific target and arch Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 03/11] app/test: support resources externally linked Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 04/11] app/test: add functions to create files from resources Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 05/11] app/test: support resources archived by tar Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 06/11] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-12 15:31   ` Thomas Monjalon
2016-05-12 15:53     ` Jan Viktorin
2016-05-12 16:08       ` Thomas Monjalon
2016-05-12 21:00         ` Jan Viktorin
2016-05-12 21:44           ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 07/11] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 08/11] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-12 15:34   ` Thomas Monjalon
2016-05-13 15:19     ` Jan Viktorin
2016-05-13 15:35       ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 09/11] eal/pci: replace SYSFS_PCI_DEVICES with pci_get_sysfs_path() Jan Viktorin
2016-05-12 15:41   ` Thomas Monjalon
2016-05-12 15:46     ` Jan Viktorin
2016-05-12 16:10       ` Thomas Monjalon
2016-05-13 15:26         ` Jan Viktorin
2016-05-12 15:44   ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 10/11] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 11/11] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 00/11] Include resources in tests Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 00/10] " Jan Viktorin
2016-06-13  8:20     ` Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 " Jan Viktorin
2016-06-13 18:32       ` Thomas Monjalon
2016-06-14  8:23         ` Hunt, David
2016-06-14  8:37           ` Thomas Monjalon
2016-06-14  8:59           ` Thomas Monjalon [this message]
2016-06-14  9:33             ` [dpdk-dev] [PATCH] config: make libarchive optional Jan Viktorin
2016-06-14  9:50               ` Thomas Monjalon
2016-06-14 10:01             ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
2016-06-14 12:53               ` Jan Viktorin
2016-06-14 13:33                 ` Thomas Monjalon
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 01/10] app/test: introduce resources for tests Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 02/10] mk: define objcopy-specific target and arch Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 03/10] app/test: support resources externally linked Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 04/10] app/test: add functions to create files from resources Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 05/10] app/test: support resources archived by tar Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 06/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 07/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 08/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 09/10] eal/pci: allow to override sysfs Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 01/10] app/test: introduce resources for tests Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 02/10] mk: define objcopy-specific target and arch Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 03/10] app/test: support resources externally linked Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 04/10] app/test: add functions to create files from resources Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 05/10] app/test: support resources archived by tar Jan Viktorin
2016-06-13 14:40     ` Thomas Monjalon
2016-06-13 14:43       ` Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 06/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 07/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 08/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 09/10] eal/pci: allow to override sysfs Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 01/11] app/test: introduce resources for tests Jan Viktorin
2016-05-19  8:51   ` Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 02/11] mk: define objcopy-specific target and arch Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 03/11] app/test: support resources externally linked Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 04/11] app/test: add functions to create files from resources Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 05/11] app/test: support resources archived by tar Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 06/11] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 07/11] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 08/11] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 09/11] eal/pci: allow to override sysfs Jan Viktorin
2016-05-19  8:51   ` Jan Viktorin
2016-05-17 18:35 ` [dpdk-dev] [PATCH v3 10/11] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-17 18:35 ` [dpdk-dev] [PATCH v3 11/11] app/test: do not dump PCI devices in blacklist test Jan Viktorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1465894789-20733-1-git-send-email-thomas.monjalon@6wind.com \
    --to=thomas.monjalon@6wind.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=viktorin@rehivetech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).