| #!/bin/bash |
| |
| set -eu |
| |
| source $(cd $(dirname $0) && pwd)/helpers.sh |
| |
| CWD=$(pwd) |
| LIBBPF_PATH=$(pwd) |
| REPO_PATH=$1 |
| |
| KERNEL_ORIGIN=${KERNEL_ORIGIN:-https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git} |
| KERNEL_BRANCH=${KERNEL_BRANCH:-CHECKPOINT} |
| if [[ "${KERNEL_BRANCH}" = 'CHECKPOINT' ]]; then |
| echo "using CHECKPOINT sha1" |
| LINUX_SHA=$(cat ${LIBBPF_PATH}/CHECKPOINT-COMMIT) |
| else |
| echo "using ${KERNEL_BRANCH} sha1" |
| LINUX_SHA=$(git ls-remote ${KERNEL_ORIGIN} ${KERNEL_BRANCH} | awk '{print $1}') |
| fi |
| SNAPSHOT_URL=${KERNEL_ORIGIN}/snapshot/bpf-next-${LINUX_SHA}.tar.gz |
| |
| echo REPO_PATH = ${REPO_PATH} |
| |
| echo KERNEL_ORIGIN = ${KERNEL_ORIGIN} |
| echo LINUX_SHA = ${LINUX_SHA} |
| echo SNAPSHOT_URL = ${SNAPSHOT_URL} |
| |
| if [ ! -d "${REPO_PATH}" ]; then |
| echo |
| travis_fold start pull_kernel_srcs "Fetching kernel sources" |
| |
| mkdir -p $(dirname "${REPO_PATH}") |
| cd $(dirname "${REPO_PATH}") |
| # attempt to fetch desired bpf-next repo snapshot |
| if wget -nv ${SNAPSHOT_URL} && tar xf bpf-next-${LINUX_SHA}.tar.gz --totals ; then |
| mv bpf-next-${LINUX_SHA} $(basename ${REPO_PATH}) |
| else |
| # but fallback to git fetch approach if that fails |
| mkdir -p $(basename ${REPO_PATH}) |
| cd $(basename ${REPO_PATH}) |
| git init |
| git remote add bpf-next ${KERNEL_ORIGIN} |
| # try shallow clone first |
| git fetch --depth 32 bpf-next |
| # check if desired SHA exists |
| if ! git cat-file -e ${LINUX_SHA}^{commit} ; then |
| # if not, fetch all of bpf-next; slow and painful |
| git fetch bpf-next |
| fi |
| git reset --hard ${LINUX_SHA} |
| fi |
| |
| travis_fold end pull_kernel_srcs |
| fi |