From 315d99896b4cef2cb814e5053dba8ae714f1a32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Pe=C4=8Dovnik?= Date: Thu, 28 Oct 2021 18:16:43 +0200 Subject: [PATCH] Store changelog for upstream changes in the cache/hash/ (#3131) * Store changelog for upstream changes in the cache/hash/ * Cleanup * Calculate urls * Use URL Don't merge since it doesn't work properly yet * Check if OLDHASHTARGET commit exists otherwise use oldest * Fix log updating * Improve log format, add better support for sunxi --- lib/build-all-ng.sh | 2 +- lib/compilation.sh | 32 +++++++++++++++++++++++++++++--- lib/general.sh | 8 ++++---- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/build-all-ng.sh b/lib/build-all-ng.sh index 68dce52208..3044faa2b8 100644 --- a/lib/build-all-ng.sh +++ b/lib/build-all-ng.sh @@ -58,7 +58,7 @@ unset LINUXFAMILY LINUXCONFIG KERNELDIR KERNELSOURCE KERNELBRANCH BOOTDIR BOOTSO CRYPTROOT_SSH_UNLOCK_PORT CRYPTROOT_SSH_UNLOCK_KEY_NAME ROOT_MAPPER NETWORK HDMI USB WIRELESS ARMBIANMONITOR FORCE_BOOTSCRIPT_UPDATE \ UBOOT_TOOLCHAIN2 toolchain2 BUILD_REPOSITORY_URL BUILD_REPOSITORY_COMMIT BUILD_TARGET HOST BUILD_IMAGE DEB_STORAGE REPO_STORAGE REPO_CONFIG \ REPOSITORY_UPDATE PACKAGE_LIST_RELEASE LOCAL_MIRROR COMPILE_ATF PACKAGE_LIST_BOARD PACKAGE_LIST_FAMILY PACKAGE_LIST_DESKTOP_BOARD \ - PACKAGE_LIST_DESKTOP_FAMILY ATF_COMPILE ATFPATCHDIR OFFSET BOOTSOURCEDIR \ + PACKAGE_LIST_DESKTOP_FAMILY ATF_COMPILE ATFPATCHDIR OFFSET BOOTSOURCEDIR KERNEL_VERSION_LEVEL \ BOOT_SOC DDR_BLOB MINILOADER_BLOB BL31_BLOB BOOT_SCENARIO BOOT_SUPPORT_SPI OFFLINE_WORK \ IMAGE_PARTITION_TABLE BOOT_LOGO UPSTREM_VER FORCED_MONTH_OFFSET PACKAGE_LIST_BOARD_REMOVE PACKAGE_LIST_FAMILY_REMOVE PACKAGE_LIST_DESKTOP \ PACKAGE_LIST_DESKTOP_BOARD_REMOVE PACKAGE_LIST_DESKTOP_FAMILY_REMOVE BOOTCONFIG_EDGE DESKTOP_ENVIRONMENT DESKTOP_ENVIRONMENT_CONFIG_NAME \ diff --git a/lib/compilation.sh b/lib/compilation.sh index fd951b6579..f7127f7736 100644 --- a/lib/compilation.sh +++ b/lib/compilation.sh @@ -521,13 +521,39 @@ compile_kernel() rsync --remove-source-files -rq ./*.deb "${DEB_STORAGE}/" || exit_with_error "Failed moving kernel DEBs" - # store git hash to the file - echo "${hash}" > "${SRC}/cache/hash"$([[ ${BETA} == yes ]] && echo "-beta")"/linux-image-${BRANCH}-${LINUXFAMILY}.githash" + # store git hash to the file and create a change log + HASHTARGET="${SRC}/cache/hash"$([[ ${BETA} == yes ]] && echo "-beta")"/linux-image-${BRANCH}-${LINUXFAMILY}" + OLDHASHTARGET=$(head -1 "${HASHTARGET}.githash" 2>/dev/null) + + # check if OLDHASHTARGET commit exists otherwise use oldest + if [[ -z ${KERNEL_VERSION_LEVEL} ]]; then + git -C ${kerneldir} cat-file -t ${OLDHASHTARGET} >/dev/null 2>&1 + [[ $? -ne 0 ]] && OLDHASHTARGET=$(git -C ${kerneldir} show HEAD~199 --pretty=format:"%H" --no-patch) + else + git -C ${kerneldir} cat-file -t ${OLDHASHTARGET} >/dev/null 2>&1 + [[ $? -ne 0 ]] && OLDHASHTARGET=$(git -C ${kerneldir} rev-list --max-parents=0 HEAD) + fi + [[ -z ${KERNELPATCHDIR} ]] && KERNELPATCHDIR=$LINUXFAMILY-$BRANCH [[ -z ${LINUXCONFIG} ]] && LINUXCONFIG=linux-$LINUXFAMILY-$BRANCH + + # calculate URL + if [[ "$KERNELSOURCE" == *"github.com"* ]]; then + URL="${KERNELSOURCE/git:/https:}/commit/${HASH}" + elif [[ "$KERNELSOURCE" == *"kernel.org"* ]]; then + URL="${KERNELSOURCE/git:/https:}/commit/?h=$(echo $KERNELBRANCH | cut -d":" -f2)&id=${HASH}" + else + URL="${KERNELSOURCE}/+/$HASH" + fi + + # create change log + git --no-pager -C ${kerneldir} log --abbrev-commit --oneline --no-patch --no-merges --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(black bold)%ad%Creset%C(auto) | %s | <%an> | %H' ${OLDHASHTARGET}..${hash} > "${HASHTARGET}.gitlog" + + echo "${hash}" > "${HASHTARGET}.githash" hash_watch_1=$(LC_COLLATE=C find -L "${SRC}/patch/kernel/${KERNELPATCHDIR}"/ -mindepth 1 -maxdepth 1 -printf '%s %P\n' 2> /dev/null | sort -n) hash_watch_2=$(cat "${SRC}/config/kernel/${LINUXCONFIG}.config") - echo "${hash_watch_1}${hash_watch_2}" | improved_git hash-object --stdin >> "${SRC}/cache/hash"$([[ ${BETA} == yes ]] && echo "-beta")"/linux-image-${BRANCH}-${LINUXFAMILY}.githash" + echo "${hash_watch_1}${hash_watch_2}" | improved_git hash-object --stdin >> "${HASHTARGET}.githash" + } diff --git a/lib/general.sh b/lib/general.sh index 8773d8f245..0dd0ae4a9f 100644 --- a/lib/general.sh +++ b/lib/general.sh @@ -366,15 +366,15 @@ fetch_from_repo() # remote was updated, fetch and check out updates display_alert "Fetching updates" case $ref_type in - branch) improved_git fetch --depth 1 origin "${ref_name}" ;; - tag) improved_git fetch --depth 1 origin tags/"${ref_name}" ;; - head) improved_git fetch --depth 1 origin HEAD ;; + branch) improved_git fetch --depth 200 origin "${ref_name}" ;; + tag) improved_git fetch --depth 200 origin tags/"${ref_name}" ;; + head) improved_git fetch --depth 200 origin HEAD ;; esac # commit type needs support for older git servers that doesn't support fetching id directly if [[ $ref_type == commit ]]; then - improved_git fetch --depth 1 origin "${ref_name}" + improved_git fetch --depth 200 origin "${ref_name}" # cover old type if [[ $? -ne 0 ]]; then