Skip to content

Commit 72fd128

Browse files
pacucha42me-no-dev
authored andcommitted
Arduino-ESP32 release management scripted (#1515)
* Calculate an absolute path for a custom partitions table (#1452) * * Arduino-ESP32 release management scripted (ready-to-merge) * * secure env for espressif/arduino-esp32 * * build tests enabled * gitter webhook enabled * * gitter room link fixed * better comment * * filepaths fixed
1 parent 0cd15b4 commit 72fd128

7 files changed

+695
-67
lines changed

Diff for: .travis.yml

+20-38
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,34 @@ python:
77
os:
88
- linux
99

10+
env:
11+
global:
12+
- secure: "l/4Dt+KQ/mACtGAHDUsPr66fUte840PZoQ4xpPikqWZI0uARu4l+Ym7+sHinnT6fBqrj8AJeBYGz4nFa8NK4LutZn9mSD40w+sxl0wSV4oHV8rzKe3Cd8+sMG3+o33yWoikMNjSvqa73Q0rm+SgrlInNdZbuAyixL+a2alaWSnGPm4F2xwUGj+S33TOy5P/Xp77CYtCV5S8vzyk/eEdNhoF0GYePJVdfuzCOUjXMyT5OWxORkzzQ7Hnn/Ka/RDfV8Si4HgujLQBrK5q6iPnNBFqBSqilYBepSMn4opnOBpIm0SCgePz7XQEFC83buA7GUcnCnfg38bf+dCwHaODf1d1PmqVRYt2QmfinexXtM4afAtL0iBUDtvrfnXHzwW9w82VeZhpbJSVh9DUQvB0IlsZeCz9J9PUBAi3N+SMX+9l+BomYwRUlPuKY+Ef2JKk9q6mxtUkky5R0daAlVxEhpVdQks1rT+T+NMoDMemxQ3SKEiqAHh6EgHecruszffmZ71uLX9MpERpew0qN+UFiafws+jkTjx+3yF9yut0Hf9sMbeAYzzkGzRqJTUEBJ6B29Cql8M0yRXCNN/8wuuTHhG8esstozga4ZQoIVrq7mEAgup376PTcNfr1+imbbWVQ7lJdYIuDe6OS5V3OX6np11vgK/DbhfyzvQv9Z1zAGnM="
13+
- REMOTE_URL=https://github.com/$TRAVIS_REPO_SLUG/releases/download/$TRAVIS_TAG
14+
1015
script:
11-
#- set -e
12-
- echo -e "travis_fold:start:sketch_test_env_prepare"
13-
- pip install pyserial
14-
- wget -O arduino.tar.xz https://www.arduino.cc/download.php?f=/arduino-nightly-linux64.tar.xz
15-
- tar xf arduino.tar.xz
16-
- mv arduino-nightly $HOME/arduino_ide
17-
- mkdir -p $HOME/Arduino/libraries
18-
- cd $HOME/arduino_ide/hardware
19-
- mkdir espressif
20-
- cd espressif
21-
- ln -s $TRAVIS_BUILD_DIR esp32
22-
- cd esp32
23-
- git submodule update --init --recursive
24-
- cd tools
25-
- python get.py
26-
- export PATH="$HOME/arduino_ide:$TRAVIS_BUILD_DIR/tools/xtensa-esp32-elf/bin:$PATH"
27-
- which arduino
28-
- cd $TRAVIS_BUILD_DIR
29-
- source tools/common.sh
30-
- echo -e "travis_fold:end:sketch_test_env_prepare"
31-
- echo -e "travis_fold:start:sketch_test"
32-
- build_sketches $HOME/arduino_ide $TRAVIS_BUILD_DIR/libraries "-l $HOME/Arduino/libraries"
33-
- echo -e "travis_fold:end:sketch_test"
34-
- echo -e "travis_fold:start:size_report"
35-
- cat size.log
36-
- echo -e "travis_fold:end:size_report"
16+
# run sketch tests
17+
- bash $TRAVIS_BUILD_DIR/tools/build-tests.sh
18+
19+
# zip the package if tagged build, otherwise finish here
20+
- bash $TRAVIS_BUILD_DIR/tools/build-release.sh -a$ESP32_GITHUB_TOKEN
21+
22+
deploy:
23+
provider: script
24+
skip_cleanup: true
25+
script: bash $TRAVIS_BUILD_DIR/tools/deploy.sh -t$TRAVIS_TAG -a$ESP32_GITHUB_TOKEN -s$TRAVIS_REPO_SLUG -drelease
26+
27+
on:
28+
tags: true
3729

38-
# test library examples with PlatformIO
39-
- echo -e "travis_fold:start:platformio_test_env_prepare"
40-
- pip install -U https://github.com/platformio/platformio/archive/develop.zip
41-
- platformio platform install https://github.com/platformio/platform-espressif32.git#feature/stage
42-
- sed -i 's/https:\/\/github\.com\/espressif\/arduino-esp32\.git/*/' ~/.platformio/platforms/espressif32/platform.json
43-
- ln -s $TRAVIS_BUILD_DIR ~/.platformio/packages/framework-arduinoespressif32
44-
- echo -e "travis_fold:end:platformio_test_env_prepare"
45-
- echo -e "travis_fold:start:platformio_test"
46-
- "python -c \"import glob,os,subprocess,sys; map(lambda p: (sys.stdout.write('Library example: %s\\n' % p), subprocess.call(['pio', 'ci', p, '--board', 'esp32dev'])), set([os.path.dirname(p) for p in glob.glob('libraries/*/examples/*/*.ino') + glob.glob('libraries/*/examples/*/*/*.ino')]))\""
47-
- echo -e "travis_fold:end:platformio_test"
4830

4931
notifications:
5032
email:
5133
on_success: change
5234
on_failure: change
5335
webhooks:
5436
urls:
55-
- https://webhooks.gitter.im/e/cb057279c430d91a47a8
37+
- https://webhooks.gitter.im/e/cb057279c430d91a47a8
5638
on_success: change # options: [always|never|change] default: always
5739
on_failure: always # options: [always|never|change] default: always
58-
on_start: false # default: false
40+
on_start: never # options: [always|never|change] default: always

Diff for: package/merge_packages.py

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/usr/bin/env python
2+
# This script merges two Arduino Board Manager package json files.
3+
# Usage:
4+
# python merge_packages.py package_esp8266com_index.json version/new/package_esp8266com_index.json
5+
# Written by Ivan Grokhotkov, 2015
6+
#
7+
from __future__ import print_function
8+
from distutils.version import LooseVersion
9+
import re
10+
import json
11+
import sys
12+
13+
def load_package(filename):
14+
pkg = json.load(open(filename))['packages'][0]
15+
print("Loaded package {0} from {1}".format(pkg['name'], filename), file=sys.stderr)
16+
print("{0} platform(s), {1} tools".format(len(pkg['platforms']), len(pkg['tools'])), file=sys.stderr)
17+
return pkg
18+
19+
def merge_objects(versions, obj):
20+
for o in obj:
21+
name = o['name'].encode('ascii')
22+
ver = o['version'].encode('ascii')
23+
if not name in versions:
24+
print("found new object, {0}".format(name), file=sys.stderr)
25+
versions[name] = {}
26+
if not ver in versions[name]:
27+
print("found new version {0} for object {1}".format(ver, name), file=sys.stderr)
28+
versions[name][ver] = o
29+
return versions
30+
31+
# Normalize ESP release version string (x.x.x) by adding '-rc<MAXINT>' (x.x.x-rc9223372036854775807) to ensure having REL above any RC
32+
# Dummy approach, functional anyway for current ESP package versioning (unlike NormalizedVersion/LooseVersion/StrictVersion & similar crap)
33+
def pkgVersionNormalized(versionString):
34+
35+
verStr = str(versionString)
36+
verParts = re.split('\.|-rc', verStr, flags=re.IGNORECASE)
37+
38+
if len(verParts) == 3:
39+
verStr = str(versionString) + '-rc' + str(sys.maxint)
40+
elif len(verParts) != 4:
41+
print("pkgVersionNormalized WARNING: unexpected version format: {0})".format(verStr), file=sys.stderr)
42+
43+
return verStr
44+
45+
46+
def main(args):
47+
if len(args) < 3:
48+
print("Usage: {0} <package1> <package2>".format(args[0]), file=sys.stderr)
49+
return 1
50+
51+
tools = {}
52+
platforms = {}
53+
pkg1 = load_package(args[1])
54+
tools = merge_objects(tools, pkg1['tools']);
55+
platforms = merge_objects(platforms, pkg1['platforms']);
56+
pkg2 = load_package(args[2])
57+
tools = merge_objects(tools, pkg2['tools']);
58+
platforms = merge_objects(platforms, pkg2['platforms']);
59+
60+
pkg1['tools'] = []
61+
pkg1['platforms'] = []
62+
63+
for name in tools:
64+
for version in tools[name]:
65+
print("Adding tool {0}-{1}".format(name, version), file=sys.stderr)
66+
pkg1['tools'].append(tools[name][version])
67+
68+
for name in platforms:
69+
for version in platforms[name]:
70+
print("Adding platform {0}-{1}".format(name, version), file=sys.stderr)
71+
pkg1['platforms'].append(platforms[name][version])
72+
73+
pkg1['platforms'] = sorted(pkg1['platforms'], key=lambda k: LooseVersion(pkgVersionNormalized(k['version'])), reverse=True)
74+
75+
json.dump({'packages':[pkg1]}, sys.stdout, indent=2)
76+
77+
if __name__ == '__main__':
78+
sys.exit(main(sys.argv))

Diff for: package/package_esp32_index.template.json

+26-26
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
{
4444
"packager": "esp32",
4545
"name": "mkspiffs",
46-
"version": "0.2.2"
46+
"version": "0.2.3"
4747
}
4848
]
4949
}
@@ -105,49 +105,49 @@
105105
},
106106
{
107107
"name": "mkspiffs",
108-
"version": "0.2.2",
108+
"version": "0.2.3",
109109
"systems": [
110110
{
111111
"host": "i686-mingw32",
112-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-win32.zip",
113-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-win32.zip",
114-
"checksum": "SHA-256:988baa2827005a20a7c7028f0c2d45d19df2e0a7d42319f4a7a5776a3f0dff2e",
115-
"size": "347207"
112+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip",
113+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-win32.zip",
114+
"checksum": "SHA-256:b647f2c2efe6949819c85ea9404271b55c7c9c25bcb98d3b98a1d0ba771adf56",
115+
"size": "249809"
116116
},
117117
{
118118
"host": "x86_64-apple-darwin",
119-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-osx.tar.gz",
120-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-osx.tar.gz",
121-
"checksum": "SHA-256:7aee138be9a73fe7fd1f75cf3f3695f0afae812d04fcbf74b17da330f66ae4cd",
122-
"size": "130211"
119+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
120+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
121+
"checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
122+
"size": "130270"
123123
},
124124
{
125125
"host": "i386-apple-darwin",
126-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-osx.tar.gz",
127-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-osx.tar.gz",
128-
"checksum": "SHA-256:7aee138be9a73fe7fd1f75cf3f3695f0afae812d04fcbf74b17da330f66ae4cd",
129-
"size": "130211"
126+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
127+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
128+
"checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
129+
"size": "130270"
130130
},
131131
{
132132
"host": "x86_64-pc-linux-gnu",
133-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-linux64.tar.gz",
134-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-linux64.tar.gz",
135-
"checksum": "SHA-256:17f89d9b38d4f68f2f03f7561b951d1d3b6d6f5b74d35b6d3eb8da3440be3400",
136-
"size": "50611"
133+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
134+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz",
135+
"checksum": "SHA-256:5e1a4ff41385e842f389f6b5254102a547e566a06b49babeffa93ef37115cb5d",
136+
"size": "50646"
137137
},
138138
{
139139
"host": "i686-pc-linux-gnu",
140-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-linux32.tar.gz",
141-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-linux32.tar.gz",
142-
"checksum": "SHA-256:181fca76210de04a23eb7af028d9886de5a73e638c63d351a691a24cfb9f03d3",
143-
"size": "48730"
140+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
141+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux32.tar.gz",
142+
"checksum": "SHA-256:464463a93e8833209cdc29ba65e1a12fec31718dc10075c195a2445b2c3f6cb0",
143+
"size": "48751"
144144
},
145145
{
146146
"host": "arm-linux-gnueabihf",
147-
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.2/mkspiffs-0.2.2-arduino-esp32-linux-armhf.tar.gz",
148-
"archiveFileName": "mkspiffs-0.2.2-arduino-esp32-linux-armhf.tar.gz",
149-
"checksum": "SHA-256:2e99cbdf5ee60b27d6ade096d4caf03a90edfd5f4edf4da2a8674d770aa4ca1b",
150-
"size": "40658"
147+
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
148+
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-linux-armhf.tar.gz",
149+
"checksum": "SHA-256:ade3dc00117912ac08a1bdbfbfe76b12d21a34bc5fa1de0cfc45fe7a8d0a0185",
150+
"size": "40665"
151151
}
152152
]
153153
}

0 commit comments

Comments
 (0)