diff options
authorPaul Gortmaker <paul.gortmaker@windriver.com>2016-05-08 15:08:13 -0400
committerJoe MacDonald <joe_macdonald@mentor.com>2016-05-12 11:53:30 -0400
commit093942197237a0b79802d20ebcf3ae0ea35a66bc (patch)
parent00ec8bc10df539ecedc3beb2dde28a8e4665cad8 (diff)
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@windriver.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
1 files 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 f67f4ec608..8d6d32a608 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
- 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