From patchwork Thu Jun 29 09:04:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 129106 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A198342D8A; Thu, 29 Jun 2023 11:05:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C245E42BAC; Thu, 29 Jun 2023 11:05:35 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id D161F42B8B for ; Thu, 29 Jun 2023 11:05:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688029534; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4FVTkr2r8RiB2VNxPjcrHwXaopvktii4YqeYtShSbvo=; b=RWiEfv2pFoPecUT39HstJ9pI2SXOHyqi843ZbWCVPIydRFUWe5k6DSEICVy0rmG7LiUU4m LRzv7pz0wdzFYRgoeJCe1bgsUZf8ZlE+PaBuPx4gb6WI+aRGzw1eq+HPcOT9WQm9pt3j6x HWhbodCRVMZJTbDjxVRq++y5cf0JrCs= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-392-7TlZqTK_MA2LDghYvURCGQ-1; Thu, 29 Jun 2023 05:05:32 -0400 X-MC-Unique: 7TlZqTK_MA2LDghYvURCGQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 972558022EF; Thu, 29 Jun 2023 09:05:31 +0000 (UTC) Received: from dmarchan.redhat.com (unknown [10.45.224.210]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9AF6D6B434; Thu, 29 Jun 2023 09:05:29 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, bluca@debian.org, tredaelli@redhat.com, i.maximets@ovn.org, james.r.harris@intel.com, mohammed@hawari.fr, =?utf-8?q?Morten_Br=C3=B8rup?= , Aaron Conole , Michael Santana , Bruce Richardson Subject: [PATCH v6 1/2] build: select deprecated libraries Date: Thu, 29 Jun 2023 11:04:58 +0200 Message-Id: <20230629090459.823130-2-david.marchand@redhat.com> In-Reply-To: <20230629090459.823130-1-david.marchand@redhat.com> References: <20230629090459.823130-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Rework deprecated libraries selection by introducing a new configuration option. This breaks existing configurations that were relying on disable_libs='' for enabling deprecated libraries. On the other hand, it will make enabling optional libraries more straightforward by taking the deprecated libraries out of the picture. Signed-off-by: David Marchand Acked-by: Morten Brørup --- Changes since v4: - changed the option to a list of libraries instead of a global on/off knob, - moved all deprecated libs checks under a single block for readability, --- .ci/linux-build.sh | 2 +- devtools/test-meson-builds.sh | 8 ++++---- lib/meson.build | 28 ++++++++++++++++++++-------- meson_options.txt | 4 +++- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 45f2729996..e0b62bac90 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -97,7 +97,7 @@ if [ "$MINI" = "true" ]; then OPTS="$OPTS -Denable_drivers=net/null" OPTS="$OPTS -Ddisable_libs=*" else - OPTS="$OPTS -Ddisable_libs=" + OPTS="$OPTS -Denable_deprecated_libs=*" fi OPTS="$OPTS -Dlibdir=lib" diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index 84b907d2ea..c41659d28b 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -120,10 +120,10 @@ config () # return fi options= - # deprecated libs may be disabled by default, so for complete builds ensure - # no libs are disabled - if ! echo $* | grep -q -- 'disable_libs' ; then - options="$options -Ddisable_libs=" + # deprecated libs are disabled by default, so for complete builds + # enable them + if ! echo $* | grep -q -- 'enable_deprecated_libs' ; then + options="$options -Denable_deprecated_libs=*" fi if echo $* | grep -qw -- '--default-library=shared' ; then options="$options -Dexamples=all" diff --git a/lib/meson.build b/lib/meson.build index fac2f52cad..73afd90b38 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -93,6 +93,15 @@ dpdk_libs_deprecated += [ 'kni', ] +enable_deprecated_libs = [] +foreach l:run_command(list_dir_globs, get_option('enable_deprecated_libs'), + check: true).stdout().split() + if not dpdk_libs_deprecated.contains(l) + continue + endif + enable_deprecated_libs += l +endforeach + disabled_libs = [] opt_disabled_libs = run_command(list_dir_globs, get_option('disable_libs'), check: true).stdout().split() @@ -137,16 +146,19 @@ foreach l:libraries deps += ['eal'] endif - if disabled_libs.contains(l) - build = false - reason = 'explicitly disabled via build config' - if dpdk_libs_deprecated.contains(l) - reason += ' (deprecated lib)' - endif - else - if dpdk_libs_deprecated.contains(l) + if dpdk_libs_deprecated.contains(l) + if not enable_deprecated_libs.contains(l) + build = false + reason = 'not in enabled deprecated libraries build config' + else warning('Enabling deprecated library, "@0@"'.format(l)) endif + elif disabled_libs.contains(l) + build = false + reason = 'explicitly disabled via build config' + endif + + if build subdir(l) endif if name != l diff --git a/meson_options.txt b/meson_options.txt index 82c8297065..839d4266c6 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -10,7 +10,7 @@ option('disable_apps', type: 'string', value: '', description: 'Comma-separated list of apps to explicitly disable.') option('disable_drivers', type: 'string', value: '', description: 'Comma-separated list of drivers to explicitly disable.') -option('disable_libs', type: 'string', value: 'flow_classify,kni', description: +option('disable_libs', type: 'string', value: '', description: 'Comma-separated list of libraries to explicitly disable. [NOTE: not all libs can be disabled]') option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-', description: 'Subdirectory of libdir where to install PMDs. Defaults to using a versioned subdirectory.') @@ -18,6 +18,8 @@ option('enable_docs', type: 'boolean', value: false, description: 'build documentation') option('enable_apps', type: 'string', value: '', description: 'Comma-separated list of apps to build. If unspecified, build all apps.') +option('enable_deprecated_libs', type: 'string', value: '', description: + 'Comma-separated list of deprecated libraries to explicitly enable.') option('enable_drivers', type: 'string', value: '', description: 'Comma-separated list of drivers to build. If unspecified, build all drivers.') option('enable_driver_sdk', type: 'boolean', value: false, description: From patchwork Thu Jun 29 09:04:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 129107 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2FFDB42D8A; Thu, 29 Jun 2023 11:05:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3B8AD42C4D; Thu, 29 Jun 2023 11:05:40 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 544E842D0E for ; Thu, 29 Jun 2023 11:05:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688029538; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=b3zetaS6+4eG3/99t4CjmR3rqno7RB6KahKwE3RBHS8=; b=H6vAeLHoAJRO1UEr0TxRms/LS75F7L88A/TY2FEI8OqwaK9t01spcMH8TeyYaidCCHgdmn dpsjvq7z22dReRBZQMXWXHnPaYoO+UjXDK59SLx47/1HyJYjbCjLBnSWgcMjoa6XboliBh Fbma/GyUIV+2kz4hSAxxFToDZ62TRl4= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-256-F5l5FQtjM0qWyszG4t0GvA-1; Thu, 29 Jun 2023 05:05:35 -0400 X-MC-Unique: F5l5FQtjM0qWyszG4t0GvA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1C28F282CCB4; Thu, 29 Jun 2023 09:05:35 +0000 (UTC) Received: from dmarchan.redhat.com (unknown [10.45.224.210]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7FEEC1121315; Thu, 29 Jun 2023 09:05:33 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, bluca@debian.org, tredaelli@redhat.com, i.maximets@ovn.org, james.r.harris@intel.com, mohammed@hawari.fr, =?utf-8?q?Morten_Br=C3=B8rup?= , Bruce Richardson Subject: [PATCH v6 2/2] build: select optional libraries Date: Thu, 29 Jun 2023 11:04:59 +0200 Message-Id: <20230629090459.823130-3-david.marchand@redhat.com> In-Reply-To: <20230629090459.823130-1-david.marchand@redhat.com> References: <20230629090459.823130-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There is currently no way to know which libraries are optional. Introduce a enable_libs option (close to what we have for drivers) so that packagers or projects consuming DPDK can more easily select the optional libraries that matter to them and disable other optional libraries. Signed-off-by: David Marchand Acked-by: Morten Brørup --- Changes since v4: - moved always_enable earlier for readability, Changes since v3: - split non related cleanup changes, - fixed false positive complaints about disabling mandatory libs by building the list of always enabled libs, appending this list to enable_list and checking the disable side, - updated enable/disable_libs descriptions, Changes since v2: - moved the IOVA check for kni build in lib/kni/meson.build, - reworked deprecated libraries handling by only considering them when no enable_libs option is set. With this, no need for a default value in meson_options.txt, yet configurations in the CI must be adjusted, - moved mandatory libraries check after enable/disable_libs evaluation, --- lib/meson.build | 34 ++++++++++++++++++++++------------ meson_options.txt | 4 +++- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/meson.build b/lib/meson.build index 73afd90b38..b8834fc277 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -88,6 +88,13 @@ optional_libs = [ 'vhost', ] +always_enable = [] +foreach l:libraries + if not optional_libs.contains(l) + always_enable += l + endif +endforeach + dpdk_libs_deprecated += [ 'flow_classify', 'kni', @@ -102,17 +109,13 @@ foreach l:run_command(list_dir_globs, get_option('enable_deprecated_libs'), enable_deprecated_libs += l endforeach -disabled_libs = [] -opt_disabled_libs = run_command(list_dir_globs, get_option('disable_libs'), - check: true).stdout().split() -foreach l:opt_disabled_libs - if not optional_libs.contains(l) - warning('Cannot disable mandatory library "@0@"'.format(l)) - continue - endif - disabled_libs += l -endforeach +disable_libs = run_command(list_dir_globs, get_option('disable_libs'), check: true).stdout().split() +enable_libs = run_command(list_dir_globs, get_option('enable_libs'), check: true).stdout().split() +if enable_libs.length() == 0 + enable_libs += optional_libs +endif +enable_libs += always_enable default_cflags = machine_args default_cflags += ['-DALLOW_EXPERIMENTAL_API'] @@ -153,9 +156,16 @@ foreach l:libraries else warning('Enabling deprecated library, "@0@"'.format(l)) endif - elif disabled_libs.contains(l) + elif not enable_libs.contains(l) build = false - reason = 'explicitly disabled via build config' + reason = 'not in enabled libraries build config' + elif disable_libs.contains(l) + if always_enable.contains(l) + warning('Cannot disable mandatory library "@0@"'.format(l)) + else + build = false + reason = 'explicitly disabled via build config' + endif endif if build diff --git a/meson_options.txt b/meson_options.txt index 839d4266c6..7312da3640 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -11,7 +11,7 @@ option('disable_apps', type: 'string', value: '', description: option('disable_drivers', type: 'string', value: '', description: 'Comma-separated list of drivers to explicitly disable.') option('disable_libs', type: 'string', value: '', description: - 'Comma-separated list of libraries to explicitly disable. [NOTE: not all libs can be disabled]') + 'Comma-separated list of optional libraries to explicitly disable. [NOTE: mandatory libs cannot be disabled]') option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-', description: 'Subdirectory of libdir where to install PMDs. Defaults to using a versioned subdirectory.') option('enable_docs', type: 'boolean', value: false, description: @@ -26,6 +26,8 @@ option('enable_driver_sdk', type: 'boolean', value: false, description: 'Install headers to build drivers.') option('enable_kmods', type: 'boolean', value: false, description: 'build kernel modules') +option('enable_libs', type: 'string', value: '', description: + 'Comma-separated list of optional libraries to explicitly enable. [NOTE: mandatory libs are always enabled]') option('examples', type: 'string', value: '', description: 'Comma-separated list of examples to build by default') option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared', description: