aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml11
-rw-r--r--Arduino.mk29
-rw-r--r--Common.mk46
-rw-r--r--HISTORY.md3
-rw-r--r--README.md29
-rw-r--r--Sam.mk42
-rw-r--r--arduino-mk-vars.md71
-rwxr-xr-xbin/ard-reset-arduino17
-rwxr-xr-xbin/ardmk-init6
-rwxr-xr-xbin/robotis-loader4
-rw-r--r--packaging/fedora/arduino-mk.spec7
-rwxr-xr-xtests/script/bootstrap.sh1
-rw-r--r--tests/script/bootstrap/arduino.sh8
-rw-r--r--tests/script/bootstrap/common.sh18
-rw-r--r--tests/script/bootstrap/pip-requirements.txt2
-rw-r--r--tests/script/bootstrap/samd.sh46
-rwxr-xr-xtests/script/runtests.sh71
17 files changed, 311 insertions, 100 deletions
diff --git a/.travis.yml b/.travis.yml
index 630965a..a8e0a66 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,15 @@
-sudo: required
+os: linux
+dist: xenial
language: c
compiler:
- gcc
script: tests/script/runtests.sh
before_install: tests/script/bootstrap.sh
+addons:
+ apt:
+ packages:
+ - "python3"
+ - "python3-pip"
+env:
+ global:
+ - ARDMK_DIR=$TRAVIS_BUILD_DIR
diff --git a/Arduino.mk b/Arduino.mk
index ff94ffe..30bf36b 100644
--- a/Arduino.mk
+++ b/Arduino.mk
@@ -853,15 +853,15 @@ endif
# Reset
ifndef RESET_CMD
- ARD_RESET_ARDUINO := $(shell which ard-reset-arduino 2> /dev/null)
+ ARD_RESET_ARDUINO := $(PYTHON_CMD) $(shell which ard-reset-arduino 2> /dev/null)
ifndef ARD_RESET_ARDUINO
# same level as *.mk in bin directory when checked out from git
# or in $PATH when packaged
- ARD_RESET_ARDUINO = $(ARDMK_DIR)/bin/ard-reset-arduino
+ ARD_RESET_ARDUINO = $(PYTHON_CMD) $(ARDMK_DIR)/bin/ard-reset-arduino
endif
ifneq (,$(findstring CYGWIN,$(shell uname -s)))
# confirm user is using default cygwin unix Python (which uses ttySx) and not Windows Python (which uses COMx)
- ifeq ($(shell which python),/usr/bin/python)
+ ifeq ($(PYTHON_CMD),/usr/bin/python)
RESET_CMD = $(ARD_RESET_ARDUINO) $(ARD_RESET_OPTS) $(DEVICE_PATH)
else
RESET_CMD = $(ARD_RESET_ARDUINO) $(ARD_RESET_OPTS) $(call get_monitor_port)
@@ -1227,15 +1227,24 @@ CFLAGS += $(CFLAGS_STD)
CXXFLAGS += -fpermissive -fno-exceptions $(CXXFLAGS_STD)
ASFLAGS += -x assembler-with-cpp
DIAGNOSTICS_COLOR_WHEN ?= always
-ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
- ASFLAGS += -flto
- CXXFLAGS += -fno-threadsafe-statics -flto -fno-devirtualize -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
- CFLAGS += -flto -fno-fat-lto-objects -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
+
+# Flags for AVR
+ifeq ($(findstring avr, $(strip $(CC_NAME))), avr)
+ ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
+ ASFLAGS += -flto
+ CXXFLAGS += -fno-threadsafe-statics -flto -fno-devirtualize -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
+ CFLAGS += -flto -fno-fat-lto-objects -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
+ LDFLAGS += -flto -fuse-linker-plugin
+ endif
+# Flags for ARM (most set in Sam.mk)
+else
+ ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
+ CXXFLAGS += -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
+ CFLAGS += -fdiagnostics-color=$(DIAGNOSTICS_COLOR_WHEN)
+ endif
endif
+
LDFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -Wl,--gc-sections -O$(OPTIMIZATION_LEVEL)
-ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
- LDFLAGS += -flto -fuse-linker-plugin
-endif
SIZEFLAGS ?= --mcu=$(MCU) -C
# for backwards compatibility, grab ARDUINO_PORT if the user has it set
diff --git a/Common.mk b/Common.mk
index 0c1f92c..501f582 100644
--- a/Common.mk
+++ b/Common.mk
@@ -8,8 +8,8 @@ dir_if_exists = $(if $(wildcard $(1)$(2)),$(1))
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
PARSE_BOARD = $(shell if [ -f $(BOARDS_TXT) ]; \
then \
- grep -Ev '^\#' $(BOARDS_TXT) | \
- grep -E "^[ \t]*$(1).$(2)=" | \
+ $(GREP_CMD) -Ev '^\#' $(BOARDS_TXT) | \
+ $(GREP_CMD) -E "^[ \t]*$(1).$(2)=" | \
cut -d = -f 2- | \
cut -d : -f 2; \
fi)
@@ -45,15 +45,24 @@ $(call arduino_output,$(call ardmk_include) Configuration:)
########################################################################
#
# Detect OS
+
ifeq ($(OS),Windows_NT)
CURRENT_OS = WINDOWS
+ GREP_CMD = grep
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
CURRENT_OS = LINUX
+ GREP_CMD = grep
endif
ifeq ($(UNAME_S),Darwin)
CURRENT_OS = MAC
+ ifeq (, $(shell which ggrep))
+ echo $(info Using macOS BSD grep, please install GNU grep to avoid warnings)
+ GREP_CMD = grep
+ else
+ GREP_CMD = ggrep
+ endif
endif
endif
$(call show_config_variable,CURRENT_OS,[AUTODETECTED])
@@ -64,12 +73,20 @@ $(call show_config_variable,CURRENT_OS,[AUTODETECTED])
ifneq ($(TEST),)
DEPENDENCIES_DIR = /var/tmp/Arduino-Makefile-testing-dependencies
- DEPENDENCIES_MPIDE_DIR = $(DEPENDENCIES_DIR)/mpide-0023-linux64-20130817-test
+ DEPENDENCIES_MPIDE_DIR := $(shell find $(DEPENDENCIES_DIR) -name 'mpide-0023-*' -type d -exec ls -dt {} + | head -n 1)
+
ifeq ($(MPIDE_DIR),)
MPIDE_DIR = $(DEPENDENCIES_MPIDE_DIR)
endif
- DEPENDENCIES_ARDUINO_DIR = $(DEPENDENCIES_DIR)/arduino-1.0.6
+ ifndef ARDUINO_IDE_DIR
+ ifeq ($(CURRENT_OS),MAC)
+ ARDUINO_IDE_DIR = Arduino.app/Contents/Resources/Java
+ else
+ ARDUINO_IDE_DIR := $(shell basename $(basename $(basename $(lastword $(wildcard $(DEPENDENCIES_DIR)/arduino*)))))
+ endif
+ endif
+ DEPENDENCIES_ARDUINO_DIR = $(DEPENDENCIES_DIR)/$(ARDUINO_IDE_DIR)
ifeq ($(ARDUINO_DIR),)
ARDUINO_DIR = $(DEPENDENCIES_ARDUINO_DIR)
endif
@@ -98,3 +115,24 @@ ifeq ($(CURRENT_OS),WINDOWS)
echo $(error On Windows, ARDUINO_DIR and other defines must use forward slash and not contain spaces, special characters or be cygdrive relative)
endif
endif
+
+########################################################################
+# System Python
+
+ifndef PYTHON_CMD
+ # try for Python 3 first
+ PYTHON_CMD := $(shell which python3 2> /dev/null)
+ ifdef PYTHON_CMD
+ $(call show_config_variable,PYTHON_CMD,[AUTODETECTED])
+ else
+ # fall-back to any Python
+ PYTHON_CMD := $(shell which python 2> /dev/null)
+ ifdef PYTHON_CMD
+ $(call show_config_variable,PYTHON_CMD,[AUTODETECTED])
+ else
+ echo $(error "Unable to find system Python! Utility scipts won't work. Override this error by defining PYTHON_CMD")
+ endif
+ endif
+else
+ $(call show_config_variable,PYTHON_CMD,[USER])
+endif
diff --git a/HISTORY.md b/HISTORY.md
index 459858d..0641531 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -12,12 +12,14 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
- Fix: recognize serial monitors with full path in MONITOR_CMD
- Fix: Grab USB_PRODUCT and USB_MANUFACTURER from boards.txt for 32u4 boards (issue #594).
- Fix: Show the configuration when ARDUINO_QUIET=0
+- Fix: Travis build and bring Arduino IDE upto date
- Tweak: Move chip erase flag from set_fuses to ispload to prevent sketch being nuked when setting fuses
- Tweak: Set ARDMK_VERSION to 1.6 (https://github.com/sej7278)
- Tweak: Move non-standard-related items from CxxFLAGS_STD to CxxFLAGS (issue #523) (https://github.com/sej7278)
- Tweak: Update Windows usage documentation and allow non-relative paths (issue #519) (https://github.com/tuna-f1sh)
- Tweak: Support Cygwin Unix Python and Windows installation on Windows to pass correct port binding. (https://github.com/tuna-f1sh)
- Tweak: Update how avr-size is called on Sam, also moved to gnu11 std (issue #602) (https://github.com/tuna-f1sh)
+- Tweak: Detect most recent toolchain if multiple found, add `*_VER` variable to override (issue #611) (https://github.com/tuna-f1sh)
- New: Added -fdiagnostics-color to \*STD flags (https://github.com/sej7278)
- New: Made -fdiagnostics-color take a variiable DIAGNOSTICS_COLOR_WHEN: never, always, auto. (https://github.com/wingunder)
- New: Add generation of tags file using ctags, which automatically includes project libs and Arduino core. (https://github.com/tuna-f1sh)
@@ -32,6 +34,7 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
- New: Updated Arch instructions. (https://github.com/Akram-Chehaima)
- New: Add support for Robotis OpenCR 1.0 boards.
- New: Build the ArduinoCore API
+- New: Support for Python 3 and multi-os Python installation using new PYTHON_CMD variable.
### 1.6.0 (2017-07-11)
- Fix: Allowed for SparkFun's weird usb pid/vid submenu shenanigans (issue #499). (https://github.com/sej7278)
diff --git a/README.md b/README.md
index cab5d19..68a4ae3 100644
--- a/README.md
+++ b/README.md
@@ -83,14 +83,14 @@ installer or download the distribution zip file and extract it.
The Makefile also delegates resetting the board to a short Python program.
You'll need to install [`pySerial`](https://pypi.python.org/pypi/pyserial) to use it though.
-On most systems you should be able to install it using either `pip` or `easy_install`.
+On most systems you should be able to install it using either `pip3` or `easy_install3`.
```sh
-pip install pyserial
+pip3 install pyserial
# or if you prefer easy_install
-easy_install -U pyserial
+easy_install3 -U pyserial
```
If you prefer to install it as a package, then you can do that as well.
@@ -98,23 +98,19 @@ If you prefer to install it as a package, then you can do that as well.
On Debian or Ubuntu:
```sh
-apt-get install python-serial
+apt-get install python3-serial
```
On Fedora:
```sh
-yum install pyserial
-
-# or on Fedora 22+
-
-dnf install pyserial
+dnf install python3-pyserial
```
On openSUSE:
```sh
-zypper install python-serial
+zypper install python3-serial
```
On Arch:
@@ -123,15 +119,16 @@ On Arch:
sudo pacman -S python-pyserial
```
-On Mac using MacPorts:
+On macOS using Homebrew (one can install to System Python but this is not recommend or good practice):
```sh
-sudo port install py27-serial
+brew install python
+pip3 install pyserial
```
On Windows:
-You need to install Cygwin and its packages for Make, Perl, Python2 and the following Serial library.
+You need to install Cygwin and its packages for Make, Perl, Python3 and the following Serial library.
Assuming you included Python in your Cygwin installation:
@@ -141,15 +138,15 @@ Assuming you included Python in your Cygwin installation:
4. build and install Python module:
```
-python setup.py build
-python setup.py install
+python3 setup.py build
+python3 setup.py install
```
Alternatively, if you have setup Cygwin to use a Windows Python installation,
simply install using pip:
```
-pip install pyserial
+pip3 install pyserial
```
Arduino-Makefile should automatically detect the Python installation type and
diff --git a/Sam.mk b/Sam.mk
index a014e63..2e19730 100644
--- a/Sam.mk
+++ b/Sam.mk
@@ -31,6 +31,16 @@ ifndef COMMON_INCLUDED
include $(ARDMK_DIR)/Common.mk
endif
+ifneq ($(TEST),)
+ CORE_VER = 1.8.6
+ CMSIS_VER = 4.5.0
+ CMSIS_ATMEL_VER = 1.2.0
+ ALTERNATE_CORE_PATH = $(DEPENDENCIES_DIR)/samd
+ CMSIS_DIR = $(DEPENDENCIES_DIR)/CMSIS/CMSIS
+ CMSIS_ATMEL_DIR = $(DEPENDENCIES_DIR)/CMSIS-Atmel/CMSIS
+ ARM_TOOLS_DIR := $(basename $(basename $(firstword $(wildcard $(DEPENDENCIES_DIR)/gcc-arm-none-eabi*))))
+endif
+
ifndef ARDUINO_PACKAGE_DIR
# attempt to find based on Linux, macOS and Windows default
ARDUINO_PACKAGE_DIR := $(firstword \
@@ -160,14 +170,6 @@ ifeq ($(findstring arduino_due, $(strip $(VARIANT))), arduino_due)
SAM_CORE_C_SRCS += $(wildcard $(SAM_SYSTEM_PATH)/source/*.c)
endif
-# Use arm-toolchain from Arduino install if exists and user has not defined global version
-ifndef ARM_TOOLS_DIR
- ARM_TOOLS_DIR = $(call dir_if_exists,$(wildcard $(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/$(TOOL_PREFIX)-gcc/*))
- $(call show_config_variable,ARM_TOOLS_DIR,[COMPUTED],(from ARDUINO_PACKAGE_DIR))
-else
- $(call show_config_variable,ARM_TOOLS_DIR,[USER])
-endif
-
# define plaform lib dir from Arduino ARM support
ifndef ARDUINO_PLATFORM_LIB_PATH
ARDUINO_PLATFORM_LIB_PATH := $(ALTERNATE_CORE_PATH)/libraries
@@ -179,6 +181,20 @@ endif
TOOL_PREFIX = arm-none-eabi
+# Use arm-toolchain from Arduino package install if exists and user has not defined global version
+# if undefined, AVR_TOOLS_DIR will resolve in Arduino.mk as a last resort as Arduino now installs with arm-gcc
+ifndef ARM_TOOLS_DIR
+ ifndef ARM_TOOLS_VER
+ ARM_TOOLS_VER := $(shell basename $(lastword $(wildcard $(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/$(TOOL_PREFIX)-gcc/*)))
+ endif
+ ARM_TOOLS_DIR = $(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/$(TOOL_PREFIX)-gcc/$(ARM_TOOLS_VER)
+ ifdef ARM_TOOLS_DIR
+ $(call show_config_variable,ARM_TOOLS_DIR,[COMPUTED],(from ARDUINO_PACKAGE_DIR))
+ endif
+else
+ $(call show_config_variable,ARM_TOOLS_DIR,[USER])
+endif
+
ifndef GDB_NAME
GDB_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gdb)
ifndef GDB_NAME
@@ -246,7 +262,9 @@ ifndef OPENOCD
BUNDLED_OPENOCD_DIR := $(call dir_if_exists,$(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/openocd)
# Try Arduino support package first
ifdef BUNDLED_OPENOCD_DIR
- OPENOCD_VER := $(shell basename $(wildcard $(BUNDLED_OPENOCD_DIR)/*))
+ ifndef OPENOCD_VER
+ OPENOCD_VER := $(shell basename $(lastword $(wildcard $(BUNDLED_OPENOCD_DIR)/*)))
+ endif
OPENOCD = $(BUNDLED_OPENOCD_DIR)/$(OPENOCD_VER)/bin/openocd -s $(BUNDLED_OPENOCD_DIR)/$(OPENOCD_VER)/share/openocd/scripts/
$(call show_config_variable,OPENOCD,[AUTODETECTED],(from ARDUINO_PACKAGE_DIR))
else
@@ -271,7 +289,9 @@ ifndef BOSSA
BUNDLED_BOSSA_DIR := $(call dir_if_exists,$(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/bossac)
# Try Arduino support package first
ifdef BUNDLED_BOSSA_DIR
- BOSSA_VER := $(shell basename $(wildcard $(BUNDLED_BOSSA_DIR)/*))
+ ifndef BOSSA_VER
+ BOSSA_VER := $(shell basename $(lastword $(wildcard $(BUNDLED_BOSSA_DIR)/*)))
+ endif
BOSSA = $(BUNDLED_BOSSA_DIR)/$(BOSSA_VER)/bossac
$(call show_config_variable,BOSSA,[AUTODETECTED],(from ARDUINO_PACKAGE_DIR))
else
@@ -394,7 +414,7 @@ CFLAGS_STD += -std=gnu11
CPPFLAGS += -DMD -D$(USB_TYPE) '-DUSB_PRODUCT=$(USB_PRODUCT)' '-DUSB_MANUFACTURER=$(USB_MANUFACTURER)'
# Get extra define flags from boards.txt
-EXFLAGS := $(shell echo $(call PARSE_BOARD,$(BOARD_TAG),build.extra_flags) | grep -oE '(-D)\w+')
+EXFLAGS := $(shell echo $(call PARSE_BOARD,$(BOARD_TAG),build.extra_flags) | $(GREP_CMD) -oE '(-D)\w+')
# Strip only defines from extra flags as boards file appends user {build.usb}
CPPFLAGS += $(EXFLAGS)
diff --git a/arduino-mk-vars.md b/arduino-mk-vars.md
index f173ac2..746066b 100644
--- a/arduino-mk-vars.md
+++ b/arduino-mk-vars.md
@@ -97,6 +97,25 @@ ARM_TOOLS_DIR =
----
+### ARM_TOOLS_VER
+
+**Description:**
+
+Sub-directory where the arm toolchain is installed - usually the tool version.
+
+Can usually be detected from `$ARDUINO_PACKAGE_DIR` /tools subdirectory when ARM
+device support is installed. Will resolve latest version if multiple found.
+
+**Example:**
+
+```Makefile
+ARM_TOOLS_VER = 7-2017q4
+```
+
+**Requirement:** *Optional*
+
+----
+
### RESET_CMD
**Description:**
@@ -115,6 +134,38 @@ RESET_CMD = $(HOME)/gertduino/reset
----
+### PYTHON_CMD
+
+**Description:**
+
+Path to Python binary. Requires pyserial module installed. Makefile will error if unable to auto-find as utility scripts will not work. To override this, give it an empty define.
+
+**Example:**
+
+```Makefile
+PYTHON_CMD = /usr/bin/python3
+```
+
+**Requirement:** *Optional*
+
+----
+
+### GREP_CMD
+
+**Description:**
+
+Path to GNU grep binary. Only added for macOS, which has BSD grep by default but results in some parsing warnings. macOS users should install GNU grep using Homebrew.
+
+**Example:**
+
+```Makefile
+GREP_CMD = /bin/grep
+```
+
+**Requirement:** *Optional*
+
+----
+
## Arduino IDE variables
### ARDUINO_DIR
@@ -1816,6 +1867,16 @@ device support is installed.
----
+### BOSSA_VER
+
+**Description:**
+
+`bossa` sub-directory - usually the tool version. Will auto-detect to highest version found.
+
+**Requirement:** *Optional*
+
+----
+
### BOSSA_OPTS
**Description:**
@@ -1841,6 +1902,16 @@ device support is installed.
----
+### OPENOCD_VER
+
+**Description:**
+
+`openocd` sub-directory - usually the tool version. Will auto-detect to highest version found.
+
+**Requirement:** *Optional*
+
+----
+
### OPENOCD_OPTS
**Description:**
diff --git a/bin/ard-reset-arduino b/bin/ard-reset-arduino
index d6f974f..69a442e 100755
--- a/bin/ard-reset-arduino
+++ b/bin/ard-reset-arduino
@@ -1,18 +1,11 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
-from __future__ import print_function
import serial
import serial.tools.list_ports
import os.path
import argparse
from time import sleep
-pyserial_version = None
-try:
- pyserial_version = int(serial.VERSION[0])
-except:
- pyserial_version = 2 # less than 2.3
-
parser = argparse.ArgumentParser(description='Reset an Arduino')
parser.add_argument('--zero', action='store_true', help='Reset Arduino Zero or similar Native USB to enter bootloader')
parser.add_argument('--caterina', action='store_true', help='Reset a Leonardo, Micro, Robot or LilyPadUSB.')
@@ -65,11 +58,7 @@ if args.zero:
ser = serial.Serial(args.port[0], 57600)
ser.close()
-
- if pyserial_version < 3:
- ser.setBaudrate(1200)
- else:
- ser.baudrate = 1200
+ ser.baudrate = 1200
# do the open/close at 1200 BAUD
ser.open()
@@ -100,7 +89,7 @@ if args.zero:
# check if a new port has attached and return the index if it has
port_index = new_port(initial_ports, reset_ports)
# return the new port if detected, otherwise return passed port
- if port_index is -1:
+ if port_index == -1:
bootloader_port = args.port[0]
else:
bootloader_port = reset_ports[port_index]
diff --git a/bin/ardmk-init b/bin/ardmk-init
index 51b12f0..11d1126 100755
--- a/bin/ardmk-init
+++ b/bin/ardmk-init
@@ -1,4 +1,5 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
+
"""
Arduino-mk Makefile and project initialiser
@@ -17,7 +18,6 @@ Example:
See `armk-init --help` for CLI arguments
"""
-from __future__ import print_function
import os
import argparse
@@ -54,7 +54,7 @@ PARSER.add_argument('--cli', action='store_true', help='run with user prompts (r
PARSER.add_argument('-P', '--project', action='store_true',
help='create boilerplate project with src, lib and bin folder structure')
PARSER.add_argument('-t', '--template', action='store_true',
- help='create bare minimum Arduino source file')
+ help='create bare minimum Arduino source file')
PARSER.add_argument('-V', '--version', action='version', version='%(prog)s '+ VERSION)
ARGS = PARSER.parse_args()
diff --git a/bin/robotis-loader b/bin/robotis-loader
index 95d4e71..3f3c21b 100755
--- a/bin/robotis-loader
+++ b/bin/robotis-loader
@@ -1,8 +1,8 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# This script sends a program on a robotis board (OpenCM9.04 or CM900)
# using the robotis bootloader (used in OpenCM IDE)
-#
+#
# Usage:
# python robotis-loader.py <serial port> <binary>
#
diff --git a/packaging/fedora/arduino-mk.spec b/packaging/fedora/arduino-mk.spec
index b1f07f1..559e229 100644
--- a/packaging/fedora/arduino-mk.spec
+++ b/packaging/fedora/arduino-mk.spec
@@ -1,6 +1,6 @@
Name: arduino-mk
Version: 1.6.0
-Release: 1%{dist}
+Release: 2%{dist}
Summary: Program your Arduino from the command line
Packager: Simon John <git@the-jedi.co.uk>
URL: https://github.com/sudar/Arduino-Makefile
@@ -9,8 +9,7 @@ Group: Development/Tools
License: LGPLv2+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
-Requires: arduino-core pyserial
-BuildRequires: arduino-core
+Requires: arduino-core python3-pyserial
%description
Arduino is an open-source electronics prototyping platform based on
@@ -60,6 +59,8 @@ rm -rf %{buildroot}
%{_docdir}/%{name}/examples
%changelog
+* Thu Oct 24 2019 Simon John <git@the-jedi.co.uk>
+- Removed BuildRequires
* Thu Oct 05 2017 Simon John <git@the-jedi.co.uk>
- Added ardmk-init binary and manpage
* Tue Jul 11 2017 Karl Semich <fuzzyTew@gmail.com>
diff --git a/tests/script/bootstrap.sh b/tests/script/bootstrap.sh
index 083bf5d..0dbd7b2 100755
--- a/tests/script/bootstrap.sh
+++ b/tests/script/bootstrap.sh
@@ -7,3 +7,4 @@ pushd $SCRIPTS_DIR/..
source $SCRIPTS_DIR/bootstrap/chipkit.sh
source $SCRIPTS_DIR/bootstrap/arduino.sh
+source $SCRIPTS_DIR/bootstrap/samd.sh
diff --git a/tests/script/bootstrap/arduino.sh b/tests/script/bootstrap/arduino.sh
index 7c2c9ac..371c0ef 100644
--- a/tests/script/bootstrap/arduino.sh
+++ b/tests/script/bootstrap/arduino.sh
@@ -8,7 +8,8 @@ if [ -z "$ARDUINO_DIR" ] || ! test -e $ARDUINO_DIR || [ $OS == "cygwin" ]; then
echo "Installing Arduino..."
- ARDUINO_BASENAME="arduino-1.0.6"
+ ARDUINO_BASENAME="arduino-1.8.11"
+
if [ $OS == "cygwin" ]; then
ARDUINO_FILE="$ARDUINO_BASENAME-windows".zip
EXTRACT_COMMAND="unzip -q"
@@ -16,8 +17,8 @@ if [ -z "$ARDUINO_DIR" ] || ! test -e $ARDUINO_DIR || [ $OS == "cygwin" ]; then
ARDUINO_FILE="$ARDUINO_BASENAME-macosx".zip
EXTRACT_COMMAND="unzip -q"
else
- ARDUINO_FILE="$ARDUINO_BASENAME-linux64".tgz
- EXTRACT_COMMAND="tar -xzf"
+ ARDUINO_FILE="$ARDUINO_BASENAME-linux64".tar.xz
+ EXTRACT_COMMAND="tar -xf"
fi
ARDUINO_URL=http://arduino.cc/download.php?f=/$ARDUINO_FILE
@@ -33,6 +34,7 @@ if [ -z "$ARDUINO_DIR" ] || ! test -e $ARDUINO_DIR || [ $OS == "cygwin" ]; then
then
echo "Installing Arduino to local folder..."
$EXTRACT_COMMAND $ARDUINO_FILE
+ mv $ARDUINO_BASENAME arduino
echo "Arduino installed"
fi
diff --git a/tests/script/bootstrap/common.sh b/tests/script/bootstrap/common.sh
index c3cd90e..2b879b8 100644
--- a/tests/script/bootstrap/common.sh
+++ b/tests/script/bootstrap/common.sh
@@ -160,22 +160,14 @@ if [ -z $COMMON_SOURCED ]; then
fi
fi
- if ! command -v python >/dev/null 2>&1; then
+ if ! command -v python3 >/dev/null 2>&1; then
echo "Installing Python..."
- _install "python"
+ _install "python3"
fi
- if ! command -v pip >/dev/null 2>&1; then
+ if ! command -v pip3 >/dev/null 2>&1; then
echo "Installing Pip..."
- if ! command -v easy_install >/dev/null 2>&1; then
- _install "python-setuptools"
- fi
-
- if ! command -v easy_install >/dev/null 2>&1; then
- die "easy_install not available, can't install pip"
- fi
-
- $SUDO_CMD easy_install pip
+ _install "python3-pip"
fi
PIP_SUDO_CMD=
@@ -184,7 +176,7 @@ if [ -z $COMMON_SOURCED ]; then
PIP_SUDO_CMD=$SUDO_CMD
fi
- $PIP_SUDO_CMD pip install --src dependencies --pre -Ur $BOOTSTRAP_DIR/pip-requirements.txt
+ $PIP_SUDO_CMD pip3 install --src dependencies --pre -Ur $BOOTSTRAP_DIR/pip-requirements.txt
COMMON_SOURCED=1
fi
diff --git a/tests/script/bootstrap/pip-requirements.txt b/tests/script/bootstrap/pip-requirements.txt
index 8313187..205196f 100644
--- a/tests/script/bootstrap/pip-requirements.txt
+++ b/tests/script/bootstrap/pip-requirements.txt
@@ -1 +1 @@
-pyserial==2.7
+pyserial==3.4
diff --git a/tests/script/bootstrap/samd.sh b/tests/script/bootstrap/samd.sh
new file mode 100644
index 0000000..fdd50f5
--- /dev/null
+++ b/tests/script/bootstrap/samd.sh
@@ -0,0 +1,46 @@
+set -e
+BOOTSTRAP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+source $BOOTSTRAP_DIR/common.sh
+
+echo "Installing dependencies for building for the SAMD boards"
+
+# these extract to dirs without versions...
+SAMD_PACKAGE="samd-1.8.6"
+CMSIS_PACKAGE="CMSIS-4.5.0"
+CMSIS_ATMEL_PACKAGE="CMSIS-Atmel-1.2.0"
+
+if [ $OS == "mac" ]; then
+ TOOLCHAIN_PACKAGE="gcc-arm-none-eabi-7-2017-q4-major-mac"
+else
+ TOOLCHAIN_PACKAGE="gcc-arm-none-eabi-7-2017-q4-major-linux"
+fi
+
+ARDUINO_URL=https://downloads.arduino.cc
+TOOLCHAIN_URL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4
+
+EXTRACT_COMMAND="tar -xjf"
+
+_pushd $DEPENDENCIES_FOLDER
+if ! test -e $SAMD_PACKAGE
+then
+ echo "Downloading SAMD packages..."
+ download $ARDUINO_URL/cores/$SAMD_PACKAGE.tar.bz2 $SAMD_PACKAGE.tar.bz2
+ download $ARDUINO_URL/$CMSIS_PACKAGE.tar.bz2 $CMSIS_PACKAGE.tar.bz2
+ download $ARDUINO_URL/$CMSIS_ATMEL_PACKAGE.tar.bz2 $CMSIS_ATMEL_PACKAGE.tar.bz2
+ download $TOOLCHAIN_URL/$TOOLCHAIN_PACKAGE.tar.bz2 $TOOLCHAIN_PACKAGE.tar.bz2
+fi
+
+if ! test -d $SAMD_PACKAGE
+then
+ echo "Installing packages to local folder..."
+ $EXTRACT_COMMAND $SAMD_PACKAGE.tar.bz2
+ $EXTRACT_COMMAND $CMSIS_PACKAGE.tar.bz2
+ $EXTRACT_COMMAND $CMSIS_ATMEL_PACKAGE.tar.bz2
+ $EXTRACT_COMMAND $TOOLCHAIN_PACKAGE.tar.bz2
+ echo "SAMD support installed"
+fi
+
+_popd
+
+echo
+echo "${bldgreen}SAMD dependencies installed.$txtrst"
diff --git a/tests/script/runtests.sh b/tests/script/runtests.sh
index fd05c30..84fa4c5 100755
--- a/tests/script/runtests.sh
+++ b/tests/script/runtests.sh
@@ -1,13 +1,45 @@
#!/usr/bin/env bash
+SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
TESTS_DIR=examples
+export ARDMK_DIR="${ARDMK_DIR:-$SCRIPTS_DIR/../..}"
failures=()
+if [[ "$1" == "-q" ]]; then
+ QUIET=1
+fi
+
+runtest() {
+ if [[ $QUIET ]]; then
+ make $* TEST=1 > /dev/null 2>&1
+ else
+ output=`make $* TEST=1`
+ fi
+}
+
+run() {
+ if [[ $QUIET ]]; then
+ "$@" > /dev/null 2>&1
+ else
+ "$@"
+ fi
+}
+
+info() {
+ if [[ $QUIET ]]; then
+ return
+ fi
+
+ echo "$@"
+}
+
+run pushd $SCRIPTS_DIR/../..
+
# These examples cannot be tested easily at the moment as they require
# alternate cores. The MakefileExample doesn't actually contain any source code
# to compile.
-NON_TESTABLE_EXAMPLES=(ATtinyBlink MakefileExample TinySoftWareSerial BlinkOpenCM BlinkOpenCR BlinkTeensy BlinkNetworkRPi BlinkInAVRC MZeroBlink ZeroBlink DueBlink)
+NON_TESTABLE_EXAMPLES=(ATtinyBlink MakefileExample TinySoftWareSerial BlinkOpenCM BlinkOpenCR BlinkTeensy BlinkNetworkRPi BlinkInAVRC DueBlink)
for dir in $TESTS_DIR/*/
do
@@ -22,46 +54,47 @@ do
done
if ! $example_is_testable; then
- echo "Skipping non-testable example $example..."
+ info "Skipping non-testable example $example..."
continue
fi
- pushd $dir
- echo "Compiling $example..."
- make_output=`make clean TEST=1`
- make_output=`make TEST=1`
+ run pushd $dir
+ info "Compiling $example..."
+ runtest clean
+ runtest
+
if [[ $? -ne 0 ]]; then
failures+=("$example")
- echo "Example $example failed"
+ info "Example $example failed"
fi
- make_output=`make disasm TEST=1`
+ runtest disasm
if [[ $? -ne 0 ]]; then
failures+=("$example disasm")
- echo "Example $example disasm failed"
+ info "Example $example disasm failed"
fi
- make_output=`make generate_assembly TEST=1`
+ runtest generate_assembly
if [[ $? -ne 0 ]]; then
failures+=("$example generate_assembly")
- echo "Example $example generate_assembly failed"
+ info "Example $example generate_assembly failed"
fi
- make_output=`make symbol_sizes TEST=1`
+ runtest symbol_sizes
if [[ $? -ne 0 ]]; then
failures+=("$example symbol_sizes")
- echo "Example $example symbol_sizes failed"
+ info "Example $example symbol_sizes failed"
fi
- popd
-done
-
-for failure in "${failures[@]}"; do
- echo "Example $failure failed"
+ run popd
done
if [[ ${#failures[@]} -eq 0 ]]; then
echo "All tests passed."
else
- exit 1
+ for failure in "${failures[@]}"; do
+ echo "Example $failure failed"
+ done
+
+ exit 1
fi