|
| 1 | +#!/bin/bash |
| 2 | +# |
| 3 | + |
| 4 | +# Set REMOTE_URL environment variable to the address where the package will be |
| 5 | +# available for download. This gets written into package json file. |
| 6 | +if [ -z "$REMOTE_URL" ]; then |
| 7 | + REMOTE_URL="http://localhost:8000" |
| 8 | + echo "REMOTE_URL not defined, using default" |
| 9 | +fi |
| 10 | +echo "Remote: $REMOTE_URL" |
| 11 | + |
| 12 | +# Figure out how will the package be called |
| 13 | +ver=`git describe --tags --always` |
| 14 | +package_name=esp8266-$ver |
| 15 | +echo "Version: $ver" |
| 16 | +echo "Package name: $package_name" |
| 17 | + |
| 18 | +# Create directory for the package |
| 19 | +outdir=versions/$ver/$package_name |
| 20 | +srcdir=$PWD |
| 21 | +rm -rf versions/$ver |
| 22 | +mkdir -p $outdir |
| 23 | + |
| 24 | +# Some files should be excluded from the package |
| 25 | +cat << EOF > exclude.txt |
| 26 | +versions |
| 27 | +.git |
| 28 | +.gitignore |
| 29 | +.travis.yml |
| 30 | +build_boards_manager_package.sh |
| 31 | +EOF |
| 32 | +# Also include all files which are ignored by git |
| 33 | +git ls-files --other --ignored --exclude-standard --directory >> exclude.txt |
| 34 | +# Now copy files to $outdir |
| 35 | +rsync -a --exclude-from 'exclude.txt' $srcdir/ $outdir/ |
| 36 | +rm exclude.txt |
| 37 | + |
| 38 | +# Get additional libraries (TODO: add them as git submodule or subtree?) |
| 39 | +wget -q -O SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/38259afcab9c291dbb6216f827d9a3738abf1868.zip |
| 40 | +unzip -q SoftwareSerial.zip |
| 41 | +rm -rf SoftwareSerial.zip |
| 42 | +mv espsoftwareserial-* SoftwareSerial |
| 43 | +mv SoftwareSerial $outdir/libraries |
| 44 | + |
| 45 | +# For compatibility, on OS X we need GNU sed which is usually called 'gsed' |
| 46 | +if [ "$(uname)" == "Darwin" ]; then |
| 47 | + SED=gsed |
| 48 | +else |
| 49 | + SED=sed |
| 50 | +fi |
| 51 | + |
| 52 | +# Do some replacements in platform.txt file, which are required because IDE |
| 53 | +# handles tool paths differently when package is installed in hardware folder |
| 54 | +cat $srcdir/platform.txt | \ |
| 55 | +$SED 's/runtime.tools.xtensa-lx106-elf-gcc.path={runtime.platform.path}\/tools\/xtensa-lx106-elf//g' | \ |
| 56 | +$SED 's/runtime.tools.esptool.path={runtime.platform.path}\/tools\/esptool//g' | \ |
| 57 | +$SED 's/tools.esptool.path={runtime.platform.path}\/tools\/esptool/tools.esptool.path=\{runtime.tools.esptool.path\}/g' | \ |
| 58 | +$SED 's/tools.mkspiffs.path={runtime.platform.path}\/tools\/mkspiffs/tools.mkspiffs.path=\{runtime.tools.mkspiffs.path\}/g' \ |
| 59 | + > $outdir/platform.txt |
| 60 | + |
| 61 | +# Zip the package |
| 62 | +pushd versions/$ver |
| 63 | +echo "Making $package_name.zip" |
| 64 | +zip -qr $package_name.zip $package_name |
| 65 | +rm -rf $package_name |
| 66 | + |
| 67 | +# Calculate SHA sum and size |
| 68 | +sha=`shasum -a 256 $package_name.zip | cut -f 1 -d ' '` |
| 69 | +size=`/bin/ls -l $package_name.zip | awk '{print $5}'` |
| 70 | +echo Size: $size |
| 71 | +echo SHA-256: $sha |
| 72 | + |
| 73 | +echo "Making package_esp8266com_index.json" |
| 74 | +cat << EOF > package_esp8266com_index.json |
| 75 | +{ |
| 76 | + "packages": [ { |
| 77 | + "name":"esp8266", |
| 78 | + "maintainer":"ESP8266 Community", |
| 79 | + "websiteURL":"https://github.com/esp8266/Arduino", |
| 80 | + |
| 81 | + "help":{ |
| 82 | + "online":"$REMOTE_URL/versions/$ver/doc/reference.html" |
| 83 | + }, |
| 84 | +
|
| 85 | + "platforms": [ { |
| 86 | + "name":"esp8266", |
| 87 | + "architecture":"esp8266", |
| 88 | + "version":"$ver", |
| 89 | + "category":"ESP8266", |
| 90 | + "url":"$REMOTE_URL/versions/$ver/$package_name.zip", |
| 91 | + "archiveFileName":"$package_name.zip", |
| 92 | + "checksum":"SHA-256:$sha", |
| 93 | + "size":"$size", |
| 94 | + "help":{ |
| 95 | + "online":"$REMOTE_URL/versions/$ver/doc/reference.html" |
| 96 | + }, |
| 97 | + "boards":[ |
| 98 | + { |
| 99 | + "name":"Generic ESP8266 Module" |
| 100 | + }, |
| 101 | + { |
| 102 | + "name":"Olimex MOD-WIFI-ESP8266(-DEV)" |
| 103 | + }, |
| 104 | + { |
| 105 | + "name":"NodeMCU 0.9 (ESP-12 Module)" |
| 106 | + }, |
| 107 | + { |
| 108 | + "name":"NodeMCU 1.0 (ESP-12E Module)" |
| 109 | + }, |
| 110 | + { |
| 111 | + "name":"Adafruit HUZZAH ESP8266 (ESP-12)" |
| 112 | + }, |
| 113 | + { |
| 114 | + "name":"SparkFun Thing" |
| 115 | + }, |
| 116 | + { |
| 117 | + "name":"SweetPea ESP-210" |
| 118 | + } |
| 119 | + ], |
| 120 | + "toolsDependencies":[ { |
| 121 | + "packager":"esp8266", |
| 122 | + "name":"esptool", |
| 123 | + "version":"0.4.6" |
| 124 | + }, |
| 125 | + { |
| 126 | + "packager":"esp8266", |
| 127 | + "name":"xtensa-lx106-elf-gcc", |
| 128 | + "version":"1.20.0-26-gb404fb9-2" |
| 129 | + }, |
| 130 | + { |
| 131 | + "packager":"esp8266", |
| 132 | + "name":"mkspiffs", |
| 133 | + "version":"0.1.2" |
| 134 | + } ] |
| 135 | + } ], |
| 136 | + "tools": |
| 137 | +EOF |
| 138 | + |
| 139 | +cat $srcdir/tools/tools.json >> package_esp8266com_index.json |
| 140 | + |
| 141 | +cat << EOF >> package_esp8266com_index.json |
| 142 | + } ] |
| 143 | +} |
| 144 | +EOF |
| 145 | + |
| 146 | +popd |
0 commit comments