ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/utils/lcdproc/Makefile b/external/subpack/utils/lcdproc/Makefile
new file mode 100644
index 0000000..b34a2d8
--- /dev/null
+++ b/external/subpack/utils/lcdproc/Makefile
@@ -0,0 +1,160 @@
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lcdproc
+PKG_VERSION:=0.5.9
+PKG_RELEASE:=5
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/lcdproc/lcdproc/releases/download/v$(PKG_VERSION)/
+PKG_HASH:=d48a915496c96ff775b377d2222de3150ae5172bfb84a6ec9f9ceab962f97b83
+
+PKG_MAINTAINER:=Harald Geyer <harald@ccbib.org>, \
+		Philip Prindeville <philipp@redfish-solutions.com>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:lcdproc:lcdproc
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/lcdproc/Default
+  SECTION:=utils
+  CATEGORY:=Utilities
+  URL:=http://lcdproc.org/
+endef
+
+define Package/lcdproc/Default-description
+LCDProc is a daemon and clients for displaying system information
+on various LCD displays
+endef
+
+
+define Package/lcdproc-clients
+  $(call Package/lcdproc/Default)
+  TITLE:=LCD Display clients
+endef
+
+define Package/lcdproc-clients/description
+$(call Package/lcdproc/Default-description)
+
+This package contains the clients distributed by the official lcdproc
+project:
+* lcdproc -- displays system information
+* lcdexec -- displays a menu structure to execute commands
+* lcdvc -- shows the content of the system console
+endef
+
+define Package/lcdproc-clients/conffiles
+/etc/lcdproc.conf
+/etc/lcdexec.conf
+/etc/lcdvc.conf
+endef
+
+
+define Package/lcdproc-server
+  $(call Package/lcdproc/Default)
+  TITLE:=LCD Display server
+  DEPENDS:=+libpthread
+endef
+
+define LCDPROC_CORE_DRIVERS_TEXT
+bayrad CFontzPacket CFontz CwLnx ea65 EyeboxOne glk icp_a106 imonlcd
+imon irtrans joy lb216 lcdm001 lcterm linux_input MD8800 ms6931
+mtc_s16209x MtxOrb NoritakeVFD Olimex_MOD_LCD1x9 pyramid rawserial
+serialPOS serialVFD sli SureElec text tyan vlsys_m428 yard2LCD
+endef
+
+LCDPROC_CORE_DRIVERS:=$(strip $(LCDPROC_CORE_DRIVERS_TEXT))
+
+define Package/lcdproc-server/description
+$(call Package/lcdproc/Default-description)
+
+This package contains the server and a core set of display drivers
+without external dependencies:
+$(LCDPROC_CORE_DRIVERS_TEXT)
+endef
+
+define Package/lcdproc-server/conffiles
+/etc/LCDd.conf
+endef
+
+
+define Package/lcdproc-drivers
+  $(call Package/lcdproc/Default)
+  TITLE:=LCD Display extra drivers
+  DEPENDS:=+lcdproc-server +libncurses +libusb-1.0 +libusb-compat +libftdi1 \
+	+GPIO_SUPPORT:libugpio +serdisplib
+endef
+
+define LCDPROC_OTHER_DRIVERS_TEXT
+curses futaba glcd hd44780 IOWarrior i2500vfd lis picolcd shuttleVFD ula200
+endef
+
+ifeq ($(CONFIG_PACKAGE_kmod-lp),y)
+LCDPROC_OTHER_DRIVERS_TEXT+=sdeclcd sed1330 sed1520 stv5730 t6963
+endif
+
+LCDPROC_OTHER_DRIVERS:=$(strip $(LCDPROC_OTHER_DRIVERS_TEXT))
+
+define Package/lcdproc-drivers/description
+$(call Package/lcdproc/Default-description)
+
+This package contains display drivers with external dependencies:
+$(LCDPROC_OTHER_DRIVERS_TEXT)
+endef
+
+CONFIGURE_ARGS += \
+	--disable-libX11 \
+	--disable-libhid \
+	--disable-libpng \
+	--disable-freetype \
+	--enable-drivers='all,!g15,!g15driver,!glcdlib,!irman,!lirc,!mdm166a,!mx5000,!svga,!xosd'
+
+MAKE_FLAGS += \
+        CFLAGS="$(TARGET_CFLAGS)" \
+        LDFLAGS="$(TARGET_LDFLAGS)"
+
+
+define Package/lcdproc-clients/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/clients/lcdproc/lcdproc $(1)/usr/bin/
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/clients/lcdexec/lcdexec $(1)/usr/bin/
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/clients/lcdvc/lcdvc $(1)/usr/bin/
+	$(INSTALL_CONF) $(PKG_BUILD_DIR)/clients/lcdproc/lcdproc.conf $(1)/etc/
+	$(INSTALL_CONF) $(PKG_BUILD_DIR)/clients/lcdexec/lcdexec.conf $(1)/etc/
+	$(INSTALL_CONF) $(PKG_BUILD_DIR)/clients/lcdvc/lcdvc.conf $(1)/etc/
+	$(INSTALL_BIN) ./files/lcd* $(1)/etc/init.d/
+endef
+
+define Package/lcdproc-server/install
+	$(INSTALL_DIR) $(1)/usr/sbin
+	$(INSTALL_DIR) $(1)/usr/lib/lcdproc
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/server/LCDd $(1)/usr/sbin/
+	$(CP) $(foreach driver,$(LCDPROC_CORE_DRIVERS),$(PKG_BUILD_DIR)/server/drivers/$(driver).so) $(1)/usr/lib/lcdproc/
+	$(CP) -p $(PKG_BUILD_DIR)/LCDd.conf $(PKG_BUILD_DIR)/LCDd.conf.orig
+	sed -i -r \
+		-e 's!^(DriverPath=).*$$$$!\1/usr/lib/lcdproc/!' \
+		-e 's!^(Driver=)curses$$$$!\1sdeclcd!' \
+		$(PKG_BUILD_DIR)/LCDd.conf
+	$(INSTALL_CONF) $(PKG_BUILD_DIR)/LCDd.conf $(1)/etc/
+	$(INSTALL_BIN) ./files/LCDd $(1)/etc/init.d/
+endef
+
+define Package/lcdproc-drivers/install
+	$(INSTALL_DIR) $(1)/usr/lib/lcdproc
+	$(CP) $(foreach driver,$(LCDPROC_OTHER_DRIVERS),$(PKG_BUILD_DIR)/server/drivers/$(driver).so) $(1)/usr/lib/lcdproc/
+endef
+
+
+$(eval $(call BuildPackage,lcdproc-clients))
+$(eval $(call BuildPackage,lcdproc-server))
+$(eval $(call BuildPackage,lcdproc-drivers))
+
diff --git a/external/subpack/utils/lcdproc/files/LCDd b/external/subpack/utils/lcdproc/files/LCDd
new file mode 100755
index 0000000..595407f
--- /dev/null
+++ b/external/subpack/utils/lcdproc/files/LCDd
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=22
+USE_PROCD=1
+PROG=/usr/sbin/LCDd
+
+config_file=/etc/LCDd.conf
+
+start_service() {
+	procd_open_instance
+	procd_set_param command $PROG -f -c $config_file
+	procd_close_instance
+}
+
diff --git a/external/subpack/utils/lcdproc/files/lcdexec b/external/subpack/utils/lcdproc/files/lcdexec
new file mode 100755
index 0000000..e6a76f6
--- /dev/null
+++ b/external/subpack/utils/lcdproc/files/lcdexec
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=50
+USE_PROCD=1
+PROG=/usr/bin/lcdexec
+
+config_file=/etc/lcdexec.conf
+
+start_service() {
+	procd_open_instance
+	procd_set_param command $PROG -f -c $config_file
+	procd_close_instance
+}
+
diff --git a/external/subpack/utils/lcdproc/files/lcdproc b/external/subpack/utils/lcdproc/files/lcdproc
new file mode 100755
index 0000000..15eb997
--- /dev/null
+++ b/external/subpack/utils/lcdproc/files/lcdproc
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=50
+USE_PROCD=1
+PROG=/usr/bin/lcdproc
+
+config_file=/etc/lcdproc.conf
+
+start_service() {
+	procd_open_instance
+	procd_set_param command $PROG -f -c $config_file
+	procd_close_instance
+}
+
diff --git a/external/subpack/utils/lcdproc/files/lcdvc b/external/subpack/utils/lcdproc/files/lcdvc
new file mode 100755
index 0000000..0362815
--- /dev/null
+++ b/external/subpack/utils/lcdproc/files/lcdvc
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=50
+USE_PROCD=1
+PROG=/usr/bin/lcdvc
+
+config_file=/etc/lcdvc.conf
+
+start_service() {
+	procd_open_instance
+	procd_set_param command $PROG -f -c $config_file
+	procd_close_instance
+}
+
diff --git a/external/subpack/utils/lcdproc/patches/100-remove-build-timestamp.patch b/external/subpack/utils/lcdproc/patches/100-remove-build-timestamp.patch
new file mode 100644
index 0000000..1c6c84d
--- /dev/null
+++ b/external/subpack/utils/lcdproc/patches/100-remove-build-timestamp.patch
@@ -0,0 +1,31 @@
+--- a/clients/lcdproc/main.c
++++ b/clients/lcdproc/main.c
+@@ -58,7 +58,6 @@ int Quit = 0;
+ int sock = -1;
+ 
+ char *version = VERSION;
+-char *build_date = __DATE__;
+ 
+ int lcd_wid = 0;
+ int lcd_hgt = 0;
+--- a/server/main.c
++++ b/server/main.c
+@@ -104,7 +104,6 @@
+ char *version = VERSION;
+ char *protocol_version = PROTOCOL_VERSION;
+ char *api_version = API_VERSION;
+-char *build_date = __DATE__;
+ 
+ 
+ /**** Configuration variables ****/
+@@ -197,8 +196,8 @@ main(int argc, char **argv)
+ 
+ 	/* Report that server is starting (report will be delayed) */
+ 	report(RPT_NOTICE, "LCDd version %s starting", version);
+-	report(RPT_INFO, "Built on %s, protocol version %s, API version %s",
+-		build_date, protocol_version, api_version);
++	report(RPT_INFO, "Protocol version %s, API version %s",
++		protocol_version, api_version);
+ 
+ 	clear_settings();
+ 
diff --git a/external/subpack/utils/lcdproc/patches/110-in-outb.patch b/external/subpack/utils/lcdproc/patches/110-in-outb.patch
new file mode 100644
index 0000000..cd87e18
--- /dev/null
+++ b/external/subpack/utils/lcdproc/patches/110-in-outb.patch
@@ -0,0 +1,11 @@
+--- a/server/drivers/port.h
++++ b/server/drivers/port.h
+@@ -94,7 +94,7 @@ static inline int port_deny_multiple(uns
+ /*  ---------------------------- Linux ------------------------------------ */
+ /*  Use ioperm, inb and outb in <sys/io.h> (Linux) */
+ /*  And iopl for higher addresses of PCI LPT cards */
+-#if defined HAVE_IOPERM
++#if defined(__GLIBC__) || (defined(__x86__) || defined(__x86_64__))
+ 
+ /* Glibc2 and Glibc1 */
+ # ifdef HAVE_SYS_IO_H
diff --git a/external/subpack/utils/lcdproc/patches/120-gcc10.patch b/external/subpack/utils/lcdproc/patches/120-gcc10.patch
new file mode 100644
index 0000000..d33e8e4
--- /dev/null
+++ b/external/subpack/utils/lcdproc/patches/120-gcc10.patch
@@ -0,0 +1,21 @@
+--- a/clients/lcdproc/iface.c
++++ b/clients/lcdproc/iface.c
+@@ -32,6 +32,7 @@
+ #define UNSET_INT -1
+ #define UNSET_STR "\01"
+ 
++IfaceInfo iface[MAX_INTERFACES];
+ 
+ static int iface_count = 0;	/* number of interfaces */
+ static char unit_label[10] = "B";	/* default unit label is Bytes */
+--- a/clients/lcdproc/iface.h
++++ b/clients/lcdproc/iface.h
+@@ -18,7 +18,7 @@
+ /** max number of interfaces in multi-interface mode */
+ #define MAX_INTERFACES 3
+ 
+-IfaceInfo iface[MAX_INTERFACES];	/* interface info */
++extern IfaceInfo iface[MAX_INTERFACES];	/* interface info */
+ 
+ /** Update screen content */
+ int iface_screen(int rep, int display, int *flags_ptr);