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,13 +2,33 @@
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]"
return return
fi fi
## This is a terrible hack, please don't hurt me. - algernon ## This is a terrible hack, please don't hurt me. - algernon
MAX_PROG_SIZE=28672 MAX_PROG_SIZE=28672
@ -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} \
@ -127,7 +143,7 @@ compile () {
ARDUINO_PACKAGES="" ARDUINO_PACKAGES=""
if [ -d ${ARDUINO_PACKAGE_PATH} ]; then if [ -d ${ARDUINO_PACKAGE_PATH} ]; then
ARDUINO_PACKAGES="-hardware \"${ARDUINO_PACKAGE_PATH}\"" ARDUINO_PACKAGES="-hardware \"${ARDUINO_PACKAGE_PATH}\""
fi fi
${ARDUINO_BUILDER} \ ${ARDUINO_BUILDER} \
@ -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,52 +16,74 @@ 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
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.usbmodemHID* 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 '')}"
RESET_DEVICE="/bin/stty -f ${DEVICE_PORT} 1200"
find_device_port() {
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.usbmodemHID* 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 '')}"
}
ARDUINO_PATH="${ARDUINO_PATH:-/Applications/Arduino.app/Contents/Java/}" reset_device_cmd() {
ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/Library/Arduino15/packages}" /bin/stty -f ${DEVICE_PORT} 1200
ARDUINO_LOCAL_LIB_PATH="${ARDUINO_LOCAL_LIB_PATH:-${HOME}/Documents/Arduino}" }
MD5="md5" ARDUINO_PATH="${ARDUINO_PATH:-/Applications/Arduino.app/Contents/Java/}"
ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/Library/Arduino15/packages}"
ARDUINO_LOCAL_LIB_PATH="${ARDUINO_LOCAL_LIB_PATH:-${HOME}/Documents/Arduino}"
fi MD5="md5"
find_bootloader_ports() { find_bootloader_ports() {
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="$(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="${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