From 3840a8798d031a1655ee8436ed685511c0ac29ca Mon Sep 17 00:00:00 2001 From: Wouter R Date: Thu, 2 May 2013 16:29:29 +0200 Subject: [PATCH] Preliminary OpenWrt package support. --- Config.in | 12 ++++++ Makefile | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ src/Makefile | 5 +++ src/README | 14 +++---- src/TODO | 6 +++ src/reconf.lua | 1 + 6 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 Config.in create mode 100644 Makefile create mode 100644 src/Makefile create mode 100644 src/TODO diff --git a/Config.in b/Config.in new file mode 100644 index 0000000..602f4b1 --- /dev/null +++ b/Config.in @@ -0,0 +1,12 @@ +# Doodle3D Wifibox configuration +#menu "Configuration" +# depends on PACKAGE_wifibox + + config WIFIBOX_DEVEL_PACKAGE + depends on PACKAGE_wifibox + bool "Enable development aids" + default n + help + Enable development features (currently a script to copy and zip all relevant code for updating the git repository). + +#endmenu diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..336fbaf --- /dev/null +++ b/Makefile @@ -0,0 +1,104 @@ +############################################## +# OpenWrt Makefile for Doodle3D WifiBox firmware +############################################## +include $(TOPDIR)/rules.mk + +# Name and release number of this package +PKG_NAME:=wifibox +PKG_VERSION:=0.1.0 +PKG_RELEASE:=1 + +# This specifies the directory where we're going to build the program. +# The root build directory, $(BUILD_DIR), is by default the build_mipsel +# directory in your OpenWrt SDK directory +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/wifibox + SECTION:=mods + CATEGORY:=Miscellaneous + MENU:=1 +# DEFAULT:=y + TITLE:=Doodle3D WifiBox firmware + URL:=http://www.doodle3d.com/wifibox + DEPENDS:=+lua +libuci-lua +libiwinfo-lua +uhttpd +endef + +define Package/wifibox/description + Doodle3D WifiBox firmware + Web interface to draw doodles and print them with ease. + Automatically connects to known network or provide one to connect with. + Intended to be used on TP-Link WR703n or MR3020. +endef + +define Package/wifibox/config + source "$(SOURCE)/Config.in" +endef + +# Specify what needs to be done to prepare for building the package. +# In our case, we need to copy the source files to the build directory. +# This is NOT the default. The default uses the PKG_SOURCE_URL and the +# PKG_SOURCE which is not defined here to download the source from the web. +# In order to just build a simple program that we have just written, it is +# much easier to do it this way. +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) -r ./src/* $(PKG_BUILD_DIR)/ +endef + +define Build/Configure +# no configuration necessary +endef + +define Build/Compile directives +# no compilation necessary (although possible with luac?) +endef + +# The $(1) variable represents the root directory on the router running +# OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install +# directory if it does not already exist. Likewise $(INSTALL_BIN) contains the +# command to copy the binary file from its current location (in our case the build +# directory) to the install directory. +define Package/wifibox/install + +### create required directories + +# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi + $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/admin +# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext +# $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext/www + $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/ext/www/cgi-bin + $(INSTALL_DIR) $(1)/etc/rc.d + $(INSTALL_DIR) $(1)/www/cgi-bin + + +### create all files in /usr/share/lua/autowifi + + $(CP) $(PKG_BUILD_DIR)/*.lua $(1)/usr/share/lua/autowifi/ + $(CP) $(PKG_BUILD_DIR)/admin/* $(1)/usr/share/lua/autowifi/admin/ + + $(CP) $(PKG_BUILD_DIR)/ext/autowifi.js $(1)/usr/share/lua/autowifi/ext + $(CP) $(PKG_BUILD_DIR)/ext/autowifi_init $(1)/usr/share/lua/autowifi/ext + $(CP) $(PKG_BUILD_DIR)/ext/wfcf $(1)/usr/share/lua/autowifi/ext + + $(CP) $(PKG_BUILD_DIR)/ext/www/.autowifi-inplace $(1)/usr/share/lua/autowifi/ext/www + $(CP) $(PKG_BUILD_DIR)/ext/www/index.html $(1)/usr/share/lua/autowifi/ext/www + $(LN) -s /usr/share/lua/autowifi/admin $(1)/usr/share/lua/autowifi/ext/www + $(LN) -s /usr/share/lua/autowifi/ext/wfcf $(1)/usr/share/lua/autowifi/ext/www/cgi-bin + +ifeq ($(CONFIG_WIFIBOX_DEVEL_PACKAGE),y) + $(INSTALL_DIR) $(1)/usr/share/lua/autowifi/misc + $(CP) $(PKG_BUILD_DIR)/misc/collect-code.sh $(1)/usr/share/lua/autowifi/misc/ +endif + + +### create links elsewhere in the system + + $(LN) -s /usr/share/lua/autowifi/ext/wfcf $(1)/www/cgi-bin + $(LN) -s /usr/share/lua/autowifi/admin $(1)/www + $(LN) -s /usr/share/lua/autowifi/ext/autowifi_init $(1)/etc/rc.d/S18autowifi_init +endef + + +$(eval $(call BuildPackage,wifibox)) diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..fbf9f60 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,5 @@ +all: + @echo "No compilation here...(dummy Makefile to keep buildroot happy)" + +clean: + @echo "No cleaning here... (dummy Makefile to keep buildroot happy)" diff --git a/src/README b/src/README index 11a8b94..4ecb5dc 100644 --- a/src/README +++ b/src/README @@ -1,12 +1,13 @@ Installation: -- place the src directory in /usr/share/lua and name it 'autowifi' -- create a symlink to ext/wfcf in /www/cgi-bin (make sure the file is executable) -- create a symlink to admin in /www -- create a symlink to ext/autowifi_init in /etc/rc.d and name it S18autowifi_init -- (not necessary) enable init script by calling it with 'enable' argument? - make sure radio0 in /etc/config/wireless is not disabled - the wlan net must also be added to firewall in the lan zone +== these steps are performed by the package installer +- (ignore) place the src directory in /usr/share/lua and name it 'autowifi' +- (ignore) create a symlink to ext/wfcf in /www/cgi-bin (make sure the file is executable) +- (ignore) create a symlink to admin in /www +- (ignore) create a symlink to ext/autowifi_init in /etc/rc.d and name it S18autowifi_init + == these two items are now handled by the script - create a wlan network in /etc/config/network as follows <