core/pkg-infra: download git submodules if the package wants them
authorYann E. MORIN <yann.morin.1998@free.fr>
Fri, 1 Jul 2016 09:01:19 +0000 (11:01 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sat, 2 Jul 2016 17:11:14 +0000 (19:11 +0200)
Add a new package variable that packages can set to specify that they
need git submodules.

Only accept this option if the download method is git, as we can not get
submodules via an http download (via wget).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Aleksandar Simeonov <aleksandar@barix.com>
Tested-by: Matt Weber <matt@thewebers.ws>
Reviewed-by: Matt Weber <matt@thewebers.ws>
Tested-By: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/pkg-download.mk
package/pkg-generic.mk
support/download/dl-wrapper

index a0f694d0fd2f2dcd470aaa999fe63eb64d843bbf..315203f3314a8c42efdc08a5e6badc16dd24e75e 100644 (file)
@@ -76,6 +76,7 @@ export BR_NO_CHECK_HASH_FOR =
 define DOWNLOAD_GIT
        $(EXTRA_ENV) $(DL_WRAPPER) -b git \
                -o $(DL_DIR)/$($(PKG)_SOURCE) \
+               $(if $($(PKG)_GIT_SUBMODULES),-r) \
                $(QUIET) \
                -- \
                $($(PKG)_SITE) \
index b712c3175ff06b6601eeeef2b07c3f6378fab709..fa404cae2443ca48fba037dc61b2fa5771d37f8f 100644 (file)
@@ -468,6 +468,14 @@ ifndef $(2)_SITE_METHOD
  endif
 endif
 
+# Do not accept to download git submodule if not using the git method
+ifneq ($$($(2)_GIT_SUBMODULES),)
+ ifneq ($$($(2)_SITE_METHOD),git)
+  $$(error $(2) declares having git sub-modules, but does not use the \
+          'git' method (uses '$$($(2)_SITE_METHOD)' instead))
+ endif
+endif
+
 ifeq ($$($(2)_SITE_METHOD),local)
 ifeq ($$($(2)_OVERRIDE_SRCDIR),)
 $(2)_OVERRIDE_SRCDIR = $$($(2)_SITE)
index ef2d8729387cffc60ab307177fe60459d1387b01..f944b71db52bd94c94e7ad57838e96d86b01affd 100755 (executable)
@@ -21,15 +21,16 @@ set -e
 
 main() {
     local OPT OPTARG
-    local backend output hfile quiet
+    local backend output hfile recurse quiet
 
     # Parse our options; anything after '--' is for the backend
-    while getopts :hb:o:H:q OPT; do
+    while getopts :hb:o:H:rq OPT; do
         case "${OPT}" in
         h)  help; exit 0;;
         b)  backend="${OPTARG}";;
         o)  output="${OPTARG}";;
         H)  hfile="${OPTARG}";;
+        r)  recurse="-r";;
         q)  quiet="-q";;
         :)  error "option '%s' expects a mandatory argument\n" "${OPTARG}";;
         \?) error "unknown option '%s'\n" "${OPTARG}";;
@@ -82,7 +83,7 @@ main() {
     # If the backend fails, we can just remove the temporary directory to
     # remove all the cruft it may have left behind. Then we just exit in
     # error too.
-    if ! "${OLDPWD}/support/download/${backend}" ${quiet} "${tmpf}" "${@}"; then
+    if ! "${OLDPWD}/support/download/${backend}" ${quiet} ${recurse} "${tmpf}" "${@}"; then
         rm -rf "${tmpd}"
         exit 1
     fi