X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=luci.mk;h=12cdd6de901cfa5dbda1f119afd8f715018f6de2;hb=HEAD;hp=5bc4647da8af10836af33e7c5b884b73b6e65caf;hpb=d1134c1a40692e0151e71c9b6ce1d5e07f2ddbcd;p=project%2Fluci.git diff --git a/luci.mk b/luci.mk index 5bc4647da8..b5bd6fcd13 100644 --- a/luci.mk +++ b/luci.mk @@ -10,16 +10,23 @@ 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) - -# Language code titles +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.en=English LUCI_LANG.es=Español (Spanish) LUCI_LANG.fi=Suomi (Finnish) LUCI_LANG.fr=Français (French) @@ -29,12 +36,14 @@ 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_BR=Português do Brasil (Brazilian Portuguese) 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) @@ -44,6 +53,7 @@ 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 @@ -60,8 +70,11 @@ LUCI_LC_ALIAS.pt_BR=pt-br LUCI_LC_ALIAS.zh_Hans=zh-cn LUCI_LC_ALIAS.zh_Hant=zh-tw - -PKG_NAME?=$(LUCI_NAME) +# 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 @@ -72,33 +85,41 @@ define findrev if [ -n "$$1" ]; then secs="$$(($$1 % 86400))"; \ yday="$$(date --utc --date="@$$1" "+%y.%j")"; \ - printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2"; \ + printf '%s.%05d~%s' "$$yday" "$$secs" "$$2"; \ else \ - echo "unknown"; \ + 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 '%s.%05d' "$$date" "$$secs"; \ + printf '0.%s.%05d' "$$date" "$$secs"; \ else \ - echo "unknown"; \ + 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 --remote --verbose --no-abbrev --contains 2>/dev/null | \ - sed -rne 's|^[^/]+/([^ ]+) [a-f0-9]{40} .+$$|\1|p' | head -n1)"; \ + 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 branch"; \ + variant="LuCI $${branch:-unknown} branch"; \ else \ variant="LuCI Master"; \ fi; \ @@ -106,24 +127,38 @@ PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \ echo "$$variant" \ ))) -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) - 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 - CATEGORY:=LuCI - SUBMENU:=$(if $(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.app)) + 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),$(PKG_VERSION),$(PKG_SRC_VERSION)) + 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),) @@ -132,32 +167,8 @@ ifneq ($(LUCI_DESCRIPTION),) endef endif -# Language selection for luci-base -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), - - config LUCI_LANG_$(lang) - tristate "$(shell echo '$(LUCI_LANG.$(lang))' | sed -e 's/^.* (\(.*\))$$/\1/') ($(lang))") - - endmenu - endef -endif - define Build/Prepare - for d in luasrc htdocs root src; do \ + 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/; \ @@ -181,73 +192,122 @@ else endef endif -HTDOCS = /www -LUA_LIBRARYDIR = /usr/lib/lua -LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci +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 -define SrcDiet +# 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 + endef +else + define SrcDiet + $$(call MESSAGE,$$(LUCI_NAME) does not support Lua source minification) + endef +endif -define JsMin +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 + endef +else + define JsMin + $$(call MESSAGE,$$(LUCI_NAME) does not support JavaScript source minification) + endef +endif -define CssTidy +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 + 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 -define Package/$(PKG_NAME)/install - if [ -d $(PKG_BUILD_DIR)/luasrc ]; then \ - $(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)/); \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/htdocs ]; then \ - $(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); \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/root ]; then \ - $(INSTALL_DIR) $(1)/; \ - cp -pR $(PKG_BUILD_DIR)/root/* $(1)/; \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/src ]; then \ - $(call Build/Install/Default) \ - $(CP) $(PKG_INSTALL_DIR)/* $(1)/; \ - else true; fi -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 -ifndef Package/$(PKG_NAME)/postinst -define Package/$(PKG_NAME)/postinst -[ -n "$${IPKG_INSTROOT}" ] || {$(foreach script,$(LUCI_DEFAULTS), - (. /etc/uci-defaults/$(script)) && rm -f /etc/uci-defaults/$(script)) - rm -f /tmp/luci-indexcache - rm -rf /tmp/luci-modulecache/ - killall -HUP rpcd 2>/dev/null - exit 0 -} -endef + 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 @@ -281,16 +341,9 @@ define LuciTranslation $$(1)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(1).lmo;) endef - define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/postinst - [ -n "$$$${IPKG_INSTROOT}" ] || { - (. /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1)) && rm -f /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1) - exit 0 - } - endef - LUCI_BUILD_PACKAGES += luci-i18n-$(LUCI_BASENAME)-$(1) endef -$(foreach lang,$(LUCI_LANGUAGES),$(eval $(call LuciTranslation,$(firstword $(LUCI_LC_ALIAS.$(lang)) $(lang)),$(lang)))) +$(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))))