From ef4ee640e90a07ee4746f1f7b10a76d8914da983 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Wed, 5 Aug 2020 23:08:09 +0800 Subject: [PATCH] filebrowser: call native compiler to pack binary --- package/ctcgfw/filebrowser/Makefile | 125 ++++++++++-------- .../files/filebrowser.config} | 0 .../ctcgfw/filebrowser/files/filebrowser.init | 65 +++++++++ .../root/etc/init.d/filebrowser | 50 ------- 4 files changed, 137 insertions(+), 103 deletions(-) rename package/ctcgfw/{luci-app-filebrowser/root/etc/config/filebrowser => filebrowser/files/filebrowser.config} (100%) create mode 100755 package/ctcgfw/filebrowser/files/filebrowser.init delete mode 100755 package/ctcgfw/luci-app-filebrowser/root/etc/init.d/filebrowser diff --git a/package/ctcgfw/filebrowser/Makefile b/package/ctcgfw/filebrowser/Makefile index 0fe98e0c7a..f537b14afc 100644 --- a/package/ctcgfw/filebrowser/Makefile +++ b/package/ctcgfw/filebrowser/Makefile @@ -1,78 +1,97 @@ # -# Copyright (C) 2014-2018 OpenWrt-dist -# Copyright (C) 2019 [CTCGFW] Project OpenWRT -# +# Copyright (C) 2020 Project OpenWrt # This is free software, licensed under the GNU General Public License v3. -# See /LICENSE for more information. +# See /LICENSE.txt for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=filebrowser -PKG_VERSION:=snapshot -PKG_RELEASE:=6ce44f7 +PKG_VERSION:=2.6.2 +PKG_RELEASE:=1 -PKG_LICENSE:=GPLv3 -PKG_MAINTAINER:=[CTCGFW] Project OpenWRT +PKG_SOURCE_PROTO:=git +PKG_SOURCE_VERSION:=be8683f +PKG_SOURCE_URL:=https://github.com/filebrowser/filebrowser +PKG_MIRROR_HASH:=dbf4ff9db137d1f596ad687edec097ae1bbf75ef04447256044e960e044e2ee5 -ifeq ($(ARCH),x86_64) - PKG_ARCH_filebrowser:=linux_amd64 -endif -ifeq ($(ARCH),i386) - PKG_ARCH_filebrowser:=linux_386 -endif -ifeq ($(ARCH),mipsel) - PKG_ARCH_filebrowser:=linux_mipsle -endif -ifeq ($(ARCH),mips) - PKG_ARCH_filebrowser:=linux_mips -endif -ifeq ($(ARCH),arm) -ifeq ($(BOARD),kirkwood) - PKG_ARCH_filebrowser:=linux_arm5 -else ifeq ($(BOARD),bcm53xx) - PKG_ARCH_filebrowser:=linux_arm5 -else - PKG_ARCH_filebrowser:=linux_arm7 -endif -endif -ifeq ($(ARCH),aarch64) - PKG_ARCH_filebrowser:=linux_arm64 -endif +PKG_LICENSE:=Apache-2.0 +PKG_LICENSE_FILES:=LICENSE.txt +PKG_MAINTAINER:=CN_SZTL -PKG_SOURCE:=filebrowser_$(PKG_ARCH_filebrowser).tar.gz -PKG_SOURCE_URL:=https://package.project-openwrt.eu.org/utils/filebrowser/$(PKG_RELEASE)/ -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE) -PKG_HASH:=skip +PKG_BUILD_DEPENDS:=golang/host node/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +PKG_CONFIG_DEPENDS:= \ + CONFIG_FILEBROWSER_COMPRESS_GOPROXY \ + CONFIG_FILEBROWSER_COMPRESS_UPX + +GO_PKG:=github.com/filebrowser/filebrowser +GO_PKG_LDFLAGS:=-s -w +GO_PKG_LDFLAGS_X:= \ + github.com/filebrowser/filebrowser/v2/version.CommitSHA=$(PKG_SOURCE_VERSION) \ + github.com/filebrowser/filebrowser/v2/version.Version=$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk -define Package/$(PKG_NAME) - SECTION:=utils - CATEGORY:=Utilities - TITLE:=OpenWrt Support for FileBrowser. - DEPENDS:=@(aarch64||arm||i386||mips||mipsel||x86_64) - URL:=https://github.com/filebrowser/filebrowser +define Package/filebrowser + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Web File Browser which can be used as a middleware or standalone app. + URL:=https://github.com/filebrowser/filebrowser + DEPENDS:=$(GO_ARCH_DEPENDS) endef -define Package/$(PKG_NAME)/description -OpenWrt Support for FileBrowser. +define Package/filebrowser/description + filebrowser provides a file managing interface within a specified directory + and it can be used to upload, delete, preview, rename and edit your files. + It allows the creation of multiple users and each user can have its own directory. + It can be used as a standalone app or as a middleware. endef -define Build/Prepare - tar -xzf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) +define Package/filebrowser/config +config FILEBROWSER_COMPRESS_GOPROXY + bool "Compiling with GOPROXY proxy" + default n + +config FILEBROWSER_COMPRESS_UPX + bool "Compress executable files with UPX" + default y endef -define Build/Configure -endef +ifeq ($(CONFIG_FILEBROWSER_COMPRESS_GOPROXY),y) +export GO111MODULE=on +export GOPROXY=https://goproxy.cn +endif define Build/Compile - chmod 0755 $(PKG_BUILD_DIR)/filebrowser +( \ + cd $(PKG_BUILD_DIR) ; \ + rm -rf frontend/dist ; \ + rm -f http/rice-box.go ; \ + cd $(PKG_BUILD_DIR)/frontend ; \ + npm ci; \ + npm run lint ; \ + npm run build ; \ + GOOS=$$$$(go env GOOS) GOARCH=$$$$(go env GOARCH) GO111MODULE=off go get -v github.com/GeertJohan/go.rice/rice/... ; \ + cd $(PKG_BUILD_DIR)/http ; \ + "$$$$(go env GOPATH)/bin/rice" embed-go ; \ + $(call GoPackage/Build/Compile) ; \ +) +ifeq ($(CONFIG_FILEBROWSER_COMPRESS_UPX),y) + $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/filebrowser +endif endef -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/filebrowser $(1)/usr/bin/filebrowser +define Package/filebrowser/install + $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) + $(INSTALL_DIR) $(1)/etc/config/ $(1)/etc/init.d/ $(1)/usr/bin/ + $(INSTALL_CONF) $(curdir)/files/filebrowser.config $(1)/etc/config/filebrowser + $(INSTALL_BIN) $(curdir)/files/filebrowser.init $(1)/etc/init.d/filebrowser + $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/filebrowser $(1)/usr/bin/filebrowser endef -$(eval $(call BuildPackage,$(PKG_NAME))) +$(eval $(call GoBinPackage,filebrowser)) +$(eval $(call BuildPackage,filebrowser)) \ No newline at end of file diff --git a/package/ctcgfw/luci-app-filebrowser/root/etc/config/filebrowser b/package/ctcgfw/filebrowser/files/filebrowser.config similarity index 100% rename from package/ctcgfw/luci-app-filebrowser/root/etc/config/filebrowser rename to package/ctcgfw/filebrowser/files/filebrowser.config diff --git a/package/ctcgfw/filebrowser/files/filebrowser.init b/package/ctcgfw/filebrowser/files/filebrowser.init new file mode 100755 index 0000000000..f083078143 --- /dev/null +++ b/package/ctcgfw/filebrowser/files/filebrowser.init @@ -0,0 +1,65 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2019 [CTCGFW] Project OpenWRT + +. /lib/functions.sh +. /lib/functions/procd.sh + +USE_PROCD=1 + +START=90 +STOP=10 + +init_conf() { + config_load "filebrowser" + config_get "addr_type" "config" "addr_type" "lan" + config_get "db_dir" "config" "db_dir" "/etc" + [ "${db_dir}" == "/" ] || db_dir="${db_dir%*/}" + config_get "db_name" "config" "db_name" "filebrowser.db" + db_name="$(uci get filebrowser.config.db_name| sed 's#/##g')" + config_get "enabled" "config" "enabled" "0" + config_get "port" "config" "port" "8989" + config_get "root_dir" "config" "root_dir" "/" + + config_load "network" + config_get "lan_addr" "lan" "ipaddr" "192.168.1.1" +} + + +start_service() { + init_conf + [ "${enabled}" == "1" ] || exit 0 + procd_open_instance filebrowser + mkdir -p "${root_dir}" + mkdir -p "${db_dir}" + + if [ "${addr_type}" == "local" ];then + addr="127.0.0.1" + elif [ "${addr_type}" == "lan" ];then + addr="$(uci get network.lan.ipaddr)" + elif [ "${addr_type}" == "wan" ];then + addr="0.0.0.0" + fi + + procd_set_param command filebrowser + procd_append_param command -a "${addr}" + procd_append_param command -d "${db_dir}/${db_name}" + procd_append_param command -p "${port}" + procd_append_param command -r "${root_dir}" + procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} + procd_close_instance +} + +stop_service(){ + init_conf + echo "${db_dir}/${db_name}" > "/lib/upgrade/keep.d/filebrowser" +} + +reload_service() +{ + stop + start +} + +service_triggers() { + procd_add_reload_trigger "filebrowser" +} \ No newline at end of file diff --git a/package/ctcgfw/luci-app-filebrowser/root/etc/init.d/filebrowser b/package/ctcgfw/luci-app-filebrowser/root/etc/init.d/filebrowser deleted file mode 100755 index e76b3b4418..0000000000 --- a/package/ctcgfw/luci-app-filebrowser/root/etc/init.d/filebrowser +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2019 [CTCGFW] Project OpenWRT - -. /lib/functions.sh -. /lib/functions/procd.sh - -USE_PROCD=1 - -START=90 -STOP=10 - -addr_type="$(uci get filebrowser.config.addr_type)" -db_dir="$(uci get filebrowser.config.db_dir)" -[ "${db_dir}" == "/" ] || db_dir="${db_dir%*/}" -db_name="$(uci get filebrowser.config.db_name| sed 's#/##g')" -enabled="$(uci get filebrowser.config.enabled)" -port="$(uci get filebrowser.config.port)" -root_dir="$(uci get filebrowser.config.root_dir)" - -if [ "${addr_type}" == "local" ];then - addr="127.0.0.1" -elif [ "${addr_type}" == "lan" ];then - addr="$(uci get network.lan.ipaddr)" -elif [ "${addr_type}" == "wan" ];then - addr="0.0.0.0" -fi - -start_service() { - [ "${enabled}" == "1" ] || exit 0 - procd_open_instance filebrowser - mkdir -p "${root_dir}" - mkdir -p "${db_dir}" - procd_set_param command filebrowser - procd_append_param command -a "${addr}" - procd_append_param command -d "${db_dir}/${db_name}" - procd_append_param command -p "${port}" - procd_append_param command -r "${root_dir}" - procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} - procd_close_instance -} - -reload_service() -{ - stop - start -} - -service_triggers() { - procd_add_reload_trigger "filebrowser" -}