Try bash only examples build (#3164)
This commit is contained in:
parent
7a574399b1
commit
1b8c7e34f9
@ -1,8 +1,6 @@
|
|||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
language: python
|
language: python
|
||||||
python:
|
|
||||||
- "2.7"
|
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
|
@ -1,141 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# build.py — build a sketch using arduino-builder
|
|
||||||
#
|
|
||||||
# Wrapper script around arduino-builder which accepts some ESP8266-specific
|
|
||||||
# options and translates them into FQBN
|
|
||||||
#
|
|
||||||
# Copyright © 2016 Ivan Grokhotkov
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import argparse
|
|
||||||
import subprocess
|
|
||||||
import tempfile
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
def compile(tmp_dir, cache_dir, sketch, ide_path, f, args):
|
|
||||||
cmd = ide_path + '/arduino-builder '
|
|
||||||
cmd += '-compile -logger=human '
|
|
||||||
cmd += '-hardware "' + ide_path + '/hardware" '
|
|
||||||
if args.usr_path:
|
|
||||||
cmd += '-hardware "' + args.usr_path + '/hardware" '
|
|
||||||
if args.hardware_path:
|
|
||||||
for hw_dir in args.hardware_path:
|
|
||||||
cmd += '-hardware "' + hw_dir + '" '
|
|
||||||
cmd += '-tools "' + ide_path + '/tools-builder" '
|
|
||||||
if args.tools_path:
|
|
||||||
for tools_dir in args.tools_path:
|
|
||||||
cmd += '-tools "' + tools_dir + '" '
|
|
||||||
cmd += '-built-in-libraries "' + ide_path + '/libraries" '
|
|
||||||
if args.usr_path:
|
|
||||||
cmd += '-libraries "' + args.usr_path + '/libraries" '
|
|
||||||
if args.library_path:
|
|
||||||
for lib_dir in args.library_path:
|
|
||||||
cmd += '-libraries "' + lib_dir + '" '
|
|
||||||
cmd += '-fqbn={fqbn} '.format(**vars(args))
|
|
||||||
cmd += '-ide-version=10810 '
|
|
||||||
cmd += '-build-path "' + tmp_dir + '" '
|
|
||||||
cmd += '-warnings={warnings} '.format(**vars(args))
|
|
||||||
cmd += '-build-cache "' + cache_dir + '" '
|
|
||||||
if args.verbose:
|
|
||||||
cmd += '-verbose '
|
|
||||||
cmd += sketch
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
print('Building: ' + cmd, file=f)
|
|
||||||
|
|
||||||
cmds = cmd.split(' ')
|
|
||||||
p = subprocess.Popen(cmds, stdout=f, stderr=subprocess.STDOUT)
|
|
||||||
p.wait()
|
|
||||||
return p.returncode
|
|
||||||
|
|
||||||
def parse_args():
|
|
||||||
parser = argparse.ArgumentParser(description='Sketch build helper')
|
|
||||||
parser.add_argument('-v', '--verbose', help='Enable verbose output', action='store_true')
|
|
||||||
parser.add_argument('-i', '--ide_path', help='Arduino IDE path')
|
|
||||||
parser.add_argument('-b', '--build_path', help='Build directory')
|
|
||||||
parser.add_argument('-c', '--build_cache', help='Core Cache directory')
|
|
||||||
parser.add_argument('-u', '--usr_path', help='Arduino Home directory (holds your sketches, libraries and hardware)')
|
|
||||||
parser.add_argument('-f', '--fqbn', help='Arduino Board FQBN')
|
|
||||||
parser.add_argument('-l', '--library_path', help='Additional library path', action='append')
|
|
||||||
parser.add_argument('-d', '--hardware_path', help='Additional hardware path', action='append')
|
|
||||||
parser.add_argument('-t', '--tools_path', help='Additional tools path', action='append')
|
|
||||||
parser.add_argument('-w', '--warnings', help='Compilation warnings level', default='none', choices=['none', 'all', 'more', 'default'])
|
|
||||||
parser.add_argument('-o', '--output_binary', help='File name for output binary')
|
|
||||||
parser.add_argument('-k', '--keep', action='store_true', help='Don\'t delete temporary build directory')
|
|
||||||
parser.add_argument('sketch_path', help='Sketch file path')
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
def main():
|
|
||||||
args = parse_args()
|
|
||||||
|
|
||||||
ide_path = args.ide_path
|
|
||||||
if not ide_path:
|
|
||||||
ide_path = os.environ.get('ARDUINO_IDE_PATH')
|
|
||||||
if not ide_path:
|
|
||||||
print("Please specify Arduino IDE path via --ide_path option"
|
|
||||||
"or ARDUINO_IDE_PATH environment variable.", file=sys.stderr)
|
|
||||||
return 2
|
|
||||||
|
|
||||||
if not args.fqbn:
|
|
||||||
print("Please specify Arduino Board FQBN using the --fqbn option", file=sys.stderr)
|
|
||||||
return 3
|
|
||||||
|
|
||||||
sketch_path = args.sketch_path
|
|
||||||
|
|
||||||
tmp_dir = args.build_path
|
|
||||||
created_tmp_dir = False
|
|
||||||
if not tmp_dir:
|
|
||||||
tmp_dir = tempfile.mkdtemp()
|
|
||||||
created_tmp_dir = True
|
|
||||||
|
|
||||||
cache_dir = args.build_cache
|
|
||||||
created_cache_dir = False
|
|
||||||
if not cache_dir:
|
|
||||||
cache_dir = tempfile.mkdtemp()
|
|
||||||
created_cache_dir = True
|
|
||||||
|
|
||||||
output_name = tmp_dir + '/' + os.path.basename(sketch_path) + '.bin'
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
print("Sketch: ", sketch_path)
|
|
||||||
print("Build dir: ", tmp_dir)
|
|
||||||
print("Cache dir: ", cache_dir)
|
|
||||||
print("Output: ", output_name)
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
f = sys.stdout
|
|
||||||
else:
|
|
||||||
f = open(tmp_dir + '/build.log', 'w')
|
|
||||||
|
|
||||||
res = compile(tmp_dir, cache_dir, sketch_path, ide_path, f, args)
|
|
||||||
if res != 0:
|
|
||||||
return res
|
|
||||||
|
|
||||||
if args.output_binary is not None:
|
|
||||||
shutil.copy(output_name, args.output_binary)
|
|
||||||
|
|
||||||
if created_tmp_dir and not args.keep:
|
|
||||||
shutil.rmtree(tmp_dir, ignore_errors=True)
|
|
||||||
|
|
||||||
if created_cache_dir and not args.keep:
|
|
||||||
shutil.rmtree(cache_dir, ignore_errors=True)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(main())
|
|
@ -24,7 +24,7 @@ export ARDUINO_USR_PATH=$HOME/Arduino
|
|||||||
export EXAMPLES_PATH=$TRAVIS_BUILD_DIR/libraries
|
export EXAMPLES_PATH=$TRAVIS_BUILD_DIR/libraries
|
||||||
export EXAMPLES_BUILD_DIR=$HOME/build.tmp
|
export EXAMPLES_BUILD_DIR=$HOME/build.tmp
|
||||||
export EXAMPLES_CACHE_DIR=$HOME/cache.tmp
|
export EXAMPLES_CACHE_DIR=$HOME/cache.tmp
|
||||||
export EXAMPLES_BUILD_CMD="python $TRAVIS_BUILD_DIR/tools/ci/build-sketch.py -v -k -b $EXAMPLES_BUILD_DIR -c $EXAMPLES_CACHE_DIR -u $ARDUINO_USR_PATH -f $ARDUINO_BOARD_FQBN "
|
export EXAMPLES_BUILD_CMD="$ARDUINO_IDE_PATH/arduino-builder -compile -logger=human -core-api-version=\"10810\" -hardware \"$ARDUINO_IDE_PATH/hardware\" -hardware \"$ARDUINO_USR_PATH/hardware\" -tools \"$ARDUINO_IDE_PATH/tools-builder\" -built-in-libraries \"$ARDUINO_IDE_PATH/libraries\" -libraries \"$ARDUINO_USR_PATH/libraries\" -fqbn=$ARDUINO_BOARD_FQBN -warnings=\"all\" -build-cache \"$EXAMPLES_CACHE_DIR\" -build-path \"$EXAMPLES_BUILD_DIR\" -verbose"
|
||||||
export EXAMPLES_SIZE_BIN=$TRAVIS_BUILD_DIR/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-size
|
export EXAMPLES_SIZE_BIN=$TRAVIS_BUILD_DIR/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-size
|
||||||
|
|
||||||
function print_size_info()
|
function print_size_info()
|
||||||
|
Loading…
Reference in New Issue
Block a user