1
1
#! /bin/bash
2
2
#
3
3
4
+ # Extract next version from platform.txt
5
+ next=` sed -n -E ' s/version=([0-9.]+)/\1/p' ../platform.txt`
6
+
4
7
# Figure out how will the package be called
5
- ver=` git describe --tags --always`
8
+ ver=` git describe --exact-match`
9
+ if [ $? -ne 0 ]; then
10
+ # not tagged version; generate nightly package
11
+ date_str=` date +" %Y%m%d" `
12
+ is_nightly=1
13
+ plain_ver=" ${next} -nightly"
14
+ ver=" ${plain_ver} +${date_str} "
15
+ else
16
+ plain_ver=$ver
17
+ fi
18
+
6
19
package_name=esp8266-$ver
7
20
echo " Version: $ver "
8
21
echo " Package name: $package_name "
16
29
echo " Remote: $REMOTE_URL "
17
30
18
31
if [ -z " $PKG_URL " ]; then
19
- PKG_URL=" $REMOTE_URL /versions/$ver /$package_name .zip"
32
+ if [ -z " $PKG_URL_PREFIX " ]; then
33
+ PKG_URL_PREFIX=" $REMOTE_URL /versions/$ver "
34
+ fi
35
+ PKG_URL=" $PKG_URL_PREFIX /$package_name .zip"
20
36
fi
21
37
echo " Package: $PKG_URL "
22
-
23
- if [ -z " $DOC_URL " ]; then
24
- DOC_URL=" $REMOTE_URL /versions/$ver /doc/reference.html"
25
- fi
26
38
echo " Docs: $DOC_URL "
39
+
27
40
pushd ..
28
41
# Create directory for the package
29
42
outdir=package/versions/$ver /$package_name
@@ -37,6 +50,7 @@ cat << EOF > exclude.txt
37
50
.gitignore
38
51
.travis.yml
39
52
package
53
+ doc
40
54
EOF
41
55
# Also include all files which are ignored by git
42
56
git ls-files --other --directory >> exclude.txt
@@ -47,7 +61,7 @@ rm exclude.txt
47
61
# Get additional libraries (TODO: add them as git submodule or subtree?)
48
62
49
63
# SoftwareSerial library
50
- wget -q -O SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.1.0.zip
64
+ curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.1.0.zip
51
65
unzip -q SoftwareSerial.zip
52
66
rm -rf SoftwareSerial.zip
53
67
mv espsoftwareserial-* SoftwareSerial
@@ -71,7 +85,7 @@ $SED 's/recipe.hooks.core.prebuild.1.pattern.*//g' \
71
85
> $outdir /platform.txt
72
86
73
87
# Put core version and short hash of git version into core_version.h
74
- ver_define=` echo $ver | tr " [:lower:].- " " [:upper:]_" `
88
+ ver_define=` echo $plain_ver | tr " [:lower:].\055 " " [:upper:]_" `
75
89
echo Ver define: $ver_define
76
90
echo \# define ARDUINO_ESP8266_GIT_VER 0x` git rev-parse --short=8 HEAD 2> /dev/null` > $outdir /cores/esp8266/core_version.h
77
91
echo \# define ARDUINO_ESP8266_RELEASE_$ver_define >> $outdir /cores/esp8266/core_version.h
@@ -90,14 +104,49 @@ echo Size: $size
90
104
echo SHA-256: $sha
91
105
92
106
echo " Making package_esp8266com_index.json"
93
- cat $srcdir /package/package_esp8266com_index.template.json | \
94
- jq " .packages[0].platforms[0].version = \" $ver \" | \
107
+
108
+ jq_arg= " .packages[0].platforms[0].version = \" $ver \" | \
95
109
.packages[0].platforms[0].url = \" $PKG_URL \" |\
96
- .packages[0].platforms[0].archiveFileName = \" $package_name .zip\" |\
97
- .packages[0].platforms[0].checksum = \" SHA-256:$sha \" |\
98
- .packages[0].platforms[0].size = \" $size \" |\
99
- .packages[0].platforms[0].help.online = \" $DOC_URL \" " \
100
- > package_esp8266com_index.json
110
+ .packages[0].platforms[0].archiveFileName = \" $package_name .zip\" "
111
+
112
+ if [ -z " $is_nightly " ]; then
113
+ jq_arg=" $jq_arg |\
114
+ .packages[0].platforms[0].size = \" $size \" |\
115
+ .packages[0].platforms[0].checksum = \" SHA-256:$sha \" "
116
+ fi
117
+
118
+ if [ ! -z " $DOC_URL " ]; then
119
+ jq_arg=" $jq_arg |\
120
+ .packages[0].platforms[0].help.online = \" $DOC_URL \" "
121
+ fi
122
+
123
+ cat $srcdir /package/package_esp8266com_index.template.json | \
124
+ jq " $jq_arg " > package_esp8266com_index.json
125
+
126
+ # Get previous release name
127
+ curl --silent https://api.github.com/repos/esp8266/Arduino/releases > releases.json
128
+ # Previous final release (prerelase == false)
129
+ prev_release=$( jq -r ' . | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
130
+ # Previous release (possibly a pre-release)
131
+ prev_any_release=$( jq -r ' . | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
132
+ # Previous pre-release
133
+ prev_pre_release=$( jq -r ' . | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
134
+
135
+ echo " Previous release: $prev_release "
136
+ echo " Previous (pre-?)release: $prev_any_release "
137
+ echo " Previous pre-release: $prev_pre_release "
138
+
139
+ # Make all released versions available in one package (i.e. don't separate stable/staging versions)
140
+ base_ver=$prev_any_release
141
+
142
+ # Download previous release
143
+ echo " Downloading base package: $base_ver "
144
+ old_json=package_esp8266com_index_stable.json
145
+ curl -L -o $old_json " https://github.com/esp8266/Arduino/releases/download/${base_ver} /package_esp8266com_index.json"
146
+ new_json=package_esp8266com_index.json
147
+
148
+ set +e
149
+ python ../../merge_packages.py $new_json $old_json > tmp && mv tmp $new_json && rm $old_json
101
150
102
151
popd
103
152
popd
0 commit comments