From a37f398cc799d5dae065ccfddbc2b52ab15d9eba Mon Sep 17 00:00:00 2001 From: Rifat Azad Date: Sat, 14 Jun 2025 22:28:19 +0600 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 --- kernel/Makefile | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/kernel/Makefile b/kernel/Makefile index aa380e9a..c19de2d4 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -16,18 +16,32 @@ ccflags-y += -I$(objtree)/security/selinux -include $(srctree)/include/uapi/asm- obj-$(CONFIG_KSU) += kernelsu.o -# .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 HEAD) -# ksu_version: major * 10000 + git version + 200 for historical reasons -$(eval KSU_VERSION=$(shell expr 10000 + $(KSU_GIT_VERSION) + 200)) +REPO_OWNER := KernelSU-Next +REPO_NAME := KernelSU-Next +REPO_BRANCH := next + +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) + 200)) + $(info -- KernelSU-Next version (local .git): $(KSU_VERSION)) + else + $(eval KSU_VERSION := 11998) + $(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) + 200)) + $(info -- KernelSU-Next version (GitHub): $(KSU_VERSION)) +endif + $(info -- KernelSU-Next 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 KernelSU-Next a git submodule!") -ccflags-y += -DKSU_VERSION=11998 -endif ifeq ($(shell grep -q " current_sid(void)" $(srctree)/security/selinux/include/objsec.h; echo $$?),0) ccflags-y += -DKSU_COMPAT_HAS_CURRENT_SID