--- /dev/null
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=asu
+PKG_VERSION:=0.2.3
+PKG_RELEASE=1
+
+PKG_LICENSE:=GPL-3.0
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/a/asu/
+PKG_HASH:=e60027cd531cc5b9b20d3321acc06fdf0cdd894004919800575b8235343ba8ef
+
+PKG_BUILD_DEPENDS:=python3
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/python/python3-package.mk
+
+IMAGEBUILDER_DEPENDS:= \
+ @x86_64 +bash +bzip2 +coreutils +coreutils-stat +diffutils +file \
+ +gawk +gcc +getopt +git +git-http +libncurses +make +patch +perl \
+ +perlbase-attributes +perlbase-findbin +perlbase-getopt \
+ +perlbase-thread +python-light +tar +unzip +wget +xz +xzdiff \
+ +xzgrep +xzless +xz-utils +zlib-dev
+
+define Package/asu
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=attended sysupgrade image server
+ MAINTAINER:=Paul Spooren <paul@spooren.de>
+ URL:=http://github.com/aparcar/gsoc17-attended-sysupgrade/
+ DEPENDS:=$(IMAGEBUILDER_DEPENDS) +pgsql-server +psqlodbcw \
+ +python3-ctypes +python3-distutils +python3-flask \
+ +python3-openssl +python3-pyodbc +python3-yaml \
+ +libustream-mbedtls +ca-certificates +gnupg
+ USERID:=asu:asu
+ VARIANT:=python3
+endef
+
+define Package/asu/description
+ Build server to deliver OpenWrt/LEDE sysupgrade images
+endef
+
+define Py3Package/asu/install
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_BIN) ./files/asu.defaults $(1)/etc/uci-defaults/99-asu
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/asu.init $(1)/etc/init.d/asu
+ $(INSTALL_DIR) $(1)/etc/asu
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/asu/utils/config.yml.default $(1)/etc/asu/config.yml
+endef
+
+$(eval $(call Py3Package,asu))
+$(eval $(call BuildPackage,asu))
--- /dev/null
+#!/bin/sh
+
+asu_tables="$(ls -1 /usr/lib/*/site-packages/asu/utils/tables.sql | head -n 1)"
+uci -q batch <<EOF
+ del postgresql.asu
+ set postgresql.asu=postgres-db
+ set postgresql.asu.name=asu
+ set postgresql.asu.user=asu
+ set postgresql.asu.pass=password
+ set postgresql.asu.script='$asu_tables'
+ commit postgresql
+EOF
+
+sed -i 's/database_user:.*/database_user: asu/' /etc/asu/config.yml
+sed -i 's/database_pass:.*/database_pass: asu/' /etc/asu/config.yml
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+STOP=01
+
+USE_PROCD=1
+PROG=/usr/bin/flask
+
+start_service() {
+ . /lib/functions/postgresql.sh
+
+ local pgdata=$(uci get postgresql.config.PGDATA)
+ local i=0
+
+ while ! pg_server_ready "$pgdata"; do
+ sleep 1
+ [ $((i++)) -gt 30 ] && return 1
+ done
+
+ i=0
+ while ! pg_test_db asu asu; do
+ sleep 1
+ [ $((i++)) -gt 30 ] && return 1
+ done
+
+ FLASK_APP=asu $PROG loaddb
+
+ procd_open_instance asu_main
+# procd_set_param user asu
+# procd_set_param group asu
+ procd_set_param env FLASK_APP=asu
+ procd_set_param command $PROG run
+ procd_close_instance
+
+ procd_open_instance main_worker
+# procd_set_param user asu
+# procd_set_param group asu
+ procd_set_param env FLASK_APP=asu
+ procd_set_param command $PROG run_worker
+ procd_close_instance
+}