Skip to content

Commit e80c085

Browse files
committed
Use a specific hardware/package_index_bundled.json. AVR core version to 1.6.13
Previously, during the build, the full package_index.json was downloaded and distributed with the Arduino IDE. This lead to a situation where it was difficult to test new AVR cores before publishing them to the public package_index.json. Now the bundled AVR core is specificed in the file: `hardware/package_index_bundled.json` this index is loaded from the IDE at startup and the package_index.json is overlayed on it. This should also solve part of #5143 (Repeatable builds and snapshots of package/library indexes)
1 parent 7008f6c commit e80c085

File tree

6 files changed

+167
-24
lines changed

6 files changed

+167
-24
lines changed

Diff for: arduino-core/src/cc/arduino/Constants.java

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class Constants {
3939
public static final String PREF_CONTRIBUTIONS_TRUST_ALL = "contributions.trust.all";
4040

4141
public static final String DEFAULT_INDEX_FILE_NAME = "package_index.json";
42+
public static final String BUNDLED_INDEX_FILE_NAME = "package_index_bundled.json";
4243
public static final List<String> PROTECTED_PACKAGE_NAMES = Arrays.asList("arduino", "Intel");
4344

4445
public static final String LIBRARY_DEVELOPMENT_FLAG_FILE = ".development";

Diff for: arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java

-4
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,4 @@ public String toString() {
141141
res += pack + "\n";
142142
return res;
143143
}
144-
145-
public void setTrusted() {
146-
getPackages().stream().forEach(pack -> pack.setTrusted(true));
147-
}
148144
}

Diff for: arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,21 @@ public ContributionsIndexer(File preferencesFolder, File builtInHardwareFolder,
8282

8383
public void parseIndex() throws Exception {
8484
File defaultIndexFile = getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME);
85+
File bundledIndexFile = new File(builtInHardwareFolder, Constants.BUNDLED_INDEX_FILE_NAME);
86+
87+
// Check main index signature
8588
if (!PreferencesData.getBoolean("allow_insecure_packages") && !signatureVerifier.isSigned(defaultIndexFile)) {
8689
throw new SignatureVerificationFailedException(Constants.DEFAULT_INDEX_FILE_NAME);
8790
}
88-
index = parseIndex(defaultIndexFile);
89-
index.setTrusted();
9091

92+
// Read bundled index and overlay the default index
93+
index = parseIndex(bundledIndexFile);
94+
mergeContributions(parseIndex(defaultIndexFile), defaultIndexFile);
95+
96+
// Set main and bundled indexes as trusted
97+
index.getPackages().forEach(pack -> pack.setTrusted(true));
98+
99+
// Overlay 3rd party indexes
91100
File[] indexFiles = preferencesFolder.listFiles(new TestPackageIndexFilenameFilter(new PackageIndexFilenameFilter(Constants.DEFAULT_INDEX_FILE_NAME)));
92101

93102
for (File indexFile : indexFiles) {
@@ -100,6 +109,7 @@ public void parseIndex() throws Exception {
100109
}
101110
}
102111

112+
// Fill tools and toolsDependency cross references
103113
List<ContributedPackage> packages = index.getPackages();
104114
Collection<ContributedPackage> packagesWithTools = packages.stream()
105115
.filter(input -> input.getTools() != null && !input.getTools().isEmpty())

Diff for: build/build.xml

+7-17
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
<!-- Main url for boards and libraries repository -->
1212
<property name="library_index_url" value="http://downloads.arduino.cc/libraries/library_index.json" />
13-
<property name="package_index_url" value="http://downloads.arduino.cc/packages/package_index.json" />
1413

1514
<!-- Sets properties for macosx/windows/linux depending on current system -->
1615
<condition property="platform" value="macosx-old">
@@ -274,7 +273,7 @@
274273
</loadfile>
275274

276275
<!-- figure out the latest AVR core version number in package_index.json -->
277-
<loadfile srcfile="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json" property="revision.avr.index">
276+
<loadfile srcfile="${staging_folder}/work/${staging_hardware_folder}/package_index_bundled.json" property="revision.avr.index">
278277
<filterchain>
279278
<tokenfilter>
280279
<linetokenizer />
@@ -286,7 +285,7 @@
286285
</loadfile>
287286

288287
<echo message="AVR Arduino core version in platform.txt is: ${revision.avr.platform}" />
289-
<echo message=" latest in index.json is: ${revision.avr.index}" />
288+
<echo message=" latest in package_index_bundled.json is: ${revision.avr.index}" />
290289
<condition property="revision.avr.ok">
291290
<or>
292291
<!-- fail build if -Drevision.check=enforce is set -->
@@ -295,8 +294,8 @@
295294
</or>
296295
</condition>
297296
<fail unless="revision.avr.ok">
298-
Mismatching versions for bundled AVR core and package_index.json.
299-
Please check your platform.txt and package_index.json.
297+
Mismatching versions for bundled AVR core and package_index_bundled.json.
298+
Please check your platform.txt and package_index_bundled.json.
300299
</fail>
301300

302301
<!-- figure out the IDE version number -->
@@ -1168,19 +1167,10 @@
11681167
</target>
11691168

11701169
<target name="package-library-index-json-bundle">
1171-
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}/../dist/"/>
1172-
1173-
<get src="${package_index_url}.gz"
1174-
dest="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.gz"
1175-
verbose="true" skipexisting="false" />
1176-
<gunzip src ="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.gz"
1177-
dest="${staging_folder}/work/${staging_hardware_folder}/../dist/"/>
1178-
<delete file="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.gz"/>
1179-
1180-
<get src="${package_index_url}.sig"
1181-
dest="${staging_folder}/work/${staging_hardware_folder}/../dist/package_index.json.sig"
1182-
verbose="true" skipexisting="false" />
1170+
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}"/>
1171+
<copy file="../hardware/package_index_bundled.json" tofile="${staging_folder}/work/${staging_hardware_folder}/package_index_bundled.json"/>
11831172

1173+
<mkdir dir="${staging_folder}/work/${staging_hardware_folder}/../dist/"/>
11841174
<get src="${library_index_url}.gz"
11851175
dest="${staging_folder}/work/${staging_hardware_folder}/../dist/library_index.json.gz"
11861176
verbose="true" skipexisting="false" />

Diff for: hardware/arduino/avr/platform.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
77

88
name=Arduino AVR Boards
9-
version=1.6.12
9+
version=1.6.13
1010

1111
# AVR compile variables
1212
# ---------------------

Diff for: hardware/package_index_bundled.json

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
{
2+
"packages": [
3+
{
4+
"name": "arduino",
5+
"maintainer": "Arduino",
6+
"websiteURL": "http://www.arduino.cc/",
7+
"email": "[email protected]",
8+
"help": {
9+
"online": "http://www.arduino.cc/en/Reference/HomePage"
10+
},
11+
"platforms": [
12+
{
13+
"name": "Arduino AVR Boards",
14+
"architecture": "avr",
15+
"version": "1.6.13",
16+
"category": "Arduino",
17+
"help": {
18+
"online": "http://www.arduino.cc/en/Reference/HomePage"
19+
},
20+
"url": "http://downloads.arduino.cc/cores/avr-1.6.13.tar.bz2",
21+
"archiveFileName": "avr-1.6.13.tar.bz2",
22+
"checksum": "SHA-256:617f458dd3507072b9a6f9fdc78888c66aa420a2fb081c4c1556598a2d69d643",
23+
"size": "4993644",
24+
"boards": [
25+
{"name": "Arduino Yún"},
26+
{"name": "Arduino/Genuino Uno"},
27+
{"name": "Arduino Diecimila"},
28+
{"name": "Arduino Nano"},
29+
{"name": "Arduino/Genuino Mega"},
30+
{"name": "Arduino MegaADK"},
31+
{"name": "Arduino Leonardo"},
32+
{"name": "Arduino/Genuino Micro"},
33+
{"name": "Arduino Esplora"},
34+
{"name": "Arduino Mini"},
35+
{"name": "Arduino Ethernet"},
36+
{"name": "Arduino Fio"},
37+
{"name": "Arduino BT"},
38+
{"name": "Arduino LilyPadUSB"},
39+
{"name": "Arduino Lilypad"},
40+
{"name": "Arduino Pro"},
41+
{"name": "Arduino ATMegaNG"},
42+
{"name": "Arduino Robot Control"},
43+
{"name": "Arduino Robot Motor"},
44+
{"name": "Arduino Gemma"}
45+
],
46+
"toolsDependencies": [
47+
{
48+
"packager": "arduino",
49+
"name": "avr-gcc",
50+
"version": "4.9.2-atmel3.5.3-arduino2"
51+
},
52+
{
53+
"packager": "arduino",
54+
"name": "avrdude",
55+
"version": "6.0.1-arduino5"
56+
}
57+
]
58+
}
59+
],
60+
"tools": [
61+
{
62+
"name": "avrdude",
63+
"version": "6.0.1-arduino5",
64+
"systems": [
65+
{
66+
"size": "267095",
67+
"checksum": "SHA-256:23ea1341dbc117ec067f2eb1a498ad2bdd7d11fff0143c00b2e018c39804f6b4",
68+
"host": "arm-linux-gnueabihf",
69+
"archiveFileName": "avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2",
70+
"url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2"
71+
},
72+
{
73+
"size": "264894",
74+
"checksum": "SHA-256:41af8d3b0a586853c8317b4fb5163ca0db594a1870ddf680fd988c42166fc3e5",
75+
"host": "i386-apple-darwin11",
76+
"archiveFileName": "avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2",
77+
"url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2"
78+
},
79+
{
80+
"size": "292629",
81+
"checksum": "SHA-256:d826cca7383461f7e8adde686372cf900e9cb3afd639555cf2d6c645b283a476",
82+
"host": "x86_64-linux-gnu",
83+
"archiveFileName": "avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2",
84+
"url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2"
85+
},
86+
{
87+
"size": "283121",
88+
"checksum": "SHA-256:5933d66927bce46ababa9b68a8b7f1d53f68c4f3ff7a5ce4b85d7cf4e6c6bfee",
89+
"host": "i686-linux-gnu",
90+
"archiveFileName": "avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2",
91+
"url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2"
92+
},
93+
{
94+
"size": "241634",
95+
"checksum": "SHA-256:41f667f1f6a0ab8df46b4ffacd023176dcdef331d6db3b74bddd37d18cca0a44",
96+
"host": "i686-mingw32",
97+
"archiveFileName": "avrdude-6.0.1-arduino5-i686-mingw32.zip",
98+
"url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i686-mingw32.zip"
99+
}
100+
]
101+
},
102+
{
103+
"name": "avr-gcc",
104+
"version": "4.9.2-atmel3.5.3-arduino2",
105+
"systems": [
106+
{
107+
"size": "27400889",
108+
"checksum": "SHA-256:77f300d519bc6b9a25df17b36cb303218e9a258c059b2f6bff8f71a0d8f96821",
109+
"host": "arm-linux-gnueabihf",
110+
"archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-armhf-pc-linux-gnu.tar.bz2",
111+
"url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-armhf-pc-linux-gnu.tar.bz2"
112+
},
113+
{
114+
"size": "27048070",
115+
"checksum": "SHA-256:311258af188defe24a4b341e4e1f4dc93ca6c80516d3e3b55a2fc07a7050248b",
116+
"host": "i386-apple-darwin11",
117+
"archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i386-apple-darwin11.tar.bz2",
118+
"url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i386-apple-darwin11.tar.bz2"
119+
},
120+
{
121+
"size": "43847945",
122+
"checksum": "SHA-256:f8e6ede8746c70be01ec79a30803277cd94360cc5b2e104762da0fbcf536fcc6",
123+
"host": "i686-mingw32",
124+
"archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-mingw32.zip",
125+
"url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-mingw32.zip"
126+
},
127+
{
128+
"size": "29292729",
129+
"checksum": "SHA-256:f108951e7c4dc90926d1fc76cc27549f6ea63c702a2bb7ff39647a19ae86ec68",
130+
"host": "i686-linux-gnu",
131+
"archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2",
132+
"url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2"
133+
},
134+
{
135+
"size": "29882960",
136+
"checksum": "SHA-256:3903a6d1bb9fdd91727e504b5993d5501f119bcb7f99f7aee98a2101e5629188",
137+
"host": "x86_64-linux-gnu",
138+
"archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2",
139+
"url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2"
140+
}
141+
]
142+
}
143+
]
144+
}
145+
]
146+
}

0 commit comments

Comments
 (0)