include $(TOPDIR)/rules.mk

PKG_NAME:=one-kvm
PKG_VERSION:=$(if $(CONFIG_ONE_KVM_APPLICATION_VERSION),$(call qstrip,$(CONFIG_ONE_KVM_APPLICATION_VERSION)),0.2.8)
PKG_RELEASE:=10
PKG_LICENSE:=AGPL-3.0-only
PKG_MAINTAINER:=One-KVM OS maintainers
PKG_CONFIG_DEPENDS:=CONFIG_ONE_KVM_APPLICATION_VERSION CONFIG_ONE_KVM_PREBUILT_BINARY CONFIG_ONE_KVM_PREBUILT_MANIFEST CONFIG_ONE_KVM_RUNTIME_DEPENDS CONFIG_ONE_KVM_VENTOY_RESOURCES

include $(INCLUDE_DIR)/package.mk

# Preserve the producer's ELF hash in the installed provenance manifest.
# The Rust release binary is already stripped by its build profile.
RSTRIP:=:

ONE_KVM_BINARY:=$(call qstrip,$(CONFIG_ONE_KVM_PREBUILT_BINARY))
ONE_KVM_MANIFEST:=$(call qstrip,$(CONFIG_ONE_KVM_PREBUILT_MANIFEST))
ONE_KVM_VENTOY_RESOURCES:=$(call qstrip,$(CONFIG_ONE_KVM_VENTOY_RESOURCES))
ONE_KVM_DEPENDS:=$(call qstrip,$(CONFIG_ONE_KVM_RUNTIME_DEPENDS))
PKG_FILE_DEPENDS:=$(ONE_KVM_BINARY) $(ONE_KVM_MANIFEST) $(ONE_KVM_VENTOY_RESOURCES)

define Package/one-kvm
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=One-KVM OS application (explicit prebuilt input)
  DEPENDS:=+libc +ip-full +uci +ubus +rpcd +ttyd $(ONE_KVM_DEPENDS)
endef

define Package/one-kvm/config
  source "$(SOURCE)/Config.in"
endef

define Package/one-kvm/description
  Installs a verified, explicitly supplied OpenWrt musl executable.
  This recipe does not yet build the Rust/native dependency graph.
endef

define Package/one-kvm/conffiles
/etc/config/one-kvm
endef

define Build/Prepare
	$(INSTALL_DIR) $(PKG_BUILD_DIR)
	$(STAGING_DIR_HOST)/bin/python3 $(CURDIR)/validate-prebuilt.py \
		--binary "$(ONE_KVM_BINARY)" --manifest "$(ONE_KVM_MANIFEST)" \
		--target "$(ARCH)" --readelf "$(TARGET_CROSS)readelf" \
		--package-depends "$(ONE_KVM_DEPENDS)" --version "$(PKG_VERSION)"
	$(CP) "$(ONE_KVM_BINARY)" $(PKG_BUILD_DIR)/one-kvm
	$(CP) "$(ONE_KVM_MANIFEST)" $(PKG_BUILD_DIR)/manifest.json
	$(STAGING_DIR_HOST)/bin/python3 $(CURDIR)/stage-ventoy.py \
		--source "$(ONE_KVM_VENTOY_RESOURCES)" --output "$(PKG_BUILD_DIR)/ventoy"
endef

define Build/Compile
endef

define Package/one-kvm/install
	$(INSTALL_DIR) $(1)/usr/bin $(1)/etc/init.d $(1)/etc/config $(1)/usr/share/one-kvm
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/one-kvm $(1)/usr/bin/one-kvm
	$(INSTALL_BIN) ./files/one-kvm.init $(1)/etc/init.d/one-kvm
	$(INSTALL_CONF) ./files/one-kvm.config $(1)/etc/config/one-kvm
	$(INSTALL_DATA) $(PKG_BUILD_DIR)/manifest.json $(1)/usr/share/one-kvm/manifest.json
	$(INSTALL_DIR) $(1)/usr/share/one-kvm/ventoy
	$(INSTALL_DATA) $(PKG_BUILD_DIR)/ventoy/*.img $(1)/usr/share/one-kvm/ventoy/
endef

$(eval $(call BuildPackage,one-kvm))
