__pycache__
*.egg-info
/upload
+/*.img
+*.so
+*.deb
+*.zip
+/rpi-share
include package.json README.md scripts/install.sh
include src/avr/bbctrl-avr-firmware.hex
include scripts/avr109-flash.py
+recursive-include src/py/camotics *
+global-exclude .gitignore
TEMPLS := $(wildcard src/jade/templates/*.jade)
AVR_FIRMWARE := src/avr/bbctrl-avr-firmware.hex
+GPLAN_MOD := rpi-share/camotics/gplan.so
+GPLAN_TARGET := src/py/camotics/gplan.so
+GPLAN_IMG := gplan-dev.img
RSYNC_EXCLUDE := \*.pyc __pycache__ \*.egg-info \\\#* \*~ .\\\#\*
RSYNC_EXCLUDE := $(patsubst %,--exclude %,$(RSYNC_EXCLUDE))
pkg: all $(AVR_FIRMWARE)
./setup.py sdist
+gplan: $(GPLAN_TARGET)
+
+$(GPLAN_TARGET): $(GPLAN_MOD)
+ cp $< $@
+
+$(GPLAN_MOD): $(GPLAN_IMG)
+ ./scripts/gplan-init-build.sh
+ git -C rpi-share/cbang pull
+ git -C rpi-share/camotics pull
+ cp ./scripts/gplan-build.sh rpi-share/
+ sudo ./scripts/rpi-chroot.sh $(GPLAN_IMG) /mnt/host/gplan-build.sh
+
+$(GPLAN_IMG):
+ ./scripts/gplan-init-build.sh
+
.PHONY: $(AVR_FIRMWARE)
$(AVR_FIRMWARE):
$(MAKE) -C src/avr $(shell basename $@)
rm -rf node_modules
.PHONY: all install html css static templates clean tidy copy mount umount pkg
+.PHONY: gplan
{
"name": "bbctrl",
"version": "0.2.2",
- "homepage": "https://github.com/buildbotics/rpi-firmware",
+ "homepage": "https://github.com/buildbotics/bbctrl-firmware",
"license": "GPL 3+",
"dependencies": {
--- /dev/null
+#!/bin/bash -ex
+
+cd /mnt/host
+scons -C cbang disable_local="re2 libevent"
+export CBANG_HOME="/mnt/host/cbang"
+scons -C camotics gplan.so with_gui=0 with_tpl=0
--- /dev/null
+#!/bin/bash -ex
+
+IMG_DATE=2017-11-29
+IMG_BASE=${IMG_DATE}-raspbian-stretch-lite
+BASE_URL=https://downloads.raspberrypi.org/raspbian_lite/images
+IMG_URL=$BASE_URL/raspbian_lite-2017-12-01/$IMG_BASE.zip
+GPLAN_IMG=gplan-dev.img
+
+# Create dev image
+if [ ! -e $GPLAN_IMG ]; then
+
+ # Get base image
+ if [ ! -e $IMG_BASE.img ]; then
+ if [ ! -e $IMG_BASE.zip ]; then
+ wget $IMG_URL
+ fi
+
+ unzip $IMG_BASE.zip
+ fi
+
+ # Copy base image
+ cp $IMG_BASE.img $GPLAN_IMG.tmp
+
+ # Init image
+ mkdir -p rpi-share
+ cp ./scripts/gplan-init-dev-img.sh rpi-share
+ sudo ./scripts/rpi-chroot.sh $GPLAN_IMG.tmp /mnt/host/gplan-init-dev-img.sh
+
+ # Move image
+ mv $GPLAN_IMG.tmp $GPLAN_IMG
+fi
+
+# Get repos
+mkdir -p rpi-share || true
+
+if [ ! -e rpi-share/cbang ]; then
+ if [ "$CBANG_HOME" != "" ]; then
+ git clone $CBANG_HOME rpi-share/cbang
+ else
+ git clone https://github.com/CauldronDevelopmentLLC/cbang \
+ rpi-share/cbang
+ fi
+fi
+
+if [ ! -e rpi-share/camotics ]; then
+ if [ "$CAMOTICS_HOME" != "" ]; then
+ git clone $CAMOTICS_HOME rpi-share/camotics
+ else
+ git clone https://github.com/CauldronDevelopmentLLC/camotics \
+ rpi-share/camotics
+ fi
+fi
--- /dev/null
+#!/bin/bash -e
+
+export LC_ALL=C
+cd /mnt/host
+
+# Update the system
+apt-get update
+apt-get dist-upgrade -y
+
+# Install packages
+apt-get install -y scons build-essential libssl-dev python3-dev
--- /dev/null
+#!/bin/bash -ex
+
+ROOT="$PWD/rpi-root"
+LOOP=5
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $0 <image> <exec>"
+ exit 1
+fi
+
+IMAGE="$1"
+LOOP_DEV=/dev/loop${LOOP}
+EXEC=
+
+if [ $# -gt 1 ]; then
+ shift
+ EXEC="$@"
+fi
+
+# install dependecies
+if [ ! -e /usr/bin/qemu-arm-static ]; then
+ apt-get update
+ apt-get install -y qemu qemu-user-static binfmt-support
+fi
+
+# Clean up on EXIT
+function cleanup {
+ umount "$ROOT"/{dev/pts,dev,sys,proc,boot,mnt/host,} 2>/dev/null || true
+ losetup -d $LOOP_DEV 2>/dev/null || true
+ rmdir "$ROOT" 2>/dev/null || true
+}
+trap cleanup EXIT
+
+# set up image as loop device
+losetup $LOOP_DEV "$IMAGE"
+if [ ! -e ${LOOP_DEV}p1 ]; then
+ partprobe $LOOP_DEV
+fi
+
+# check and fix filesystems
+fsck -f ${LOOP_DEV}p1
+fsck -f ${LOOP_DEV}p2
+
+# make dir
+mkdir -p "$ROOT"
+
+# mount partition
+mount -o rw ${LOOP_DEV}p2 -t ext4 "$ROOT"
+mount -o rw ${LOOP_DEV}p1 "$ROOT/boot"
+
+# mount binds
+mount --bind /dev "$ROOT/dev/"
+mount --bind /sys "$ROOT/sys/"
+mount --bind /proc "$ROOT/proc/"
+mount --bind /dev/pts "$ROOT/dev/pts"
+if [ -e ./rpi-share ]; then
+ mkdir -p "$ROOT/mnt/host"
+ mount --bind ./rpi-share "$ROOT/mnt/host"
+fi
+
+# copy qemu binary
+cp /usr/bin/qemu-arm-static "$ROOT/usr/bin/"
+
+# chroot to raspbian
+chroot "$ROOT" $EXEC
license = pkg['license'],
url = pkg['homepage'],
package_dir = {'': 'src/py'},
- packages = ['bbctrl', 'inevent', 'lcd'],
+ packages = ['bbctrl', 'inevent', 'lcd', 'camotics'],
include_package_data = True,
entry_points = {
'console_scripts': [