build: download code from github using archive API
authorYousong Zhou <yszhou4tech@gmail.com>
Sun, 11 Feb 2018 09:42:22 +0000 (17:42 +0800)
committerYousong Zhou <yszhou4tech@gmail.com>
Wed, 27 Jun 2018 02:51:27 +0000 (10:51 +0800)
commit75ab064d2b38e70746af1718ed7cdbafb906249e
treecafa963b1ee04f6c8c63283bdb303ad3770556a4
parent3ce11588f6346ebedde68ef30a06e01999e292bb
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>
include/download.mk
scripts/download.py [new file with mode: 0755]