From patchwork Sun May 4 12:01:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yann E. MORIN" X-Patchwork-Id: 345463 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ozlabs.org (Postfix) with ESMTP id 85B10140195 for ; Sun, 4 May 2014 22:02:06 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 231238B67E; Sun, 4 May 2014 12:02:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id edKoH_LFQDD8; Sun, 4 May 2014 12:02:02 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id E87CB8B982; Sun, 4 May 2014 12:02:01 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 8589E1C2226 for ; Sun, 4 May 2014 12:02:00 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 8179687B62 for ; Sun, 4 May 2014 12:02:00 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id efUx+f1z5LKG for ; Sun, 4 May 2014 12:01:58 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48]) by hemlock.osuosl.org (Postfix) with ESMTPS id C0FA787B5B for ; Sun, 4 May 2014 12:01:57 +0000 (UTC) Received: by mail-wg0-f48.google.com with SMTP id b13so1089481wgh.19 for ; Sun, 04 May 2014 05:01:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=CVIPLmNkpmOZso0IZ0CT0ucVgXQ7FA1G25rVvaTp+bw=; b=xtCGxYxTLLu8zfjBOYFcLCksJRSlNDhvsd3ndgxykP9MTcsyr3jn3lyJZcMGDsO1Rt xDgMja7m9Bbw+IN5nqqseGHPaxStlDD4NtBWSKkSjQS/mGKpFwceTaHgQ8+lnX4qhTf/ kzr2/fR2OzDSeITjcdo/bb0vHrii0OFZOY29L6aONCneKHzn2Upr23MtWVXT8Wn7pOR0 GX+m8z7WOPoq/galOsO0VR5Wd5THZgfzYrrfwwI6AluOseDgc7wsjg33YxsDtHzW+S+V 888xrieT0baRwi3NCxsDO5ydqviAK65yxVvkjwCvuBkKeXogRiMACo1K9zM4QMjBHOn/ Ftqw== X-Received: by 10.180.104.197 with SMTP id gg5mr11374123wib.2.1399204916259; Sun, 04 May 2014 05:01:56 -0700 (PDT) Received: from gourin.bzh.lan (ks3095497.kimsufi.com. [94.23.60.27]) by mx.google.com with ESMTPSA id iy13sm10455501wic.1.2014.05.04.05.01.54 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 04 May 2014 05:01:55 -0700 (PDT) From: "Yann E. MORIN" To: buildroot@buildroot.org Date: Sun, 4 May 2014 14:01:42 +0200 Message-Id: X-Mailer: git-send-email 1.8.3.2 In-Reply-To: References: Cc: Thomas Petazzoni , "Yann E. MORIN" , Peter Korsgaard Subject: [Buildroot] [PATCH 03/11] pkg-infra: move the git download helper to a script X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net From: "Yann E. MORIN" The git download helper is getting a bit more complex. Fixing it in the Makefile when it breaks (like the recent breakage with a non-existing sha1-cset) proves to be challenging, to say the least. Move it into a shell script in support/download/git, which will make it much easier to read, maintain, fix and enhance in the future. Signed-off-by: "Yann E. MORIN" Cc: Peter Korsgaard Cc: Thomas Petazzoni Acked-by: Luca Ceresoli Cc: Arnout Vandecappelle Reviewed-by: Samuel Martin Reviewed-by: Arnout Vandecappelle (Essensium/Mind) --- package/pkg-download.mk | 17 +++-------------- support/download/git | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 14 deletions(-) create mode 100755 support/download/git diff --git a/package/pkg-download.mk b/package/pkg-download.mk index 192b9e0..9603ea8 100644 --- a/package/pkg-download.mk +++ b/package/pkg-download.mk @@ -12,7 +12,7 @@ WGET := $(call qstrip,$(BR2_WGET)) $(QUIET) SVN := $(call qstrip,$(BR2_SVN)) CVS := $(call qstrip,$(BR2_CVS)) BZR := $(call qstrip,$(BR2_BZR)) -GIT := $(call qstrip,$(BR2_GIT)) +export GIT := $(call qstrip,$(BR2_GIT)) HG := $(call qstrip,$(BR2_HG)) $(QUIET) SCP := $(call qstrip,$(BR2_SCP)) $(QUIET) SSH := $(call qstrip,$(BR2_SSH)) $(QUIET) @@ -84,19 +84,8 @@ github = https://github.com/$(1)/$(2)/archive/$(3) # problems define DOWNLOAD_GIT test -e $(DL_DIR)/$($(PKG)_SOURCE) || \ - (pushd $(DL_DIR) > /dev/null && \ - ((test "`git ls-remote $($(PKG)_SITE) $($(PKG)_DL_VERSION)`" && \ - echo "Doing shallow clone" && \ - $(GIT) clone --depth 1 -b $($(PKG)_DL_VERSION) --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME)) || \ - (echo "Doing full clone" && \ - $(GIT) clone --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME))) && \ - pushd $($(PKG)_BASE_NAME) > /dev/null && \ - $(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ -o $(DL_DIR)/.$($(PKG)_SOURCE).tmp $($(PKG)_DL_VERSION) && \ - gzip -c $(DL_DIR)/.$($(PKG)_SOURCE).tmp > $(DL_DIR)/$($(PKG)_SOURCE) && \ - rm -f $(DL_DIR)/.$($(PKG)_SOURCE).tmp && \ - popd > /dev/null && \ - rm -rf $($(PKG)_DL_DIR) && \ - popd > /dev/null) + $(EXTRA_ENV) support/download/git $($(PKG)_SITE) $($(PKG)_DL_VERSION) \ + $($(PKG)_BASE_NAME) $(DL_DIR)/$($(PKG)_SOURCE) endef # TODO: improve to check that the given PKG_DL_VERSION exists on the remote diff --git a/support/download/git b/support/download/git new file mode 100755 index 0000000..96db3a9 --- /dev/null +++ b/support/download/git @@ -0,0 +1,37 @@ +#!/bin/sh + +# We want to catch any command failure, and exit immediately +set -e + +# Download helper for git +# Call it with: +# $1: git repo +# $2: git cset +# $3: package's basename (eg. foobar-1.2.3) +# $4: output file +# And this environment: +# BR2_DL_DIR: path to Buildroot's download dir +# GIT : the git command to call + +repo="${1}" +cset="${2}" +basename="${3}" +output="${4}" + +repodir="${BR2_DL_DIR}/${basename}" + +if [ -n "$(${GIT} ls-remote "${repo}" "${cset}" 2>&1)" ]; then + printf "Doing shallow clone\n" + ${GIT} clone --depth 1 -b "${cset}" --bare "${repo}" "${repodir}" +else + printf "Doing full clone\n" + ${GIT} clone --bare "${repo}" "${repodir}" +fi + +pushd "${repodir}" +${GIT} archive --prefix="${basename}/" -o "${output}.tmp" --format=tar "${cset}" +gzip -c "${output}.tmp" >"${output}" +rm -f "${output}.tmp" +popd + +rm -rf "${repodir}"