From 484d8555de76015b7deba9882c5470cf1cd19ef3 Mon Sep 17 00:00:00 2001 From: Vadim Vetrov Date: Thu, 12 Sep 2024 23:19:08 +0300 Subject: [PATCH] Add luci.mk --- luci-app-youtubeUnblock/Makefile | 2 +- luci-app-youtubeUnblock/luci.mk | 349 +++++++++++++++++++++++++++++++ 2 files changed, 350 insertions(+), 1 deletion(-) create mode 100644 luci-app-youtubeUnblock/luci.mk diff --git a/luci-app-youtubeUnblock/Makefile b/luci-app-youtubeUnblock/Makefile index f96b96f..d8a6c01 100644 --- a/luci-app-youtubeUnblock/Makefile +++ b/luci-app-youtubeUnblock/Makefile @@ -3,6 +3,6 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Support for youtubeUnblock LUCI_DEPENDS:=+luci-base +luci-compat -include ../../luci.mk +include $(CURDIR)/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-youtubeUnblock/luci.mk b/luci-app-youtubeUnblock/luci.mk new file mode 100644 index 0000000..b5bd6fc --- /dev/null +++ b/luci-app-youtubeUnblock/luci.mk @@ -0,0 +1,349 @@ +# +# Copyright (C) 2008-2015 The LuCI Team +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +LUCI_NAME?=$(notdir ${CURDIR}) +LUCI_TYPE?=$(word 2,$(subst -, ,$(LUCI_NAME))) +LUCI_BASENAME?=$(patsubst luci-$(LUCI_TYPE)-%,%,$(LUCI_NAME)) +LUCI_LANGUAGES:=$(sort $(filter-out templates,$(notdir $(wildcard ${CURDIR}/po/*)))) +LUCI_DEFAULTS:=$(notdir $(wildcard ${CURDIR}/root/etc/uci-defaults/*)) +LUCI_PKGARCH?=$(if $(realpath src/Makefile),,all) +LUCI_SECTION?=luci +LUCI_CATEGORY?=LuCI +LUCI_URL?=https://github.com/openwrt/luci +LUCI_MAINTAINER?=OpenWrt LuCI community +LUCI_MINIFY_LUA?=1 +LUCI_MINIFY_CSS?=1 +LUCI_MINIFY_JS?=1 + +#LUCI_LANG_START +LUCI_LANG.ar=العربية (Arabic) +LUCI_LANG.bg=български (Bulgarian) +LUCI_LANG.bn_BD=বাংলা (Bengali) +LUCI_LANG.ca=Català (Catalan) +LUCI_LANG.cs=Čeština (Czech) +LUCI_LANG.da=Dansk (Danish) +LUCI_LANG.de=Deutsch (German) +LUCI_LANG.el=Ελληνικά (Greek) +LUCI_LANG.es=Español (Spanish) +LUCI_LANG.fi=Suomi (Finnish) +LUCI_LANG.fr=Français (French) +LUCI_LANG.he=עִבְרִית (Hebrew) +LUCI_LANG.hi=हिंदी (Hindi) +LUCI_LANG.hu=Magyar (Hungarian) +LUCI_LANG.it=Italiano (Italian) +LUCI_LANG.ja=日本語 (Japanese) +LUCI_LANG.ko=한국어 (Korean) +LUCI_LANG.lt=Lietuvių (Lithuanian) +LUCI_LANG.mr=Marāṭhī (Marathi) +LUCI_LANG.ms=Bahasa Melayu (Malay) +LUCI_LANG.nb_NO=Norsk (Norwegian) +LUCI_LANG.nl=Nederlands (Dutch) +LUCI_LANG.pl=Polski (Polish) +LUCI_LANG.pt=Português (Portuguese) +LUCI_LANG.pt_BR=Português do Brasil (Brazilian Portuguese) +LUCI_LANG.ro=Română (Romanian) +LUCI_LANG.ru=Русский (Russian) +LUCI_LANG.sk=Slovenčina (Slovak) +LUCI_LANG.sv=Svenska (Swedish) +LUCI_LANG.tr=Türkçe (Turkish) +LUCI_LANG.uk=Українська (Ukrainian) +LUCI_LANG.vi=Tiếng Việt (Vietnamese) +LUCI_LANG.zh_Hans=简体中文 (Chinese Simplified) +LUCI_LANG.zh_Hant=繁體中文 (Chinese Traditional) +#LUCI_LANG_END + +# Submenu titles +LUCI_MENU.col=1. Collections +LUCI_MENU.mod=2. Modules +LUCI_MENU.app=3. Applications +LUCI_MENU.theme=4. Themes +LUCI_MENU.proto=5. Protocols +LUCI_MENU.lib=6. Libraries + +# Language aliases +LUCI_LC_ALIAS.bn_BD=bn +LUCI_LC_ALIAS.nb_NO=no +LUCI_LC_ALIAS.pt_BR=pt-br +LUCI_LC_ALIAS.zh_Hans=zh-cn +LUCI_LC_ALIAS.zh_Hant=zh-tw + +# Default locations +HTDOCS = /www +LUA_LIBRARYDIR = /usr/lib/lua +LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci +UCODE_LIBRARYDIR = /usr/share/ucode/luci + + +# 1: everything expect po subdir or only po subdir +define findrev + $(shell \ + if git log -1 >/dev/null 2>/dev/null; then \ + set -- $$(git log -1 --format="%ct %h" --abbrev=7 -- $(if $(1),. ':(exclude)po',po)); \ + if [ -n "$$1" ]; then + secs="$$(($$1 % 86400))"; \ + yday="$$(date --utc --date="@$$1" "+%y.%j")"; \ + printf '%s.%05d~%s' "$$yday" "$$secs" "$$2"; \ + else \ + echo "0"; \ + fi; \ + else \ + ts=$$(find . -type f $(if $(1),-not) -path './po/*' -printf '%T@\n' 2>/dev/null | sort -rn | head -n1 | cut -d. -f1); \ + if [ -n "$$ts" ]; then \ + secs="$$(($$ts % 86400))"; \ + date="$$(date --utc --date="@$$ts" "+%y%m%d")"; \ + printf '0.%s.%05d' "$$date" "$$secs"; \ + else \ + echo "0"; \ + fi; \ + fi \ + ) +endef + +PKG_NAME?=$(LUCI_NAME) +PKG_RELEASE?=1 +PKG_INSTALL:=$(if $(realpath src/Makefile),1) +PKG_BUILD_DEPENDS += lua/host luci-base/host LUCI_CSSTIDY:csstidy/host LUCI_SRCDIET:luasrcdiet/host $(LUCI_BUILD_DEPENDS) +PKG_CONFIG_DEPENDS += CONFIG_LUCI_SRCDIET CONFIG_LUCI_JSMIN CONFIG_LUCI_CSSTIDY + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +PKG_PO_VERSION?=$(if $(DUMP),x,$(strip $(call findrev))) +PKG_SRC_VERSION?=$(if $(DUMP),x,$(strip $(call findrev,1))) + +PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \ + variant="LuCI"; \ + if git log -1 >/dev/null 2>/dev/null; then \ + branch=$$(git branch --format='%(refname:strip=3)' --remote --no-abbrev --contains 2>/dev/null | tail -n1); \ + branch=$${branch:-$$(git branch --format='%(refname:strip=2)' --no-abbrev --contains 2>/dev/null | tail -n1)}; \ + if [ "$$branch" != "master" ]; then \ + variant="LuCI $${branch:-unknown} branch"; \ + else \ + variant="LuCI Master"; \ + fi; \ + fi; \ + echo "$$variant" \ +))) + +include $(INCLUDE_DIR)/package.mk + +# LUCI_SUBMENU: the submenu-item below the LuCI top-level menu inside OpenWrt menuconfig +# usually one of the LUCI_MENU.* definitions +# LUCI_SUBMENU_DEFAULT: the regular SUBMENU defined by LUCI_TYPE or derived from the packagename +# LUCI_SUBMENU_FORCED: manually forced value SUBMENU to set to by explicit definition +# can be any string, "none" disables the creation of a submenu +# most useful in combination with LUCI_CATEGORY, to make the package appear +# anywhere in the menu structure +LUCI_SUBMENU_DEFAULT=$(if $(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.app)) +LUCI_SUBMENU=$(if $(LUCI_SUBMENU_FORCED),$(LUCI_SUBMENU_FORCED),$(LUCI_SUBMENU_DEFAULT)) + +ifneq ($(wildcard ${CURDIR}/luasrc/*),) + ifneq ($(filter-out luci-lib-base luci-lua-runtime,$(PKG_NAME)),) + LUCI_DEPENDS += +luci-lua-runtime + endif +endif + +define Package/$(PKG_NAME) + SECTION:=$(LUCI_SECTION) + CATEGORY:=$(LUCI_CATEGORY) +ifneq ($(LUCI_SUBMENU),none) + SUBMENU:=$(LUCI_SUBMENU) +endif + TITLE:=$(if $(LUCI_TITLE),$(LUCI_TITLE),LuCI $(LUCI_NAME) $(LUCI_TYPE)) + DEPENDS:=$(LUCI_DEPENDS) + VERSION:=$(if $(PKG_VERSION),$(if $(PKG_RELEASE),$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_VERSION)),$(PKG_SRC_VERSION)) + $(if $(LUCI_EXTRA_DEPENDS),EXTRA_DEPENDS:=$(LUCI_EXTRA_DEPENDS)) + $(if $(LUCI_PKGARCH),PKGARCH:=$(LUCI_PKGARCH)) + $(if $(PKG_PROVIDES),PROVIDES:=$(PKG_PROVIDES)) + URL:=$(LUCI_URL) + MAINTAINER:=$(LUCI_MAINTAINER) +endef + +ifneq ($(LUCI_DESCRIPTION),) + define Package/$(PKG_NAME)/description + $(strip $(LUCI_DESCRIPTION)) + endef +endif + +define Build/Prepare + for d in luasrc ucode htdocs root src; do \ + if [ -d ./$$$$d ]; then \ + mkdir -p $(PKG_BUILD_DIR)/$$$$d; \ + $(CP) ./$$$$d/* $(PKG_BUILD_DIR)/$$$$d/; \ + fi; \ + done + $(call Build/Prepare/Default) +endef + +define Build/Configure +endef + +ifneq ($(wildcard ${CURDIR}/src/Makefile),) + MAKE_PATH := src/ + MAKE_VARS += FPIC="$(FPIC)" LUCI_VERSION="$(PKG_SRC_VERSION)" LUCI_GITBRANCH="$(PKG_GITBRANCH)" + + define Build/Compile + $(call Build/Compile/Default,clean compile) + endef +else + define Build/Compile + endef +endif + +define Package/$(PKG_NAME)/install + + ifneq ($(wildcard ${CURDIR}/luasrc),) + $(INSTALL_DIR) $(1)$(LUCI_LIBRARYDIR) + cp -pR $(PKG_BUILD_DIR)/luasrc/* $(1)$(LUCI_LIBRARYDIR)/ + $(FIND) $(1)$(LUCI_LIBRARYDIR)/ -type f -name '*.luadoc' | $(XARGS) rm + $(if $(CONFIG_LUCI_SRCDIET),$(call SrcDiet,$(1)$(LUCI_LIBRARYDIR)/),true) + $(call SubstituteVersion,$(1)$(LUCI_LIBRARYDIR)/) + endif + ifneq ($(wildcard ${CURDIR}/ucode),) + $(INSTALL_DIR) $(1)$(UCODE_LIBRARYDIR) + cp -pR $(PKG_BUILD_DIR)/ucode/* $(1)$(UCODE_LIBRARYDIR)/ + $(call SubstituteVersion,$(1)$(UCODE_LIBRARYDIR)/) + endif + ifneq ($(wildcard ${CURDIR}/htdocs),) + $(INSTALL_DIR) $(1)$(HTDOCS) + cp -pR $(PKG_BUILD_DIR)/htdocs/* $(1)$(HTDOCS)/ + $(if $(CONFIG_LUCI_JSMIN),$(call JsMin,$(1)$(HTDOCS)/),true) + $(if $(CONFIG_LUCI_CSSTIDY),$(call CssTidy,$(1)$(HTDOCS)/),true) + endif + ifneq ($(wildcard ${CURDIR}/root),) + $(INSTALL_DIR) $(1)/ + cp -pR $(PKG_BUILD_DIR)/root/* $(1)/ + endif + ifneq ($(wildcard ${CURDIR}/src),) + $(call Build/Install/Default) + $(CP) $(PKG_INSTALL_DIR)/* $(1)/ + endif +endef + +ifndef Package/$(PKG_NAME)/postinst +define Package/$(PKG_NAME)/postinst +[ -n "$${IPKG_INSTROOT}" ] || { \ + rm -f /tmp/luci-indexcache.* + rm -rf /tmp/luci-modulecache/ + killall -HUP rpcd 2>/dev/null + exit 0 +} +endef +endif + +# some generic macros that can be used by all packages +ifeq ($(LUCI_MINIFY_LUA),1) + define SrcDiet + $(FIND) $(1) -type f -name '*.lua' | while read src; do \ + if LUA_PATH="$(STAGING_DIR_HOSTPKG)/lib/lua/5.1/?.lua" luasrcdiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \ + then mv "$$$$src.o" "$$$$src"; fi; \ + done + endef +else + define SrcDiet + $$(call MESSAGE,$$(LUCI_NAME) does not support Lua source minification) + endef +endif + +ifeq ($(LUCI_MINIFY_JS),1) + define JsMin + $(FIND) $(1) -type f -name '*.js' | while read src; do \ + if jsmin < "$$$$src" > "$$$$src.o"; \ + then mv "$$$$src.o" "$$$$src"; fi; \ + done + endef +else + define JsMin + $$(call MESSAGE,$$(LUCI_NAME) does not support JavaScript source minification) + endef +endif + +ifeq ($(LUCI_MINIFY_CSS),1) + define CssTidy + $(FIND) $(1) -type f -name '*.css' | while read src; do \ + if csstidy "$$$$src" --template=highest --remove_last_semicolon=true "$$$$src.o"; \ + then mv "$$$$src.o" "$$$$src"; fi; \ + done + endef +else + define CssTidy + $$(call MESSAGE,$$(LUCI_NAME) does not support CSS source minification) + endef +endif + +define SubstituteVersion + $(FIND) $(1) -type f -name '*.htm' | while read src; do \ + $(SED) 's/<%# *\([^ ]*\)PKG_VERSION *%>/\1$(if $(PKG_VERSION),$(PKG_VERSION),$(PKG_SRC_VERSION))/g' \ + -e 's/"\(<%= *\(media\|resource\) *%>[^"]*\.\(js\|css\)\)"/"\1?v=$(if $(PKG_VERSION),$(PKG_VERSION),$(PKG_SRC_VERSION))"/g' \ + "$$$$src"; \ + done; \ + $(FIND) $(1) -type f -name '*.ut' | while read src; do \ + $(SED) 's/{# *\([^ ]*\)PKG_VERSION *#}/\1$(if $(PKG_VERSION),$(PKG_VERSION),$(PKG_SRC_VERSION))/g' \ + -e 's/"\({{ *\(media\|resource\) *}}[^"]*\.\(js\|css\)\)"/"\1?v=$(if $(PKG_VERSION),$(PKG_VERSION),$(PKG_SRC_VERSION))"/g' \ + "$$$$src"; \ + done +endef + +# additional setting luci-base package +ifeq ($(PKG_NAME),luci-base) + define Package/luci-base/config + config LUCI_SRCDIET + bool "Minify Lua sources" + default n + + config LUCI_JSMIN + bool "Minify JavaScript sources" + default y + + config LUCI_CSSTIDY + bool "Minify CSS files" + default y + + menu "Translations"$(foreach lang,$(LUCI_LANGUAGES),$(if $(LUCI_LANG.$(lang)), + + config LUCI_LANG_$(lang) + tristate "$(shell echo '$(LUCI_LANG.$(lang))' | sed -e 's/^.* (\(.*\))$$/\1/') ($(lang))")) + + endmenu + endef +endif + + +LUCI_BUILD_PACKAGES := $(PKG_NAME) + +# 1: LuCI language code +# 2: BCP 47 language tag +define LuciTranslation + define Package/luci-i18n-$(LUCI_BASENAME)-$(1) + SECTION:=luci + CATEGORY:=LuCI + TITLE:=$(PKG_NAME) - $(1) translation + HIDDEN:=1 + DEFAULT:=LUCI_LANG_$(2)||(ALL&&m) + DEPENDS:=$(PKG_NAME) + VERSION:=$(PKG_PO_VERSION) + PKGARCH:=all + endef + + define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/description + Translation for $(PKG_NAME) - $(LUCI_LANG.$(2)) + endef + + define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/install + $$(INSTALL_DIR) $$(1)/etc/uci-defaults + echo "uci set luci.languages.$(subst -,_,$(1))='$(LUCI_LANG.$(2))'; uci commit luci" \ + > $$(1)/etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1) + $$(INSTALL_DIR) $$(1)$(LUCI_LIBRARYDIR)/i18n + $(foreach po,$(wildcard ${CURDIR}/po/$(2)/*.po), \ + po2lmo $(po) \ + $$(1)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(1).lmo;) + endef + + LUCI_BUILD_PACKAGES += luci-i18n-$(LUCI_BASENAME)-$(1) + +endef + +$(foreach lang,$(LUCI_LANGUAGES),$(if $(LUCI_LANG.$(lang)),$(eval $(call LuciTranslation,$(firstword $(LUCI_LC_ALIAS.$(lang)) $(lang)),$(lang))))) +$(foreach pkg,$(LUCI_BUILD_PACKAGES),$(eval $(call BuildPackage,$(pkg))))