You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.7 KiB

  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-3.0+
  3. # shellcheck disable=SC1091
  4. source /home/coreboot/common_scripts/variables.sh
  5. IS_BUILD_DIR_EMPTY=$(ls -A "$DOCKER_COREBOOT_DIR")
  6. ################################################################################
  7. ## Update or clone git coreboot repo
  8. ################################################################################
  9. function gitUpdate() {
  10. if [ -z "$IS_BUILD_DIR_EMPTY" ]; then
  11. # Clone Coreboot and fetch submodules
  12. git clone https://github.com/coreboot/coreboot.git "$DOCKER_COREBOOT_DIR"
  13. cd "$DOCKER_COREBOOT_DIR" || exit
  14. git submodule update --init --recursive --remote
  15. # blobs are ignored from updates. Manually clone to prevent compile errors later from non empty directory cloning
  16. git clone https://github.com/coreboot/blobs.git 3rdparty/blobs/
  17. else
  18. cd "$DOCKER_COREBOOT_DIR" || exit
  19. git fetch --all --tags --prune
  20. cd "$DOCKER_COREBOOT_DIR/3rdparty/blobs/" || exit
  21. git fetch --all --tags --prune
  22. fi
  23. }
  24. ################################################################################
  25. ################################################################################
  26. ##
  27. ################################################################################
  28. function checkoutTag() {
  29. git checkout tags/"$COREBOOT_TAG" || exit
  30. git submodule update --recursive --remote
  31. }
  32. ################################################################################
  33. ################################################################################
  34. ##
  35. ################################################################################
  36. function checkoutCommit() {
  37. #edge should checkout master
  38. git checkout "$COREBOOT_COMMIT" || exit
  39. git submodule update --recursive --remote
  40. }
  41. ################################################################################
  42. ################################################################################
  43. ## Download the latest released version of Coreboot
  44. ################################################################################
  45. function downloadCoreboot() {
  46. CB_RELEASES=$(wget -q -O- https://coreboot.org/releases/sha256sum.txt | sed 's/[^*]*\*//')
  47. LATEST_RELEASE=$(echo -n "$CB_RELEASES" | grep "coreboot-" | grep -v "coreboot-blobs-" | sort -V | tail -n1)
  48. LATEST_BLOBS=$(echo -n "$CB_RELEASES" | grep "coreboot-blobs-" | sort -V | tail -n1)
  49. COREBOOT_VERSION=$(echo -n "$LATEST_RELEASE" | sed 's/coreboot-//' | sed 's/.tar.xz//')
  50. echo "Beginning download of $LATEST_RELEASE..."
  51. wget -q -O- "https://coreboot.org/releases/$LATEST_RELEASE" | unxz -c | tar -C "$DOCKER_COREBOOT_DIR" -x --strip 1
  52. wget -q -O- "https://coreboot.org/releases/$LATEST_BLOBS" | unxz -c | tar -C "$DOCKER_COREBOOT_DIR" -x --strip 1
  53. echo "Downloading $LATEST_RELEASE complete"
  54. export COREBOOT_VERSION;
  55. }
  56. ################################################################################
  57. ################################################################################
  58. ## MAIN FUNCTION: download/clone/checkout appropriate version of CoreBoot
  59. ########################################
  60. ########################################################################################################################
  61. function downloadOrUpdateCoreboot() {
  62. if [ -z "$COREBOOT_COMMIT" ] && [ -z "$COREBOOT_TAG" ] && [ -z "$IS_BUILD_DIR_EMPTY" ]; then
  63. # If a no commit nor tag is given and the directory is empty download Coreboot release
  64. downloadCoreboot;
  65. elif [ "$COREBOOT_COMMIT" ]; then
  66. # DOCKER_COMMIT?=$(shell git log -n 1 --pretty=%h)
  67. gitUpdate
  68. checkoutCommit
  69. elif [ "$COREBOOT_TAG" ]; then
  70. gitUpdate
  71. checkoutTag
  72. fi
  73. }
  74. ################################################################################