Skip to content

Commit d460982

Browse files
author
Federico Fissore
committed
Macosx: new appbundler, new macosx builds. Use platform=macosx and platform=oldmacosx
1 parent d61568a commit d460982

File tree

5 files changed

+152
-54
lines changed

5 files changed

+152
-54
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ build/macosx/dist/*.tar.gz
2929
build/macosx/dist/*.tar.bz2
3030
build/macosx/libastylej*
3131
build/macosx/appbundler*.jar
32+
build/macosx/appbundler*.zip
33+
build/macosx/appbundler
3234
build/linux/work/
3335
build/linux/dist/*.tar.gz
3436
build/linux/dist/*.tar.bz2

app/src/processing/app/Editor.java

+2
Original file line numberDiff line numberDiff line change
@@ -2025,6 +2025,8 @@ protected boolean checkModified() {
20252025
// As of Processing 1.0.10, this always happens immediately.
20262026
// http://dev.processing.org/bugs/show_bug.cgi?id=1456
20272027

2028+
toFront();
2029+
20282030
String prompt = I18n.format(_("Save changes to \"{0}\"? "), sketch.getName());
20292031

20302032
if (!OSUtils.isMacOS()) {

arduino-core/src/processing/app/BaseNoGui.java

+5-17
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,7 @@
77
import java.io.FileWriter;
88
import java.io.IOException;
99
import java.io.InputStream;
10-
import java.util.ArrayList;
11-
import java.util.Arrays;
12-
import java.util.Date;
13-
import java.util.HashMap;
14-
import java.util.LinkedList;
15-
import java.util.List;
16-
import java.util.Map;
10+
import java.util.*;
1711
import java.util.logging.Level;
1812
import java.util.logging.Logger;
1913

@@ -170,19 +164,13 @@ static public PreferencesMap getBoardPreferences() {
170164
}
171165

172166
static public File getContentFile(String name) {
173-
String path = System.getProperty("user.dir");
167+
File path = new File(System.getProperty("user.dir"));
174168

175-
// Get a path to somewhere inside the .app folder
176169
if (OSUtils.isMacOS()) {
177-
// <key>javaroot</key>
178-
// <string>$JAVAROOT</string>
179-
String javaroot = System.getProperty("javaroot");
180-
if (javaroot != null) {
181-
path = javaroot;
182-
}
170+
path = new File(BaseNoGui.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParentFile();
183171
}
184-
File working = new File(path);
185-
return new File(working, name);
172+
173+
return new File(path, name);
186174
}
187175

188176
static public TargetPlatform getCurrentTargetPlatformFromPackage(String pack) {

build/build.xml

+142-37
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,33 @@
66

77
<!-- Sets properties for macosx/windows/linux depending on current system -->
88
<condition property="platform" value="macosx"><os family="mac" /></condition>
9+
<condition property="platform" value="oldmacosx">
10+
<and>
11+
<os family="mac" />
12+
<matches string="${os.version}" pattern="^10.[56]." />
13+
</and>
14+
</condition>
915
<condition property="platform" value="windows"><os family="windows" /></condition>
1016
<condition property="platform" value="linux32"><os family="unix" arch="i386" /></condition>
1117
<condition property="platform" value="linux64"><os family="unix" arch="amd64" /></condition>
1218

1319
<condition property="macosx"><equals arg1="${platform}" arg2="macosx" /></condition>
20+
<condition property="macosx"><equals arg1="${platform}" arg2="oldmacosx" /></condition>
21+
<condition property="oldmacosx"><equals arg1="${platform}" arg2="oldmacosx" /></condition>
1422
<condition property="windows"><equals arg1="${platform}" arg2="windows" /></condition>
1523
<condition property="linux32"><equals arg1="${platform}" arg2="linux32" /></condition>
1624
<condition property="linux64"><equals arg1="${platform}" arg2="linux64" /></condition>
1725
<condition property="linux"><equals arg1="${platform}" arg2="linux32" /></condition>
1826
<condition property="linux"><equals arg1="${platform}" arg2="linux64" /></condition>
1927

2028
<condition property="staging_folder" value="macosx"><equals arg1="${platform}" arg2="macosx" /></condition>
29+
<condition property="staging_folder" value="macosx"><equals arg1="${platform}" arg2="oldmacosx" /></condition>
2130
<condition property="staging_folder" value="windows"><equals arg1="${platform}" arg2="windows" /></condition>
2231
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linux32" /></condition>
2332
<condition property="staging_folder" value="linux"><equals arg1="${platform}" arg2="linux64" /></condition>
2433

25-
<condition property="staging_hardware_folder" value="Arduino.app/Contents/Resources/Java/hardware"><equals arg1="${platform}" arg2="macosx" /></condition>
34+
<condition property="staging_hardware_folder" value="Arduino.app/Contents/Java/hardware"><equals arg1="${platform}" arg2="macosx" /></condition>
35+
<condition property="staging_hardware_folder" value="Arduino.app/Contents/Resources/Java/hardware"><equals arg1="${platform}" arg2="oldmacosx" /></condition>
2636
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="windows" /></condition>
2737
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linux32" /></condition>
2838
<condition property="staging_hardware_folder" value="hardware"><equals arg1="${platform}" arg2="linux64" /></condition>
@@ -180,6 +190,8 @@
180190
<!-- Mac OS X -->
181191
<!-- - - - - - - - -->
182192

193+
<target name="oldmacosx-clean" depends="macosx-clean" description="Clean Mac OS X build"/>
194+
183195
<target name="macosx-clean" depends="subprojects-clean" description="Clean Mac OS X build">
184196
<delete dir="macosx/work" />
185197
<delete dir="macosx/working_dir" />
@@ -201,7 +213,7 @@
201213
<fail message="wrong platform (${os.name})" />
202214
</target>
203215

204-
<target name="macosx-build" if="macosx" depends="revision-check, macosx-checkos, subprojects-build" description="Build Mac OS X version">
216+
<target name="oldmacosx-build" if="macosx" depends="revision-check, macosx-checkos, subprojects-build" description="Build Mac OS X version">
205217
<mkdir dir="macosx/work" />
206218

207219
<!-- assemble the pde -->
@@ -220,6 +232,92 @@
220232
<fileset file="shared/revisions.txt" />
221233
</copy>
222234

235+
<antcall target="macosx-build-common"/>
236+
237+
<replace file="macosx/work/Arduino.app/Contents/Info.plist"
238+
token="VERSION" value="${version}" />
239+
<replace file="macosx/work/Arduino.app/Contents/Info.plist"
240+
token="REVISION" value="${revision}" />
241+
242+
</target>
243+
244+
<target name="macosx-build" if="macosx" depends="revision-check, macosx-checkos, subprojects-build" description="Build Mac OS X version">
245+
<antcall target="unzip">
246+
<param name="archive_file" value="${staging_folder}/appbundler-1.0ea.jar.zip" />
247+
<param name="archive_url" value="http://arduino.cc/download.php?f=/appbundler-1.0ea.jar.zip" />
248+
<param name="final_folder" value="${staging_folder}/appbundler" />
249+
<param name="dest_folder" value="${staging_folder}/appbundler" />
250+
</antcall>
251+
252+
<mkdir dir="${staging_folder}/work" />
253+
254+
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="${staging_folder}/appbundler/appbundler-1.0ea.jar"/>
255+
256+
<bundleapp outputDirectory="${staging_folder}/work"
257+
name="Arduino"
258+
displayName="Arduino"
259+
executableName="Arduino"
260+
identifier="cc.arduino.Arduino"
261+
signature="Pde1"
262+
icon="macosx/template.app/Contents/Resources/processing.icns"
263+
copyright="Arduino LLC"
264+
getInfo="${version}"
265+
shortVersion="${version}"
266+
version="${revision}"
267+
mainClassName="processing.app.Base"
268+
minimumsystem="10.7"
269+
highresolutioncapable="true">
270+
271+
<arch name="x86_64"/>
272+
<arch name="i386"/>
273+
274+
<classpath refid="runtime.jars"/>
275+
<classpath file="./macosx/template.app/Contents/Resources/Java/quaqua.jar"/>
276+
277+
<option value="-Dapple.awt.application.name=Arduino" />
278+
<option value="-Dapple.laf.useScreenMenuBar=true"/>
279+
<option value="-Dcom.apple.macos.use-file-dialog-packages=true"/>
280+
<option value="-Dcom.apple.smallTabs=true"/>
281+
282+
<!--
283+
<option value="-Dapple.awt.showGrowBox=false"/>
284+
<option value="-Dapple.awt.Antialiasing=false"/>
285+
<option value="-Dapple.awt.TextAntialiasing=true"/>
286+
<option value="-Dcom.apple.hwaccel=true"/>
287+
<option value="-Dapple.awt.graphics.UseQuartz=true"/>
288+
-->
289+
290+
<!--<option value="-Dcom.apple.macos.useScreenMenuBar=true"/>-->
291+
292+
<!-- Workaround since the icon parameter for bundleapp doesn't work -->
293+
<option value="-Xdock:icon=Contents/Resources/processing.icns"/>
294+
<option value="-Dcom.apple.mrj.application.apple.menu.about.name=Arduino"/>
295+
<option value="-Dfile.encoding=UTF-8"/>
296+
297+
<option value="-Xms128M"/>
298+
<option value="-Xmx256M"/>
299+
300+
<bundledocument extensions="ino,c,cpp,h"
301+
icon="macosx/template.app/Contents/Resources/pde.icns"
302+
name="Arduino Source File"
303+
role="Editor">
304+
</bundledocument>
305+
306+
</bundleapp>
307+
308+
<copy todir="${staging_folder}/work/${staging_hardware_folder}/../">
309+
<fileset dir="shared" includes="lib/**" />
310+
<fileset file="shared/revisions.txt" />
311+
<file file="macosx/template.app/Contents/Resources/Java/quaqua.jar"/>
312+
<fileset file="macosx/template.app/Contents/Resources/Java/libquaqua*" />
313+
</copy>
314+
315+
<antcall target="macosx-build-common"/>
316+
317+
</target>
318+
319+
<target name="macosx-build-common">
320+
223321
<!-- Unzip AVR tools -->
224322
<antcall target="unzip">
225323
<param name="archive_file" value="${staging_folder}/avr-toolchain-mac32-gcc-4.8.1.zip" />
@@ -228,28 +326,14 @@
228326
<param name="dest_folder" value="${staging_folder}/work/${staging_hardware_folder}/tools/avr" />
229327
</antcall>
230328

231-
<!--
232-
<exec executable="unzip">
233-
<arg value="-q" />
234-
<arg value="-n" />
235-
<arg value="-d" />
236-
<arg value="macosx/work/${staging_hardware_folder}" />
237-
<arg value="macosx/dist/tools-universal.zip" />
238-
</exec>
239-
240-
<copy todir="macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools/avr/avr/include/avr">
241-
<fileset file="macosx/dist/eeprom.h" />
242-
</copy>
243-
-->
244-
245329
<copy todir="macosx/work/${staging_hardware_folder}/tools/">
246330
<fileset file="macosx/dist/bossac" />
247331
</copy>
248332

249333
<chmod file="macosx/work/${staging_hardware_folder}/tools/bossac" perm="+x" />
250334

251335
<antcall target="assemble">
252-
<param name="target.path" value="macosx/work/Arduino.app/Contents/Resources/Java" />
336+
<param name="target.path" value="macosx/work/${staging_hardware_folder}/../" />
253337
</antcall>
254338

255339
<antcall target="untar">
@@ -272,17 +356,42 @@
272356
<param name="final_folder" value="${staging_folder}/libastylej" />
273357
<param name="dest_folder" value="${staging_folder}" />
274358
</antcall>
275-
<copy file="macosx/libastylej/libastylej.jnilib" todir="macosx/work/Arduino.app/Contents/Resources/Java/lib/" />
276-
<chmod perm="755" file="macosx/work/Arduino.app/Contents/Resources/Java/lib/libastylej.jnilib" />
359+
<copy file="macosx/libastylej/libastylej.jnilib" todir="macosx/work/${staging_hardware_folder}/../lib/" />
360+
<chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/libastylej.jnilib" />
361+
<copy file="macosx/libastylej/libastylej.jnilib" tofile="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" />
362+
<chmod perm="755" file="macosx/work/${staging_hardware_folder}/../lib/libastylej.dylib" />
363+
364+
<chmod perm="+x">
365+
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/bin" includes="**/*" />
366+
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/avr/bin" includes="**/*" />
367+
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/libexec/gcc/avr/4.8.1/" includes="*" />
368+
</chmod>
369+
370+
</target>
371+
372+
<target name="oldmacosx-run" depends="oldmacosx-build" description="Run Mac OS X version">
373+
<antcall target="macosx-run-common"/>
277374
</target>
278375

279376
<target name="macosx-run" depends="macosx-build" description="Run Mac OS X version">
377+
<antcall target="macosx-run-common"/>
378+
</target>
379+
380+
<target name="oldmacosx-debug" depends="oldmacosx-build" description="Run Mac OS X version">
381+
<antcall target="macosx-debug-common"/>
382+
</target>
383+
384+
<target name="macosx-debug" depends="macosx-build" description="Run Mac OS X version">
385+
<antcall target="macosx-debug-common"/>
386+
</target>
387+
388+
<target name="macosx-run-common">
280389
<exec executable="open" dir="macosx/work">
281390
<arg value="Arduino.app"/>
282391
</exec>
283392
</target>
284393

285-
<target name="macosx-debug" depends="macosx-build" description="Run Mac OS X version">
394+
<target name="macosx-debug-common">
286395
<exec executable="open" dir="macosx/work" spawn="false">
287396
<arg value="Arduino.app"/>
288397
</exec>
@@ -343,32 +452,28 @@
343452
<!-- - - - - - - - - - - - - - - - - - - -->
344453
<!-- Build distribution file for MacOSX. -->
345454
<!-- - - - - - - - - - - - - - - - - - - -->
346-
<target name="macosx-dist" if="macosx" depends="macosx-build" description="Create a downloadable .zip for the Mac OS X version">
347-
<!-- The ant copy command does not preserve permissions. -->
348-
<chmod file="macosx/work/Arduino.app/Contents/MacOS/JavaApplicationStub" perm="+x" />
349-
<chmod perm="+x">
350-
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/bin" includes="**/*" />
351-
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/avr/bin" includes="**/*" />
352-
<fileset dir="macosx/work/${staging_hardware_folder}/tools/avr/libexec/gcc/avr/4.8.1/" includes="*" />
353-
</chmod>
455+
<target name="oldmacosx-dist" if="macosx" depends="oldmacosx-build" description="Create a downloadable .zip for the Mac OS X version">
456+
<antcall target="macosx-dist-common">
457+
<param name="custom_platform" value="macosx"/>
458+
</antcall>
459+
</target>
354460

355-
<replace file="macosx/work/Arduino.app/Contents/Info.plist"
356-
token="VERSION" value="${version}" />
357-
<replace file="macosx/work/Arduino.app/Contents/Info.plist"
358-
token="REVISION" value="${revision}" />
461+
<target name="macosx-dist" if="macosx" depends="macosx-build" description="Create a downloadable .zip for the Mac OS X version">
462+
<antcall target="macosx-dist-common">
463+
<param name="custom_platform" value="macosx-new"/>
464+
</antcall>
465+
</target>
359466

467+
<target name="macosx-dist-common">
360468
<exec executable="zip" dir="macosx/work">
361-
<arg line="-q -r ../arduino-${version}-${platform}.zip ." />
469+
<arg line="-q -r ../arduino-${version}-${custom_platform}.zip ." />
362470
</exec>
363-
<!-- <exec executable="ditto" dir="macosx/work">
364-
<arg line="-c -k -rsrc . ../arduino-${version}-macosx.zip" />
365-
</exec> -->
366471

367472
<echo>
368473
=======================================================
369474
Arduino for Mac OS X was built. Grab the image from
370475

371-
macosx/arduino-${version}-${platform}.zip
476+
macosx/arduino-${version}-${custom_platform}.zip
372477
=======================================================
373478
</echo>
374479
</target>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
28b3ccde1631791575a11f73e5fd0097df566fe2

0 commit comments

Comments
 (0)