gcc: add flex-native explicit dependency

Message ID 1515640552-54778-1-git-send-email-denis@denix.org
State New
Headers show
Series
  • gcc: add flex-native explicit dependency
Related show

Commit Message

Denys Dmytriyenko Jan. 11, 2018, 3:15 a.m.
From: Denys Dmytriyenko <denys@ti.com>


It seems flex is required to build gcc:

| .../work-shared/gcc-7.2.0-r0/gcc-7.2.0/missing: line 81: flex: command not found
| WARNING: 'flex' is missing on your system.
|          You should only need it if you modified a '.l' file.
|          You may want to install the Fast Lexical Analyzer package:
|          <http://flex.sourceforge.net/>
| Makefile:2799: recipe for target 'gengtype-lex.c' failed
| make[1]: [gengtype-lex.c] Error 127 (ignored)

Normally this is handled indirectly throught binutils-cross dependency
pulling in flex-native implicitly. For deterministic builds, this should
be specified explicitly.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>

---
 meta/recipes-devtools/gcc/gcc-7.2.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.7.4

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Richard Purdie Jan. 11, 2018, 2:41 p.m. | #1
On Wed, 2018-01-10 at 22:15 -0500, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@ti.com>
> 
> It seems flex is required to build gcc:
> 
> > 
> > .../work-shared/gcc-7.2.0-r0/gcc-7.2.0/missing: line 81: flex:
> > command not found
> > WARNING: 'flex' is missing on your system.
> >          You should only need it if you modified a '.l' file.
> >          You may want to install the Fast Lexical Analyzer package:
> >          <http://flex.sourceforge.net/>
> > Makefile:2799: recipe for target 'gengtype-lex.c' failed
> > make[1]: [gengtype-lex.c] Error 127 (ignored)
> Normally this is handled indirectly throught binutils-cross
> dependency
> pulling in flex-native implicitly. For deterministic builds, this
> should
> be specified explicitly.
> 
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  meta/recipes-devtools/gcc/gcc-7.2.inc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-
> devtools/gcc/gcc-7.2.inc
> index 1d40cba..d1fb6de 100644
> --- a/meta/recipes-devtools/gcc/gcc-7.2.inc
> +++ b/meta/recipes-devtools/gcc/gcc-7.2.inc
> @@ -10,7 +10,7 @@ BINV = "7.2.0"
>  
>  FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-
> 7.2/backport:"
>  
> -DEPENDS =+ "mpfr gmp libmpc zlib"
> +DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
>  NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
>  
>  LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"

Agreed, however I think we have bigger problems. I'm testing with this:

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 65f51430ee2..a5c4a73963e 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -921,6 +921,13 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
     if taskdependees[task][1] == "do_stash_locale" or taskdependees[task][1] == "do_gcc_stash_builddir":
         return True
 
+
+    if taskdependees[task][1] == 'do_populate_sysroot':
+        if taskdependees[task][0] == "flex-native" or taskdependees[task][0] == "bison-native":
+            #bb.warn("Skipping %s" % str(taskdependees[dep]))
+            bb.warn("Skipping")
+            return True
+
     # We only need to trigger packagedata through direct dependencies
     # but need to preserve packagedata on packagedata links
     if taskdependees[task][1] == "do_packagedata":


and test results so far imply that we need:

diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-devtools/gcc/gcc-7.2.inc
index 1d40cba7317..90e4a990cb3 100644
--- a/meta/recipes-devtools/gcc/gcc-7.2.inc
+++ b/meta/recipes-devtools/gcc/gcc-7.2.inc
@@ -11,7 +11,7 @@ BINV = "7.2.0"
 FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-7.2/backport:"
 
 DEPENDS =+ "mpfr gmp libmpc zlib"
-NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
+NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-native"
 
 LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
 

probably in addition to your patch. I'll continue to run some test
builds and see how much breakage the above change shows up.

Cheers,

Richard
Denys Dmytriyenko Jan. 11, 2018, 3:02 p.m. | #2
On Thu, Jan 11, 2018 at 02:41:15PM +0000, Richard Purdie wrote:
> On Wed, 2018-01-10 at 22:15 -0500, Denys Dmytriyenko wrote:

> > From: Denys Dmytriyenko <denys@ti.com>

> > 

> > It seems flex is required to build gcc:

> > 

> > > 

> > > .../work-shared/gcc-7.2.0-r0/gcc-7.2.0/missing: line 81: flex:

> > > command not found

> > > WARNING: 'flex' is missing on your system.

> > >          You should only need it if you modified a '.l' file.

> > >          You may want to install the Fast Lexical Analyzer package:

> > >          <http://flex.sourceforge.net/>

> > > Makefile:2799: recipe for target 'gengtype-lex.c' failed

> > > make[1]: [gengtype-lex.c] Error 127 (ignored)

> > Normally this is handled indirectly throught binutils-cross

> > dependency

> > pulling in flex-native implicitly. For deterministic builds, this

> > should

> > be specified explicitly.

> > 

> > Signed-off-by: Denys Dmytriyenko <denys@ti.com>

> > ---

> >  meta/recipes-devtools/gcc/gcc-7.2.inc | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> > 

> > diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-

> > devtools/gcc/gcc-7.2.inc

> > index 1d40cba..d1fb6de 100644

> > --- a/meta/recipes-devtools/gcc/gcc-7.2.inc

> > +++ b/meta/recipes-devtools/gcc/gcc-7.2.inc

> > @@ -10,7 +10,7 @@ BINV = "7.2.0"

> >  

> >  FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-

> > 7.2/backport:"

> >  

> > -DEPENDS =+ "mpfr gmp libmpc zlib"

> > +DEPENDS =+ "mpfr gmp libmpc zlib flex-native"

> >  NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"

> >  

> >  LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"

> 

> Agreed, however I think we have bigger problems. I'm testing with this:

> 

> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass

> index 65f51430ee2..a5c4a73963e 100644

> --- a/meta/classes/sstate.bbclass

> +++ b/meta/classes/sstate.bbclass

> @@ -921,6 +921,13 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):

>      if taskdependees[task][1] == "do_stash_locale" or taskdependees[task][1] == "do_gcc_stash_builddir":

>          return True

>  

> +

> +    if taskdependees[task][1] == 'do_populate_sysroot':

> +        if taskdependees[task][0] == "flex-native" or taskdependees[task][0] == "bison-native":

> +            #bb.warn("Skipping %s" % str(taskdependees[dep]))

> +            bb.warn("Skipping")

> +            return True

> +

>      # We only need to trigger packagedata through direct dependencies

>      # but need to preserve packagedata on packagedata links

>      if taskdependees[task][1] == "do_packagedata":

> 

> 

> and test results so far imply that we need:

> 

> diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-devtools/gcc/gcc-7.2.inc

> index 1d40cba7317..90e4a990cb3 100644

> --- a/meta/recipes-devtools/gcc/gcc-7.2.inc

> +++ b/meta/recipes-devtools/gcc/gcc-7.2.inc

> @@ -11,7 +11,7 @@ BINV = "7.2.0"

>  FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-7.2/backport:"

>  

>  DEPENDS =+ "mpfr gmp libmpc zlib"

> -NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"

> +NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-native"

>  

>  LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"

>  

> 

> probably in addition to your patch. I'll continue to run some test

> builds and see how much breakage the above change shows up.


Thanks. I was building native gcc for the target, while using external 
prebuilt cross toolchain. I first tried adding flex-native to NATIVEDEPS 
list, but that didn't help - looks like this list is only used for cross and 
crosssdk builds.

-- 
Denys
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Richard Purdie Jan. 11, 2018, 5:26 p.m. | #3
On Thu, 2018-01-11 at 10:02 -0500, Denys Dmytriyenko wrote:
> On Thu, Jan 11, 2018 at 02:41:15PM +0000, Richard Purdie wrote:
> > and test results so far imply that we need:
> > 
> > diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-
> > devtools/gcc/gcc-7.2.inc
> > index 1d40cba7317..90e4a990cb3 100644
> > --- a/meta/recipes-devtools/gcc/gcc-7.2.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-7.2.inc
> > @@ -11,7 +11,7 @@ BINV = "7.2.0"
> >  FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-
> > 7.2/backport:"
> >  
> >  DEPENDS =+ "mpfr gmp libmpc zlib"
> > -NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
> > +NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native
> > flex-native"
> >  
> >  LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
> >  
> > 
> > probably in addition to your patch. I'll continue to run some test
> > builds and see how much breakage the above change shows up.
> Thanks. I was building native gcc for the target, while using
> external 
> prebuilt cross toolchain. I first tried adding flex-native to
> NATIVEDEPS 
> list, but that didn't help - looks like this list is only used for
> cross and 
> crosssdk builds.

I'll probably take your at and perf patches, my gcc one which covers
the cross and candadian variants and merge a change to the sstate
dependency code which means we'll explicitly see these dependency
issues in future. I'll queue this in -next and test.

Cheers,

Richard

Patch

diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-devtools/gcc/gcc-7.2.inc
index 1d40cba..d1fb6de 100644
--- a/meta/recipes-devtools/gcc/gcc-7.2.inc
+++ b/meta/recipes-devtools/gcc/gcc-7.2.inc
@@ -10,7 +10,7 @@  BINV = "7.2.0"
 
 FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-7.2:${FILE_DIRNAME}/gcc-7.2/backport:"
 
-DEPENDS =+ "mpfr gmp libmpc zlib"
+DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
 NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
 
 LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"