Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/76874/?format=api
http://patchwork.dpdk.org/api/patches/76874/?format=api", "web_url": "http://patchwork.dpdk.org/project/dts/patch/1599523618-17330-1-git-send-email-lihongx.ma@intel.com/", "project": { "id": 3, "url": "http://patchwork.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<1599523618-17330-1-git-send-email-lihongx.ma@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/1599523618-17330-1-git-send-email-lihongx.ma@intel.com", "date": "2020-09-08T00:06:58", "name": "[V1] framework: add api to configure build options for meson", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "e3f4873b988581d087ca10fffd13b91e4ce871c1", "submitter": { "id": 1641, "url": "http://patchwork.dpdk.org/api/people/1641/?format=api", "name": "Ma, LihongX", "email": "lihongx.ma@intel.com" }, "delegate": null, "mbox": "http://patchwork.dpdk.org/project/dts/patch/1599523618-17330-1-git-send-email-lihongx.ma@intel.com/mbox/", "series": [ { "id": 12011, "url": "http://patchwork.dpdk.org/api/series/12011/?format=api", "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=12011", "date": "2020-09-08T00:06:58", "name": "[V1] framework: add api to configure build options for meson", "version": 1, "mbox": "http://patchwork.dpdk.org/series/12011/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/76874/comments/", "check": "pending", "checks": "http://patchwork.dpdk.org/api/patches/76874/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 93DC0A04AA;\n\tTue, 8 Sep 2020 09:40:46 +0200 (CEST)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 4F1892BAB;\n\tTue, 8 Sep 2020 09:40:46 +0200 (CEST)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by dpdk.org (Postfix) with ESMTP id 99035A3\n for <dts@dpdk.org>; Tue, 8 Sep 2020 09:40:43 +0200 (CEST)", "from orsmga005.jf.intel.com ([10.7.209.41])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 08 Sep 2020 00:40:42 -0700", "from dpdk-lihong-ub1604.sh.intel.com ([10.67.118.174])\n by orsmga005.jf.intel.com with ESMTP; 08 Sep 2020 00:40:40 -0700" ], "IronPort-SDR": [ "\n QA9hvyTq7X6sdHUZoxYnYatCErertHO1wZUBoXnrs51hJdeMuBylcNwbjhnBZaMXw8SDVLiSHL\n Ah16R4K7KUgQ==", "\n cUKYN9hbvBM0DDAeNGly+712mhFefLQYvag+mFzP/LAqB5puUdKv9FIjr0APwNk1MVFT1Hf9j2\n plvPsufJ8O+g==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6000,8403,9737\"; a=\"155489890\"", "E=Sophos;i=\"5.76,405,1592895600\"; d=\"scan'208\";a=\"155489890\"", "E=Sophos;i=\"5.76,405,1592895600\"; d=\"scan'208\";a=\"479912274\"" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "From": "LihongX Ma <lihongx.ma@intel.com>", "To": "dts@dpdk.org", "Cc": "LihongX Ma <lihongx.ma@intel.com>", "Date": "Tue, 8 Sep 2020 08:06:58 +0800", "Message-Id": "<1599523618-17330-1-git-send-email-lihongx.ma@intel.com>", "X-Mailer": "git-send-email 2.7.4", "Subject": "[dts] [PATCH V1] framework: add api to configure build options for\n\tmeson", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org", "Sender": "\"dts\" <dts-bounces@dpdk.org>" }, "content": "1. add api set_build_options to set build options of meson\n2. optimization the function of meson build dpdk\n\nSigned-off-by: LihongX Ma <lihongx.ma@intel.com>\n---\n framework/project_dpdk.py | 82 +++++++++++++++++++++++++++++++++++++++--------\n framework/virt_dut.py | 1 +\n 2 files changed, 69 insertions(+), 14 deletions(-)", "diff": "diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py\nindex 03ace46..b5727ef 100644\n--- a/framework/project_dpdk.py\n+++ b/framework/project_dpdk.py\n@@ -61,7 +61,13 @@ class DPDKdut(Dut):\n Set hugepage on DUT and install modules required by DPDK.\n Configure default ixgbe PMD function.\n \"\"\"\n+ # get apps name of current build type\n+ self.build_type = load_global_setting(HOST_BUILD_TYPE_SETTING)\n+ if self.build_type not in self.apps_name_conf:\n+ raise Exception('please config the apps name in app_name.cfg of build type:%s' % self.build_type)\n+ self.config_build_options = {}\n self.target = target\n+\n self.set_toolchain(target)\n \n # set env variable\n@@ -73,11 +79,7 @@ class DPDKdut(Dut):\n \n self.set_driver_specific_configurations(drivername)\n \n- # get apps name of current build type\n- build_type = load_global_setting(HOST_BUILD_TYPE_SETTING)\n- if build_type not in self.apps_name_conf:\n- raise Exception('please config the apps name in app_name.cfg of build type:%s' % build_type)\n- self.apps_name = self.apps_name_conf[build_type]\n+ self.apps_name = self.apps_name_conf[self.build_type]\n # use the dut target directory instead of 'target' string in app name\n for app in self.apps_name:\n cur_app_path = self.apps_name[app].replace('target', self.target)\n@@ -196,11 +198,15 @@ class DPDKdut(Dut):\n + \"CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n/' config/common_base\", \"# \", 30)\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=.*$/\"\n + \"CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y/' config/common_base\", \"# \", 30)\n+ self.set_build_options({'RTE_LIBRTE_I40E_INC_VECTOR': 'n',\n+ 'RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC': 'y'})\n if mode == 'full':\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=.*$/\"\n + \"CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n/' config/common_base\", \"# \", 30)\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=.*$/\"\n + \"CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=n/' config/common_base\", \"# \", 30)\n+ self.set_build_options({'RTE_LIBRTE_I40E_INC_VECTOR': 'n',\n+ 'RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC': 'n'})\n if mode == 'novector':\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_IXGBE_INC_VECTOR=.*$/\"\n + \"CONFIG_RTE_IXGBE_INC_VECTOR=n/' config/common_base\", \"# \", 30)\n@@ -208,11 +214,49 @@ class DPDKdut(Dut):\n + \"CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n/' config/common_base\", \"# \", 30)\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=.*$/\"\n + \"CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=n/' config/common_base\", \"# \", 30)\n+ self.set_build_options({'RTE_IXGBE_INC_VECTOR': 'n',\n+ 'RTE_LIBRTE_I40E_INC_VECTOR': 'n',\n+ 'RTE_LIBRTE_FM10K_INC_VECTOR': 'n'})\n \n def set_package(self, pkg_name=\"\", patch_list=[]):\n self.package = pkg_name\n self.patches = patch_list\n \n+ def set_build_options(self, config_parms, config_file=''):\n+ \"\"\"\n+ Set dpdk build options of meson\n+ \"\"\"\n+ if len(config_parms) == 0:\n+ return options\n+ for key in config_parms.keys():\n+ value = config_parms[key]\n+ if value == '' or value == 'y':\n+ value = 1\n+ else:\n+ # does not need to set the configuration if the value is, mean do not define it\n+ if type(value) == str and value != 'n':\n+ value = '\\\\\"%s\\\\\"' % config_parms[key]\n+\n+ self.config_build_options[key] = value\n+\n+ def generator_build_option_string(self):\n+ \"\"\"\n+ Generator the build option string according to self.config_build_options dictionary\n+ \"\"\"\n+ params = []\n+ for key in self.config_build_options.keys():\n+ value = self.config_build_options[key]\n+ if value == 'n':\n+ continue\n+ else:\n+ params.append('-D%s=%s' % (key, value))\n+\n+ if len(params) == 0:\n+ return ''\n+ else:\n+ args = '-Dc_args=' + '\\'%s\\'' % ' '.join(params)\n+ return args\n+\n def build_install_dpdk(self, target, extra_options=''):\n \"\"\"\n Build DPDK source code with specified target.\n@@ -222,6 +266,7 @@ class DPDKdut(Dut):\n if use_shared_lib == 'true' and 'Virt' not in str(self):\n self.send_expect(\"sed -i 's/CONFIG_RTE_BUILD_SHARED_LIB=n/CONFIG_RTE_BUILD_SHARED_LIB=y/g' \"\n \"config/common_base\", '#')\n+ self.set_build_options({'RTE_BUILD_SHARED_LIB': 'y'})\n self.send_expect(\"sed -i 's/CONFIG_RTE_EAL_IGB_UIO=n/CONFIG_RTE_EAL_IGB_UIO=y/g' \"\n \"config/common_base\", '#')\n build_type = load_global_setting(HOST_BUILD_TYPE_SETTING)\n@@ -259,13 +304,15 @@ class DPDKdut(Dut):\n self.send_expect(\"export CFLAGS=-m32\", \"# \")\n self.send_expect(\"export PKG_CONFIG_LIBDIR=%s\" % pkg_path, \"# \")\n \n+ options_config = self.generator_build_option_string()\n+\n self.send_expect(\"rm -rf \" + target, \"#\")\n- out = self.send_expect(\"CC=%s meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=%s %s\" % (\n- toolchain, default_library, target), \"# \", build_time)\n- assert (\"Error\" not in out), \"meson setup failed ...\"\n+ out = self.send_expect(\"CC=%s meson --werror -Denable_kmods=True -Dlibdir=lib %s --default-library=%s %s\" % (\n+ toolchain, options_config, default_library, target), \"# \", build_time)\n+ assert (\"FAILED\" not in out), \"meson setup failed ...\"\n \n out = self.send_expect(\"ninja -C %s -j %d\" % (target, self.number_of_cores), \"# \", build_time)\n- assert (\"Error\" not in out), \"ninja complie failed ...\"\n+ assert (\"FAILED\" not in out), \"ninja complie failed ...\\r\\n %s\" % out\n \n # copy kmod file to the folder same as make\n out = self.send_expect(\"find ./%s/kernel/ -name *.ko\" % target, \"# \", verify=True)\n@@ -303,6 +350,12 @@ class DPDKdut(Dut):\n # meson build same as linux\n self.build_install_dpdk_linux_meson(target, extra_options)\n \n+ # the uio name different with linux, find the nic_uio\n+ out = self.send_expect(\"find ./%s/kernel/ -name nic_uio\" % target, \"# \", verify=True)\n+ self.send_expect(\"mkdir -p %s/kmod\" % target, \"# \")\n+ if not isinstance(out, int) and len(out) > 0:\n+ self.send_expect(\"cp %s %s/kmod/\" % (out, target), \"# \")\n+\n def build_install_dpdk_freebsd_makefile(self, target, extra_options):\n \"\"\"\n Build DPDK source code on Freebsd with specified target.\n@@ -494,11 +547,10 @@ class DPDKdut(Dut):\n raise Exception('Please config %s file path on conf/app_name.cfg' % name)\n \n example = '/'.join(folder_info[folder_info.index('examples')+1:])\n- self.send_expect(\"cd %s/%s\" % (self.base_dir, self.target), \"# \", alt_session=True)\n- out = self.send_expect(\"meson configure -Dexamples=%s\" % example, \"# \", alt_session=True)\n- assert (\"Error\" not in out), \"Compilation error...\"\n- out = self.send_expect(\"ninja\", \"# \", timeout, alt_session=True)\n- assert (\"Error\" not in out), \"Compilation error...\"\n+ out = self.send_expect(\"meson configure -Dexamples=%s %s\" % (example, self.target), \"# \")\n+ assert (\"FAILED\" not in out), \"Compilation error... \\r\\n %s\" % out\n+ out = self.send_expect(\"ninja -C %s\" % self.target, \"# \", timeout)\n+ assert (\"FAILED\" not in out), \"Compilation error... \\r\\n %s\" % out\n \n # verify the app build in the config path\n out = self.send_expect('ls %s' % self.apps_name[name], \"# \", verify=True)\n@@ -589,6 +641,8 @@ class DPDKdut(Dut):\n + \"CONFIG_RTE_LIBRTE_MLX5_PMD=y/' config/common_base\", \"# \", 30)\n self.send_expect(\"sed -i -e 's/CONFIG_RTE_LIBRTE_MLX4_PMD=n/\"\n + \"CONFIG_RTE_LIBRTE_MLX5_PMD=y/' config/common_base\", \"# \", 30)\n+ sel.set_build_options({'RTE_LIBRTE_MLX5_PMD': 'y',\n+ 'RTE_LIBRTE_MLX5_PMD': 'y'})\n \n class DPDKtester(Tester):\n \ndiff --git a/framework/virt_dut.py b/framework/virt_dut.py\nindex 03569ba..b6078e1 100644\n--- a/framework/virt_dut.py\n+++ b/framework/virt_dut.py\n@@ -231,6 +231,7 @@ class VirtDut(DPDKdut):\n for app in self.apps_name:\n cur_app_path = self.apps_name[app].replace('target', self.target)\n self.apps_name[app] = cur_app_path + ' '\n+ self.config_build_options = {}\n \n def init_core_list(self):\n self.cores = []\n", "prefixes": [ "V1" ] }{ "id": 76874, "url": "