From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 21 15:55:54 2019 Received: (at submit) by debbugs.gnu.org; 21 Oct 2019 19:55:54 +0000 Received: from localhost ([127.0.0.1]:57878 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMdmT-0005mC-TO for submit@debbugs.gnu.org; Mon, 21 Oct 2019 15:55:54 -0400 Received: from lists.gnu.org ([209.51.188.17]:50506) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMdmR-0005m3-VR for submit@debbugs.gnu.org; Mon, 21 Oct 2019 15:55:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iMdmQ-0008Uu-4h for guix-patches@gnu.org; Mon, 21 Oct 2019 15:55:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iMdmO-00010y-O0 for guix-patches@gnu.org; Mon, 21 Oct 2019 15:55:49 -0400 Received: from lepiller.eu ([2a00:5884:8208::1]:33750) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iMdmO-0000yh-5T for guix-patches@gnu.org; Mon, 21 Oct 2019 15:55:48 -0400 Received: from lepiller.eu (localhost [127.0.0.1]) by lepiller.eu (OpenSMTPD) with ESMTP id d841fd5a for ; Mon, 21 Oct 2019 19:55:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=lepiller.eu; h=date:from :to:subject:message-id:mime-version:content-type; s=dkim; bh=uXr jg7sZ8zQYefMT+4A79Q/vU6I=; b=fY6AuwoZmrdGLOrpo8BBKqXN2O4lxgG1xpu zUrorZ84FqajLBy9LCywyY1xfmixoPWxJ4AqEbZRx5r89wDD3B9yrWgXTdKFzefC 4l9NZ1OGR+FI3aSU4FwBzRhkrdWmH9wiV1VurRAQCI5Blmz3eMaHr3UvFJlISbau GCdhqxfcOulNvrY9VmGEb5eSitlcK8pwdN1+eP+XC3yFvZ8RWU3pxbbjvKxCXDJc YKRY6Mb0noSVnWS3PoJ680LaYBE2raOTQ4npqCtGqL2D8GeWnm5kawWjqzKmyZSm ecxDrJVbCpoPtoywmoKaP39C5DttMjK7qXWDnX5ayLlenH7Y1Rg== Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id f7340c6b (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Mon, 21 Oct 2019 19:55:43 +0000 (UTC) Date: Mon, 21 Oct 2019 21:55:38 +0200 From: Julien Lepiller To: guix-patches@gnu.org Subject: [PATCH] guix: svn: Allow dropping externals Message-ID: <20191021215538.60675430@sybil.lepiller.eu> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/5YGId=0cICC7dsvAt/YNUCf" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:5884:8208::1 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --MP_/5YGId=0cICC7dsvAt/YNUCf Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline A subversion repository can contain externals, references to other projects that also use subversion. This is very similar to git submodules. When checking out a repository, svn will automatically check these external repositories too. However, if the externals are not pinned to a specific revision, svn will fetch the latest sources for the external, leading to non reproducibility of the sources' hash. This patch adds a fetch-externals? field to svn-reference and svn-multi-reference, defaulting to #t for preserving the old behavior. Setting it to #f will prevent fetching any external from the project. This is useful for josm for instance. --MP_/5YGId=0cICC7dsvAt/YNUCf Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0001-guix-svn-Allow-dropping-externals.patch From 0ac412a3c912b2fe7ebd05d178120db50d47184e Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Mon, 21 Oct 2019 21:48:31 +0200 Subject: [PATCH] guix: svn: Allow dropping externals. * guix/build/svn.scm (svn-fetch): Allow to ignore externals. * guix/svn-download.scm (svn-reference, svn-multi-reference): Add fetch-externals? field. --- guix/build/svn.scm | 4 ++++ guix/svn-download.scm | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/guix/build/svn.scm b/guix/build/svn.scm index e3188add3e..ff3ca3a666 100644 --- a/guix/build/svn.scm +++ b/guix/build/svn.scm @@ -31,6 +31,7 @@ (define* (svn-fetch url revision directory #:key (svn-command "svn") + (fetch-externals? #t) (user-name #f) (password #f)) "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a @@ -45,6 +46,9 @@ valid Subversion revision. Return #t on success, #f otherwise." (list (string-append "--username=" user-name) (string-append "--password=" password)) '()) + ,@(if fetch-externals? + '() + (list "--ignore-externals")) ,url ,directory)) #t) diff --git a/guix/svn-download.scm b/guix/svn-download.scm index 4139cbc2e2..16da2102d6 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm @@ -31,6 +31,7 @@ svn-reference? svn-reference-url svn-reference-revision + svn-reference-fetch-externals? svn-fetch download-svn-to-store @@ -39,6 +40,7 @@ svn-multi-reference-url svn-multi-reference-revision svn-multi-reference-locations + svn-multi-reference-fetch-externals? svn-multi-fetch)) ;;; Commentary: @@ -52,10 +54,11 @@ (define-record-type* svn-reference make-svn-reference svn-reference? - (url svn-reference-url) ; string - (revision svn-reference-revision) ; number - (user-name svn-reference-user-name (default #f)) - (password svn-reference-password (default #f))) + (url svn-reference-url) ; string + (revision svn-reference-revision) ; number + (fetch-externals? svn-reference-fetch-externals? (default #t)) + (user-name svn-reference-user-name (default #f)) + (password svn-reference-password (default #f))) (define (subversion-package) "Return the default Subversion package." @@ -78,6 +81,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." '#$(svn-reference-revision ref) #$output #:svn-command (string-append #+svn "/bin/svn") + #:fetch-externals? #$(svn-reference-fetch-externals? ref) #:user-name #$(svn-reference-user-name ref) #:password #$(svn-reference-password ref))))) @@ -93,11 +97,12 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." (define-record-type* svn-multi-reference make-svn-multi-reference svn-multi-reference? - (url svn-multi-reference-url) ; string - (revision svn-multi-reference-revision) ; number - (locations svn-multi-reference-locations) ; list of strings - (user-name svn-multi-reference-user-name (default #f)) - (password svn-multi-reference-password (default #f))) + (url svn-multi-reference-url) ; string + (revision svn-multi-reference-revision) ; number + (locations svn-multi-reference-locations) ; list of strings + (fetch-externals? svn-multi-reference-fetch-externals? (default #t)) + (user-name svn-multi-reference-user-name (default #f)) + (password svn-multi-reference-password (default #f))) (define* (svn-multi-fetch ref hash-algo hash #:optional name @@ -125,6 +130,8 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." (string-append #$output "/" location) (string-append #$output "/" (dirname location))) #:svn-command (string-append #+svn "/bin/svn") + #:fetch-externals? + #$(svn-reference-fetch-externals? ref) #:user-name #$(svn-multi-reference-user-name ref) #:password #$(svn-multi-reference-password ref))) '#$(svn-multi-reference-locations ref))))) -- 2.22.0 --MP_/5YGId=0cICC7dsvAt/YNUCf--