summaryrefslogtreecommitdiff
path: root/personal-pkgs-repo
diff options
context:
space:
mode:
Diffstat (limited to 'personal-pkgs-repo')
-rw-r--r--personal-pkgs-repo/files/autopkg-branch.mk24
-rw-r--r--personal-pkgs-repo/files/autopkg-common.mk36
-rw-r--r--personal-pkgs-repo/files/autopkg-tag.mk8
3 files changed, 68 insertions, 0 deletions
diff --git a/personal-pkgs-repo/files/autopkg-branch.mk b/personal-pkgs-repo/files/autopkg-branch.mk
new file mode 100644
index 0000000..871cffb
--- /dev/null
+++ b/personal-pkgs-repo/files/autopkg-branch.mk
@@ -0,0 +1,24 @@
+# Autopkg tracking given branch
+AUTOPKG_VARIANT:=branch
+$(call include_mk, autopkg-common.mk)
+
+ifndef PKG_SOURCE_BRANCH
+$(error You have to define PKG_SOURCE_BRANCH before pkgauto.mk include)
+endif
+
+PKG_SOURCE_VERSION:=$(shell git $(GIT_ARGS) rev-parse "$(PKG_SOURCE_BRANCH)")
+PKG_VERSION:=$(shell git $(GIT_ARGS) describe --abbrev=0 --tags "$(PKG_SOURCE_BRANCH)")
+
+ifeq ($(PKG_VERSION),)
+# Count commits since initial commit.
+PKG_RELEASE:=$(shell git $(GIT_ARGS) rev-list --count "$(PKG_SOURCE_VERSION)")
+# No previous version found (no tag) so we use 9999 instead
+PKG_VERSION:=9999
+else
+# Count commits since last version tag
+PKG_RELEASE:=$(shell git $(GIT_ARGS) rev-list --count "$(PKG_VERSION)..$(PKG_SOURCE_VERSION)")
+# .9999 is appended to not collide with possible existing package versions in repository
+PKG_VERSION:=$(PKG_VERSION:v%=%).9999
+endif
+
+$(eval $(call AUTOPKG_TAIL))
diff --git a/personal-pkgs-repo/files/autopkg-common.mk b/personal-pkgs-repo/files/autopkg-common.mk
new file mode 100644
index 0000000..c539e1a
--- /dev/null
+++ b/personal-pkgs-repo/files/autopkg-common.mk
@@ -0,0 +1,36 @@
+ifndef AUTOPKG_VARIANT
+ $(error "Don't include autopkg-common.mk directly!")
+endif
+
+ifndef PKG_NAME
+$(error You have to define PKG_NAME before pkgauto.mk include)
+endif
+ifndef PKG_SOURCE_URL
+$(error You have to define PKG_SOURCE_URL before pkgauto.mk include)
+endif
+
+TMP_REPO_PATH=$(DL_DIR)/autopkg/$(PKG_NAME)
+GIT_ARGS=--git-dir='$(TMP_REPO_PATH)' --bare
+
+# Clone/update git history to bare repository
+$(shell \
+ if [ ! -d "$(TMP_REPO_PATH)" ]; then \
+ git clone --mirror "$(PKG_SOURCE_URL)" "$(TMP_REPO_PATH)"; \
+ else \
+ git $(GIT_ARGS) remote update origin; \
+ fi)
+
+
+define AUTOPKG_TAIL
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)
+
+undefine TMP_REPO_PATH
+undefine GIT_ARGS
+undefine AUTOPKG_TAIL
+
+endef
diff --git a/personal-pkgs-repo/files/autopkg-tag.mk b/personal-pkgs-repo/files/autopkg-tag.mk
new file mode 100644
index 0000000..6fe08d4
--- /dev/null
+++ b/personal-pkgs-repo/files/autopkg-tag.mk
@@ -0,0 +1,8 @@
+# Autopkg tracking latest version tag
+AUTOPKG_VARIANT:=tag
+$(call include_mk, autopkg-common.mk)
+
+PKG_SOURCE_VERSION:=$(shell git $(GIT_ARGS) tag | grep '^v' | sort | tail -1)
+PKG_VERSION:=$(subst v%,%,$(PKG_SOURCE_VERSION))
+
+$(eval $(call AUTOPKG_TAIL))