From mboxrd@z Thu Jan 1 00:00:00 1970 From: Panu Matilainen Subject: Re: [PATCH 1/3] mk: fix librte_pipeline dependency list truncation Date: Tue, 21 Jun 2016 13:25:52 +0300 Message-ID: <573cdca2-ee36-8de3-2bcd-e40ba7c9dd2f@redhat.com> References: <3EB4FA525960D640B5BDFFD6A3D8912647A0A645@IRSMSX108.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Cc: "christian.ehrhardt@canonical.com" , "thomas.monjalon@6wind.com" To: "Dumitrescu, Cristian" , "dev@dpdk.org" Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 5F11FADEC for ; Tue, 21 Jun 2016 12:25:55 +0200 (CEST) In-Reply-To: <3EB4FA525960D640B5BDFFD6A3D8912647A0A645@IRSMSX108.ger.corp.intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 06/21/2016 01:01 PM, Dumitrescu, Cristian wrote: > > >> -----Original Message----- >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen >> Sent: Tuesday, June 21, 2016 9:12 AM >> To: dev@dpdk.org >> Cc: christian.ehrhardt@canonical.com; thomas.monjalon@6wind.com >> Subject: [dpdk-dev] [PATCH 1/3] mk: fix librte_pipeline dependency lis= t >> truncation >> >> In other libraries, dependency list is always appended to, but >> in commit 6cbf4f75e059 it with an assignment. This causes the >> librte_eal dependency added in commit 6cbf4f75e059 to get discarded, >> resulting in missing dependency on librte_eal. >> >> Fixes: b3688bee81a8 ("pipeline: new packet framework logic") >> Fixes: 6cbf4f75e059 ("mk: fix missing internal dependencies") >> >> Signed-off-by: Panu Matilainen >> --- >> lib/librte_pipeline/Makefile | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/lib/librte_pipeline/Makefile b/lib/librte_pipeline/Makefi= le >> index 95387aa..a8f3128 100644 >> --- a/lib/librte_pipeline/Makefile >> +++ b/lib/librte_pipeline/Makefile >> @@ -53,7 +53,7 @@ SYMLINK-$(CONFIG_RTE_LIBRTE_PIPELINE)-include +=3D >> rte_pipeline.h >> >> # this lib depends upon: >> DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D lib/librte_eal >> -DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) :=3D lib/librte_table >> +DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D lib/librte_table >> DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D lib/librte_port >> >> include $(RTE_SDK)/mk/rte.lib.mk >> -- >> 2.5.5 > > > In release 16.4, EAL was missing from the dependency list, now it is ad= ded. The librte_pipeline uses rte_malloc, therefore it depends on librte_= eal being present. > > In the Makefile of the other Packet Framework libraries (librte_port, l= ibrte_table), it looks like the first dependency in the list is EAL, whic= h is listed with the assignment operator, followed by others that are lis= ted with the append operator: > DEPDIRS-$(CONFIG_RTE_LIBRTE_XYZ) :=3D lib/librte_eal > DEPDIRS-$(CONFIG_RTE_LIBRTE_XYZ) +=3D lib/librte_some other lib > > Therefore, at least for cosmetic reasons, we should probably do the sam= e in librte_pipeline, which requires changing both the librte_eal and the= librte_table lines as below: > DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) :=3D lib/librte_eal > DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D lib/librte_table > DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D lib/librte_port Ah, didn't notice those because the assignment is first of the dependenci= es. > > However, some other libraries e.g. librte_lpm simply add the EAL depend= ency using the append operator: > DEPDIRS-$(CONFIG_RTE_LIBRTE_LPM) +=3D lib/librte_eal > > To be honest, I need to refresh my knowledge on make, I don't remember = right now when we should use the assignment and when the append. Do we ne= ed to use the assign for first dependency (EAL) and append for others or = should we use append everywhere? At least in automake, you need to assign before you can append. But in=20 gmake this apparently is not the case, quoting from=20 https://www.gnu.org/software/make/manual/html_node/Appending.html: "When the variable in question has not been defined before, =E2=80=98+=3D= =E2=80=99 acts=20 just like normal =E2=80=98=3D=E2=80=99: it defines a recursively-expanded= variable.=20 However, when there is a previous definition, exactly what =E2=80=98+=3D=E2= =80=99 does=20 depends on what flavor of variable you defined originally." So there's no need to use :=3D anywhere for the dependencies, in fact its= =20 probably best avoided to avoid issues like this. Of course after the=20 third patch in this "series" is applied, mistakes like these can no=20 longer go unnoticed. - Panu - > Thanks, > Cristian >