From 8716b764eea321e984d51571eb89ac1c67284f16 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Sat, 21 Jun 2025 17:11:42 +0800 Subject: [PATCH] kernel/Makefile: check kernelsu driver version from online git repo first, if fails then check local .git and if that also fails then use hardcoded fallback Co-authored-by: rifsxd --- kernel/Makefile | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/kernel/Makefile b/kernel/Makefile index a61b11ba..a92c7dc4 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -19,18 +19,33 @@ obj-$(CONFIG_KSU) += kernelsu.o obj-$(CONFIG_KPM) += kpm/ -# .git is a text file while the module is imported by 'git submodule add'. -ifeq ($(shell test -e $(srctree)/$(src)/../.git; echo $$?),0) -$(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin [ -f ../.git/shallow ] && git fetch --unshallow) -KSU_GIT_VERSION := $(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git rev-list --count main) -# ksu_version: major * 10000 + git version + 606 for historical reasons -$(eval KSU_VERSION=$(shell expr 10000 + $(KSU_GIT_VERSION) + 606)) -$(info -- SukiSU version: $(KSU_VERSION)) -ccflags-y += -DKSU_VERSION=$(KSU_VERSION) -else # If there is no .git file, the default version will be passed. -$(warning "KSU_GIT_VERSION not defined! It is better to make SukiSU a git submodule!") -ccflags-y += -DKSU_VERSION=12800 +REPO_OWNER := SukiSU-Ultra +REPO_NAME := SukiSU-Ultra +REPO_BRANCH := main + +GIT_BIN := /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git +CURL_BIN := /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin curl + +KSU_GITHUB_VERSION := $(shell $(CURL_BIN) -sI "https://api.github.com/repos/$(REPO_OWNER)/$(REPO_NAME)/commits?sha=$(REPO_BRANCH)&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p') + +ifeq ($(KSU_GITHUB_VERSION),) + ifeq ($(shell test -e $(srctree)/$(src)/../.git; echo $$?),0) + $(shell cd $(srctree)/$(src); [ -f ../.git/shallow ] && $(GIT_BIN) fetch --unshallow) + KSU_LOCAL_VERSION := $(shell cd $(srctree)/$(src); $(GIT_BIN) rev-list --count HEAD) + $(eval KSU_VERSION := $(shell expr 10000 + $(KSU_LOCAL_VERSION) + 700)) + $(info -- SukiSU-Ultra version (local .git): $(KSU_VERSION)) + else + $(eval KSU_VERSION := 13000) + $(warning -- Could not fetch version online or via local .git! Using fallback version: $(KSU_VERSION)) + endif +else + $(eval KSU_VERSION := $(shell expr 10000 + $(KSU_GITHUB_VERSION) + 700)) + $(info -- SukiSU-Ultra version (GitHub): $(KSU_VERSION)) endif + +$(info -- SukiSU-Ultra version: $(KSU_VERSION)) +ccflags-y += -DKSU_VERSION=$(KSU_VERSION) + ifeq ($(strip $(CONFIG_KSU_MANUAL_HOOK)),y) $(info -- SukiSU: Manual hooking enabled!) else