[oe-commits] [meta-openembedded] 36/39: netcf: fix mishandling of gnulib submodule causing build fail

git at git.openembedded.org git at git.openembedded.org
Thu May 19 10:11:03 UTC 2016


martin_jansa pushed a commit to branch krogoth-next
in repository meta-openembedded.

commit 9199968550c1eb24cbf3b16798895091985953bb
Author: Paul Gortmaker <paul.gortmaker at windriver.com>
AuthorDate: Sun May 8 15:08:13 2016 -0400

    netcf: fix mishandling of gnulib submodule causing build fail
    
    netcf fails to build on certain hosts with newer versions
    of git installed as follows:
    
    | ./bootstrap: Bootstrapping from checked-out netcf sources...
    | ./bootstrap: consider installing git-merge-changelog from gnulib
    | ./bootstrap: getting gnulib files...
    | error: pathspec 'gnulib' did not match any file(s) known to git.
    
    If we do a devshell we will see that our configure prepend that
    intended to _create_ the .gitmodules has instead _modified_ it
    and left us with this change present:
    
      sh-4.3# git diff
      diff --git a/.gitmodules b/.gitmodules
      index 7acb1ea19ca7..2d10b0e0e0fe 100644
      --- a/.gitmodules
      +++ b/.gitmodules
      @@ -1,3 +1,3 @@
       [submodule "gnulib"]
      -       path = .gnulib
      -       url = git://git.sv.gnu.org/gnulib.git
      +       path = gnulib
      +       url = git://git.sv.gnu.org/gnulib
      sh-4.3#
    
    What happens is that the newer git does not respect uncommitted
    changes to the .gitmodules file, and hence the path ".gnulib" is
    still considered valid vs. the in tree updated path "gnulib".  It
    doesn't help any that the package has its own tracked files in
    gnulib/ that we stomp over, but the real fail is just uncommitted
    changes to the .gitmodule as this insertion of a random path shows:
    
      sh-4.3# git diff
      diff --git a/.gitmodules b/.gitmodules
      index 7acb1ea19ca7..91bd45f8e4d4 100644
      --- a/.gitmodules
      +++ b/.gitmodules
      @@ -1,3 +1,3 @@
       [submodule "gnulib"]
      -       path = .gnulib
      +       path = gnulibaaa
              url = git://git.sv.gnu.org/gnulib.git
      sh-4.3# git --version
      git version 2.7.4
      sh-4.3# git submodule init
      fatal: no submodule mapping found in .gitmodules for path '.gnulib'
      sh-4.3#
    
    Since the original bbclass simply assumed there was no .gitmodules
    file to begin with, we can easily solve this by not clobbering it
    and respect the path choice used by the package itself.
    
    As the version of ./bootstrap shipped with netcf supports this:
    
         --no-git       do not use git to update gnulib.  Requires that
                        --gnulib-srcdir point to a correct gnulib snapshot
    
    we can use it in conjunction with the pathspec since we know the
    gnulib was just copied in from the sysroot, and does not need
    to try and pull any further updates.
    
    Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
    Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
    Signed-off-by: Joe MacDonald <joe_macdonald at mentor.com>
    Signed-off-by: Armin Kuster <akuster808 at gmail.com>
---
 meta-networking/recipes-support/netcf/netcf_git.bb | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/meta-networking/recipes-support/netcf/netcf_git.bb b/meta-networking/recipes-support/netcf/netcf_git.bb
index 08082ff..8fb69bb 100644
--- a/meta-networking/recipes-support/netcf/netcf_git.bb
+++ b/meta-networking/recipes-support/netcf/netcf_git.bb
@@ -28,18 +28,17 @@ do_configure_prepend() {
     cd ${S}
 
     # avoid bootstrap cloning gnulib on every configure
-    cat >.gitmodules <<EOF
-[submodule "gnulib"]
-       path = gnulib
-       url = git://git.sv.gnu.org/gnulib
-EOF
-    cp -rf ${STAGING_DATADIR}/gnulib ${S}
+    # the rmdir acts as a sentinel to let us know if the pkg ever changes
+    # the path for GNUlib or populates the dir making it non-empty.
+    rmdir ${S}/.gnulib
+    cp -rf ${STAGING_DATADIR}/gnulib ${S}/.gnulib
 
     # --force to avoid errors on reconfigure e.g if recipes changed we depend on
     # | bootstrap: running: libtoolize --quiet
     # | libtoolize:   error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
     # | ...
-    ./bootstrap --force
+    ./bootstrap --force --no-git --gnulib-srcdir=.gnulib
+
     cd $currdir
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list