From 00ffa86705032f8b65e98057b178ae4526edb614 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 | 36 +++++++++++++++++++++++++----------- manager/build.gradle.kts | 2 +- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/kernel/Makefile b/kernel/Makefile index 8327d8bf..cd78f0ea 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -19,19 +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 -- KernelSU 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 a git submodule!") -ccflags-y += -DKSU_VERSION=16 +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) + ifndef KSU_EXPECTED_SIZE KSU_EXPECTED_SIZE := 0x35c endif diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts index d3526552..72ec98b5 100644 --- a/manager/build.gradle.kts +++ b/manager/build.gradle.kts @@ -32,7 +32,7 @@ val androidCompileSdkVersion = 36 val androidCompileNdkVersion = "28.0.13004108" val androidSourceCompatibility = JavaVersion.VERSION_21 val androidTargetCompatibility = JavaVersion.VERSION_21 -val managerVersionCode by extra(1 * 10000 + getGitCommitCount() + 606) +val managerVersionCode by extra(1 * 10000 + getGitCommitCount() + 700) val managerVersionName by extra(getGitDescribe()) fun getGitCommitCount(): Int {