From e8f1bf514c1819cb9942d77bb624db4f6703fa8b Mon Sep 17 00:00:00 2001
From: Rob Austein <sra@hactrn.net>
Date: Sun, 5 Jul 2015 19:43:38 -0400
Subject: Add Debian packaging and startup scripts to load Novena FPGA
 automatically.

---
 core/debian/control                      |  2 +-
 core/debian/cryptech-novena-rtl.default  |  3 ++
 core/debian/cryptech-novena-rtl.init     | 36 ++++++++++++++++++++++++
 core/debian/cryptech-novena-rtl.postinst | 47 ++++++++++++++++++++++++++++++++
 4 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 core/debian/cryptech-novena-rtl.default
 create mode 100644 core/debian/cryptech-novena-rtl.init
 create mode 100644 core/debian/cryptech-novena-rtl.postinst

(limited to 'core/debian')

diff --git a/core/debian/control b/core/debian/control
index 84a4e91..3a3de4c 100644
--- a/core/debian/control
+++ b/core/debian/control
@@ -8,7 +8,7 @@ Homepage: http://trac.cryptech.is/wiki
 
 Package: cryptech-novena-rtl
 Architecture: all
-Depends: libc6 (>= 2.13), ${misc:Depends}
+Depends: libc6 (>= 2.13), ${misc:Depends} cryptech-novena-sw (= ${binary:Version})
 Description: Cryptech open-source crypto hardware
  "cryptech-novena-rtl" contains FGPA configuration (RTL bitstream) for the Cryptech project on
  the Novena PVT-1 development board.
diff --git a/core/debian/cryptech-novena-rtl.default b/core/debian/cryptech-novena-rtl.default
new file mode 100644
index 0000000..1261cef
--- /dev/null
+++ b/core/debian/cryptech-novena-rtl.default
@@ -0,0 +1,3 @@
+# Configuration parameters for cryptech-novena-rtl package.
+
+fpga_bitstream=/usr/share/cryptech/novena_eim.bit
diff --git a/core/debian/cryptech-novena-rtl.init b/core/debian/cryptech-novena-rtl.init
new file mode 100644
index 0000000..68f5c8c
--- /dev/null
+++ b/core/debian/cryptech-novena-rtl.init
@@ -0,0 +1,36 @@
+#!/bin/sh -
+### BEGIN INIT INFO
+# Provides:          cryptech-novena-rtl
+# Required-Start:    $remote_fs
+# Required-Stop:
+# Should-Start:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Reload Novena FPGA on boot.
+# Description:       Reload Novena FPGA on boot.
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+. /lib/lsb/init-functions
+. /etc/default/cryptech-novena-rtl
+
+do_start () {
+    log_daemon_msg "Loading Novena FPGA from ${fpga_bitstream}"
+    load_novena_fpga "${fpga_bitstream}"
+}
+
+case "$1" in
+    start|restart|reload|force-reload|"")
+	do_start
+	;;
+    stop)
+	# No-op
+	;;
+    *)
+	echo "Usage: bootmisc.sh [start|stop]" >&2
+	exit 3
+	;;
+esac
+
+:
diff --git a/core/debian/cryptech-novena-rtl.postinst b/core/debian/cryptech-novena-rtl.postinst
new file mode 100644
index 0000000..d36653a
--- /dev/null
+++ b/core/debian/cryptech-novena-rtl.postinst
@@ -0,0 +1,47 @@
+#!/bin/sh -
+# postinst script for cryptech-novena-rtl
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# Perhaps this should run our /etc/init.d script in order to localize
+# the voodoo?
+
+load_fpga() {
+    load_novena_fpga /usr/share/cryptech/novena_eim.bit
+}
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+	load_fpga
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
-- 
cgit v1.2.3