build: download code from github using archive API
authorYousong Zhou <yszhou4tech@gmail.com>
Sun, 11 Feb 2018 09:42:22 +0000 (17:42 +0800)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:19 +0000 (17:32 +0100)
commit41598a823719a11ad1ba66ab54a3f40d151c46ec
treecf583a7991c426a56030c09270ad1489fcf6f100
parent6c930bfa4dd4b1c6f8bb9be4976f8e3631ea0f98
build: download code from github using archive API

A new python script scripts/download.py is added to fetch tarballs using
GitHub archive API [1], then repack in a reproducible way same as the
current DownloadMethod/git

GitHub imposes a 60 reqs/hour rate limit on unauthenticated API
access[2].  This affects fetching commit date for feeding tar --mtime=
argument.  However, observation indicates that archive download is NOT
subject to this limit at the moment.  In the rare cases where download
fails because of this, we will falback to using DownloadMethod/git

The missing piece in the GitHub API is that it cannot provide in the
tarball dependent submodules's source code.  In that case, the
implementation will also fallback to using DownloadMethod/git

 [1] Get archive link, https://developer.github.com/v3/repos/contents/#get-archive-link
 [2] Rate limiting, https://developer.github.com/v3/#rate-limiting

v2 <- v1:

 - allow passing multiple urls with --urls argument
 - add commit ts cache.  can be helpful on retry

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
(backported from 75ab064d2b38e70746af1718ed7cdbafb906249e)
include/download.mk
scripts/download.py [new file with mode: 0755]