Merge pull request #264 from keyboardio/f/builder-cleanup

kaleidoscope-builder cleanup
pull/262/merge
Jesse Vincent 7 years ago committed by GitHub
commit 1513b888fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,30 @@
#!/usr/bin/env perl
use warnings;
use strict;
my $vid = shift;
my $pid = shift;
my $prefix = '/dev/serial/by-id/';
my @paths= `ls $prefix`;
my %devices;
for my $path (@paths) {
chomp($path);
next unless -l $prefix. $path;
my @data = `udevadm info -q property --name=${prefix}${path}`;
for my $line (@data) {
chomp ($line);
my ($key,$val) = split(/=/,$line,2);
$devices{$path}{$key} = $val;
}
if (($devices{$path}{'ID_VENDOR_ID'} == $vid) &&
($devices{$path}{'ID_MODEL_ID'} == $pid) ) {
if ($devices{$path}{'ID_MM_CANDIDATE'}) {
warn "Yikes. ModemManager wants to pwn your keyboard";
}
print $devices{$path}{DEVNAME};
exit(0);
}
}

@ -2,6 +2,26 @@
set -e set -e
######
###### Build and output configuration
######
build_version () {
GIT_VERSION="$(cd $(find_sketch); git describe --abbrev=4 --dirty --always)"
LIB_VERSION="$(cd $(find_sketch); (grep version= ../../library.properties 2>/dev/null || echo version=0.0.0) | cut -d= -f2)-g${GIT_VERSION}"
BUILD_PATH="${BUILD_PATH:-$(mktemp -d 2>/dev/null || mktemp -d -t 'build')}"
OUTPUT_DIR="${OUTPUT_DIR:-output/${LIBRARY}}"
OUTPUT_PATH="${OUTPUT_PATH:-${SOURCEDIR}/${OUTPUT_DIR}}"
}
build_filenames () {
OUTPUT_FILE_PREFIX="${SKETCH}-${LIB_VERSION}"
HEX_FILE_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}.hex"
HEX_FILE_WITH_BOOTLOADER_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}-with-bootloader.hex"
ELF_FILE_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}.elf"
}
firmware_size () { firmware_size () {
if [ "${BOARD}" = "virtual" ]; then if [ "${BOARD}" = "virtual" ]; then
echo "[Size not computed for virtual build]" echo "[Size not computed for virtual build]"
@ -56,13 +76,11 @@ flash () {
sleep 3s sleep 3s
find_bootloader_ports find_bootloader_ports
flash_over_usb || flash_over_usb flash_over_usb || flash_over_usb
} }
flash_over_usb () { flash_over_usb () {
sleep 1s sleep 1s
${AVRDUDE} -q -q -C ${AVRDUDE_CONF} -p${MCU} -cavr109 -D -P ${DEVICE_PORT_BOOTLOADER} -b57600 "-Uflash:w:${HEX_FILE_PATH}:i" ${AVRDUDE} -q -q -C ${AVRDUDE_CONF} -p${MCU} -cavr109 -D -P ${DEVICE_PORT_BOOTLOADER} -b57600 "-Uflash:w:${HEX_FILE_PATH}:i"
} }
flash_from_bootloader() { flash_from_bootloader() {
@ -71,14 +89,12 @@ flash_from_bootloader() {
flash_over_usb || flash_over_usb flash_over_usb || flash_over_usb
} }
program() { program() {
prepare_to_flash prepare_to_flash
flash_with_programmer flash_with_programmer
} }
flash_with_programmer() { flash_with_programmer() {
${AVRDUDE} -v \ ${AVRDUDE} -v \
-C ${AVRDUDE_CONF} \ -C ${AVRDUDE_CONF} \
-p${MCU} \ -p${MCU} \
@ -212,7 +228,13 @@ clean () {
rm -rf "${OUTPUT_PATH}" rm -rf "${OUTPUT_PATH}"
} }
reset_device () { reset_device() {
find_device_port
check_device_port
reset_device_cmd
}
check_device_port () {
if [ -z $DEVICE_PORT ]; then if [ -z $DEVICE_PORT ]; then
echo "Couldn't autodetect the keyboard's serial port." echo "Couldn't autodetect the keyboard's serial port."
echo "If you see this message and your keyboard is connected to your computer," echo "If you see this message and your keyboard is connected to your computer,"
@ -221,8 +243,6 @@ reset_device () {
echo "Please report this issue at https://github.com/keyboardio/Kaleidoscope"; echo "Please report this issue at https://github.com/keyboardio/Kaleidoscope";
exit 0; exit 0;
fi fi
${RESET_DEVICE}
} }
usage () { usage () {
@ -297,9 +317,13 @@ if [ -e "${SOURCEDIR}/kaleidoscope-builder.conf" ]; then
. "${SOURCEDIR}/kaleidoscope-builder.conf" . "${SOURCEDIR}/kaleidoscope-builder.conf"
fi fi
. ${ROOT}/etc/kaleidoscope-builder.conf . ${ROOT}/etc/kaleidoscope-builder.conf
if [ ! -z "${VERBOSE}" ] && [ "${VERBOSE}" -gt 0 ]; then
ARDUINO_VERBOSE="-verbose"
else
ARDUINO_VERBOSE="-quiet"
fi
cmds="" cmds=""

@ -1,24 +1,13 @@
## NEEDS: LIBRARY, SKETCH, ROOT, SOURCEDIR ## NEEDS: LIBRARY, SKETCH, ROOT, SOURCEDIR
## Should be included when the current directory is the dir of the Sketch. ## Should be included when the current directory is the dir of the Sketch.
case "$0" in
*/settings.sh)
echo "This file must be included, never run directly!" >&2
exit 1
;;
esac
SKETCH="${SKETCH:-${DEFAULT_SKETCH}}" SKETCH="${SKETCH:-${DEFAULT_SKETCH}}"
LIBRARY="${LIBRARY:-${SKETCH}}" LIBRARY="${LIBRARY:-${SKETCH}}"
######## ########
######## Keyboard hardware definitions ######## Keyboard hardware definitions
######## ########
BOARD="${BOARD:-model01}" BOARD="${BOARD:-model01}"
MCU="${MCU:-atmega32u4}" MCU="${MCU:-atmega32u4}"
if [ "${BOARD}" = "virtual" ]; then if [ "${BOARD}" = "virtual" ]; then
@ -27,31 +16,60 @@ else
FQBN="${FQBN:-keyboardio:avr:${BOARD}}" FQBN="${FQBN:-keyboardio:avr:${BOARD}}"
fi fi
######## ########
######## Host OS specific commands ######## Host OS specific commands
######## ########
## Platform-specific overrides ## Platform-specific overrides
# Shamelessly stolen from git's Makefile # Shamelessly stolen from git's Makefile
uname_S=$(uname -s 2>/dev/null || echo not) uname_S=$(uname -s 2>/dev/null || echo not)
find_device_vid_pid() {
VPIDS=$(${ARDUINO_BUILDER} \
-hardware "${ARDUINO_PATH}/hardware" \
-hardware "${BOARD_HARDWARE_PATH}" \
${ARDUINO_TOOLS_PARAM} \
-tools "${ARDUINO_PATH}/tools-builder" \
-fqbn "${FQBN}" \
-dump-prefs | grep "\.[vp]id=")
VID=${VID:-$(echo "${VPIDS}" | grep build.vid= | cut -dx -f2)}
SKETCH_PID=${SKETCH_PID:-$(echo "${VPIDS}" | grep build.pid= | cut -dx -f2)}
BOOTLOADER_PID=${BOOTLOADER_PID:-$(echo "${VPIDS}" | grep bootloader.pid= | cut -dx -f2)}
}
find_device_port() {
find_device_vid_pid
DIR=$(dirname "$(readlink -f "$0")")
DEVICE_PORT_PROBER="${DIR}/find-device-port-linux-udev"
DEVICE_PORT="$(perl ${DEVICE_PORT_PROBER} ${VID} ${SKETCH_PID})"
}
DEVICE_PORT="$(ls /dev/ttyACM* 2>/dev/null || echo '')" reset_device_cmd() {
RESET_DEVICE="stty -F ${DEVICE_PORT} 1200 hupcl" stty -F ${DEVICE_PORT} 1200 hupcl
MD5="md5sum" }
find_bootloader_ports() {
find_device_vid_pid
DIR=$(dirname "$(readlink -f "$0")")
DEVICE_PORT_PROBER="${DIR}/find-device-port-linux-udev"
DEVICE_PORT_BOOTLOADER="$(perl ${DEVICE_PORT_PROBER} ${VID} ${BOOTLOADER_PID})"
}
MD5="md5sum"
if [ "${uname_S}" = "Darwin" ]; then if [ "${uname_S}" = "Darwin" ]; then
find_device_port() {
DEVICE_PORT="$(ls /dev/cu.usbmodemkbio* 2> /dev/null || echo '')" DEVICE_PORT="$(ls /dev/cu.usbmodemkbio* 2> /dev/null || echo '')"
DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemCkbio* 2> /dev/null || echo '')}" DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemCkbio* 2> /dev/null || echo '')}"
DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemHID* 2> /dev/null || echo '')}" DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemHID* 2> /dev/null || echo '')}"
DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemCHID* 2> /dev/null || echo '')}" DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodemCHID* 2> /dev/null || echo '')}"
DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodem14* 2> /dev/null || echo '')}" DEVICE_PORT="${DEVICE_PORT:-$(ls /dev/cu.usbmodem14* 2> /dev/null || echo '')}"
RESET_DEVICE="/bin/stty -f ${DEVICE_PORT} 1200" }
reset_device_cmd() {
/bin/stty -f ${DEVICE_PORT} 1200
}
ARDUINO_PATH="${ARDUINO_PATH:-/Applications/Arduino.app/Contents/Java/}" ARDUINO_PATH="${ARDUINO_PATH:-/Applications/Arduino.app/Contents/Java/}"
ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/Library/Arduino15/packages}" ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/Library/Arduino15/packages}"
@ -59,19 +77,12 @@ if [ "${uname_S}" = "Darwin" ]; then
MD5="md5" MD5="md5"
fi find_bootloader_ports() {
find_bootloader_ports() {
DEVICE_PORT_BOOTLOADER="$(ls /dev/ttyACM* 2>/dev/null || echo '')"
if [ "${uname_S}" = "Darwin" ]; then
DEVICE_PORT_BOOTLOADER="$(ls /dev/cu.usbmodemkbio* 2> /dev/null || echo '')" DEVICE_PORT_BOOTLOADER="$(ls /dev/cu.usbmodemkbio* 2> /dev/null || echo '')"
DEVICE_PORT_BOOTLOADER="${DEVICE_PORT_BOOTLOADER:-$(ls /dev/cu.usbmodem14* 2> /dev/null || echo '')}" DEVICE_PORT_BOOTLOADER="${DEVICE_PORT_BOOTLOADER:-$(ls /dev/cu.usbmodem14* 2> /dev/null || echo '')}"
fi }
}
fi
###### ######
###### Arduino tools configuration ###### Arduino tools configuration
@ -95,52 +106,17 @@ AVR_OBJDUMP="${AVR_OBJDUMP:-${ARDUINO_TOOLS_PATH}/avr/bin/avr-objdump}"
AVRDUDE="${AVRDUDE:-${ARDUINO_TOOLS_PATH}/avr/bin/avrdude}" AVRDUDE="${AVRDUDE:-${ARDUINO_TOOLS_PATH}/avr/bin/avrdude}"
AVRDUDE_CONF="${AVRDUDE_CONF:-${ARDUINO_TOOLS_PATH}/avr/etc/avrdude.conf}" AVRDUDE_CONF="${AVRDUDE_CONF:-${ARDUINO_TOOLS_PATH}/avr/etc/avrdude.conf}"
###### ######
###### Source files and dependencies ###### Source files and dependencies
###### ######
BOARD_HARDWARE_PATH="${BOARD_HARDWARE_PATH:-${ARDUINO_LOCAL_LIB_PATH}/hardware}" BOARD_HARDWARE_PATH="${BOARD_HARDWARE_PATH:-${ARDUINO_LOCAL_LIB_PATH}/hardware}"
BOOTLOADER_PATH="${BOOTLOADER_PATH:-${BOARD_HARDWARE_PATH}/keyboardio/avr/bootloaders/caterina/Caterina.hex}" BOOTLOADER_PATH="${BOOTLOADER_PATH:-${BOARD_HARDWARE_PATH}/keyboardio/avr/bootloaders/caterina/Caterina.hex}"
if [ ! -z "${ARDUINO_TOOLS_PATH}" ]; then
###### ARDUINO_TOOLS_PARAM="-tools ${ARDUINO_TOOLS_PATH}"
###### Build and output configuration
######
build_version () {
GIT_VERSION="$(cd $(find_sketch); git describe --abbrev=4 --dirty --always)"
LIB_VERSION="$(cd $(find_sketch); (grep version= ../../library.properties 2>/dev/null || echo version=0.0.0) | cut -d= -f2)-g${GIT_VERSION}"
BUILD_PATH="${BUILD_PATH:-$(mktemp -d 2>/dev/null || mktemp -d -t 'build')}"
OUTPUT_DIR="${OUTPUT_DIR:-output/${LIBRARY}}"
OUTPUT_PATH="${OUTPUT_PATH:-${SOURCEDIR}/${OUTPUT_DIR}}"
}
build_filenames () {
OUTPUT_FILE_PREFIX="${SKETCH}-${LIB_VERSION}"
HEX_FILE_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}.hex"
HEX_FILE_WITH_BOOTLOADER_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}-with-bootloader.hex"
ELF_FILE_PATH="${OUTPUT_PATH}/${OUTPUT_FILE_PREFIX}.elf"
}
ARDUINO_TOOLS_PARAM="-tools ${ARDUINO_TOOLS_PATH}"
if [ -z "${ARDUINO_TOOLS_PATH}" ]; then
ARDUINO_TOOLS_PARAM=""
fi fi
if [ ! -z "${AVR_GCC_PREFIX}" ]; then if [ ! -z "${AVR_GCC_PREFIX}" ]; then
ARDUINO_AVR_GCC_PREFIX_PARAM="-prefs \"runtime.tools.avr-gcc.path=${AVR_GCC_PREFIX}\"" ARDUINO_AVR_GCC_PREFIX_PARAM="-prefs \"runtime.tools.avr-gcc.path=${AVR_GCC_PREFIX}\""
fi fi
if [ ! -z "${VERBOSE}" ] && [ "${VERBOSE}" -gt 0 ]; then
ARDUINO_VERBOSE="-verbose"
else
ARDUINO_VERBOSE="-quiet"
fi

Loading…
Cancel
Save