|
|
- #!/bin/bash
- # SPDX-License-Identifier: GPL-3.0+
- # Copyright (C) 2018, Tom Hiller <thrilleratplay@gmail.com>
-
- # shellcheck disable=SC1091
- source /home/coreboot/common_scripts/variables.sh
-
- IS_BUILD_DIR_EMPTY=$(ls -A "$DOCKER_COREBOOT_DIR")
-
-
- ################################################################################
- ## Update or clone git coreboot repo
- ################################################################################
- function gitUpdate() {
- if [ -z "$IS_BUILD_DIR_EMPTY" ]; then
- # Clone Coreboot and fetch submodules
- git clone https://github.com/coreboot/coreboot.git "$DOCKER_COREBOOT_DIR"
- cd "$DOCKER_COREBOOT_DIR" || exit
- git submodule update --init --recursive --remote
-
- # blobs are ignored from updates. Manually clone to prevent compile errors later from non empty directory cloning
- git clone https://github.com/coreboot/blobs.git 3rdparty/blobs/
- else
- cd "$DOCKER_COREBOOT_DIR" || exit
- git fetch --all --tags --prune
-
- cd "$DOCKER_COREBOOT_DIR/3rdparty/blobs/" || exit
- git fetch --all --tags --prune
- fi
- }
- ################################################################################
-
-
-
- ################################################################################
- ##
- ################################################################################
- function checkoutTag() {
- cd "$DOCKER_COREBOOT_DIR" || exit
- git checkout tags/"$COREBOOT_TAG" || exit
- git submodule update --recursive --remote
- }
- ################################################################################
-
-
-
- ################################################################################
- ##
- ################################################################################
- function checkoutCommit() {
- cd "$DOCKER_COREBOOT_DIR" || exit
- # bleeding-edge should checkout master
- git checkout "$COREBOOT_COMMIT" || exit
-
- if [ "$COREBOOT_COMMIT" == "master" ]; then
- git pull --all
- fi
-
- git submodule update --recursive --remote
- }
- ################################################################################
-
- ################################################################################
- ## Cherry-pick a patchset
- ################################################################################
- function cherryPickPatchset() {
- cd "$DOCKER_COREBOOT_DIR" || exit
-
- # Workaround git complaining about unset email
- git config --global user.email "dummys@docker.com" && git config --global user.name "skull.docker"
-
- git fetch "https://review.coreboot.org/coreboot" "$COREBOOT_PATCHSET" || exit
- git cherry-pick FETCH_HEAD || exit
-
- git submodule update --recursive --remote
- }
-
- ################################################################################
- ## Download the latest released version of Coreboot
- ################################################################################
- function downloadCoreboot() {
- CB_RELEASES=$(wget -q -O- https://coreboot.org/releases/sha256sum.txt | sed 's/[^*]*\*//')
-
- LATEST_RELEASE=$(echo -n "$CB_RELEASES" | grep "coreboot-" | grep -v "coreboot-blobs-" | sort -V | tail -n1)
- LATEST_BLOBS=$(echo -n "$CB_RELEASES" | grep "coreboot-blobs-" | sort -V | tail -n1)
- COREBOOT_VERSION=$(echo -n "$LATEST_RELEASE" | sed 's/coreboot-//' | sed 's/.tar.xz//')
-
- echo "Beginning download of $LATEST_RELEASE..."
-
- wget -q -O- "https://coreboot.org/releases/$LATEST_RELEASE" | unxz -c | tar -C "$DOCKER_COREBOOT_DIR" -x --strip 1
- wget -q -O- "https://coreboot.org/releases/$LATEST_BLOBS" | unxz -c | tar -C "$DOCKER_COREBOOT_DIR" -x --strip 1
-
- echo "Downloading $LATEST_RELEASE complete"
-
- export COREBOOT_VERSION;
- }
- ################################################################################
-
-
-
- ################################################################################
- ## MAIN FUNCTION: download/clone/checkout appropriate version of CoreBoot
- ########################################
- ########################################################################################################################
- function downloadOrUpdateCoreboot() {
- if [ -z "$COREBOOT_COMMIT" ] && [ -z "$COREBOOT_TAG" ] && [ -z "$IS_BUILD_DIR_EMPTY" ]; then
- # If a no commit nor tag is given and the directory is empty download Coreboot release
- downloadCoreboot;
- elif [ "$COREBOOT_COMMIT" ]; then
- # DOCKER_COMMIT?=$(shell git log -n 1 --pretty=%h)
- gitUpdate
- checkoutCommit
- elif [ "$COREBOOT_TAG" ]; then
- gitUpdate
- checkoutTag
- fi
-
- if [ "$COREBOOT_PATCHSET" ]; then
- cherryPickPatchset
- fi
- }
- ################################################################################
|