changeset 1471:613ecf033e1a

Deprecated shell launchers, added skeleton for future rust launcher * Makefile.am: launchers and desktop files gathered to variable, filled according to configure, iffed out deprecated shell launchers, added build stubs for rustc calls * configure.ac: added switch --enable-shell-launchers to enable build of legacy shell launchers. Note, that when installed, those launchers will have .sh suffix added check for rustc - Mandatory without shell launchers, only optional with. * rust-launcher/launchers.rs: new, stub for native launchers * shell-launcher/launchers.bat.in: renamed from launcher/launchers.bat.in * shell-launcher/launchers.sh.in: renamed from launcher/launchers.in
author Jiri Vanek <jvanek@redhat.com>
date Fri, 03 Nov 2017 10:09:44 +0100
parents 676a6ba5bc31
children 4736ea4306a1
files ChangeLog Makefile.am configure.ac launcher/launchers.bat.in launcher/launchers.in rust-launcher/launchers.rs shell-launcher/launchers.bat.in shell-launcher/launchers.sh.in
diffstat 8 files changed, 407 insertions(+), 314 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Sep 25 18:05:33 2017 +0200
+++ b/ChangeLog	Fri Nov 03 10:09:44 2017 +0100
@@ -1,3 +1,16 @@
+2017-11-02  Jiri Vanek <jvanek@redhat.com>
+
+	Deprecated shell launchers, added skeleton for future rust launcher
+	* Makefile.am: launchers and desktop files gathered to variable, filled according to configure
+	iffed out deprecated shell launchers, added build stubs for rustc calls
+	* configure.ac: added switch --enable-shell-launchers to enable build of legacy shell launchers.
+	note, that when installed, those launchers will have .sh suffix
+	added check for rustc - Mandatory without shell launchers, only optional with.
+	* rust-launcher/launchers.rs: new, stub for native launchers
+	* shell-launcher/launchers.bat.in: renamed from launcher/launchers.bat.in
+	* shell-launcher/launchers.sh.in: renamed from launcher/launchers.in
+
+
 2017-09-25  Jiri Vanek <jvanek@redhat.com>
             Tomáš Votava <tomcacolca@gmail.com>
 
--- a/Makefile.am	Mon Sep 25 18:05:33 2017 +0200
+++ b/Makefile.am	Fri Nov 03 10:09:44 2017 +0100
@@ -29,6 +29,32 @@
 	WIN_LAUNCHERS=
 endif
 
+if ENABLE_SHELL_LAUNCHERS
+	SHELL_LUNCHERS=$(WIN_LAUNCHERS) launcher.build/$(javaws).sh launcher.build/$(itweb_settings).sh launcher.build/$(policyeditor).sh
+else
+	SHELL_LUNCHERS=
+endif
+
+
+if ENABLE_NATIVE_LAUNCHERS
+	NATIVE_LUNCHERS=launcher.build/$(javaws) launcher.build/$(itweb_settings) launcher.build/$(policyeditor)
+	DESKTOP_SUFFIX=
+else
+	NATIVE_LUNCHERS=
+	DESKTOP_SUFFIX=.sh
+endif
+
+# javaws is program name, JAVAWS is used executable name. in 99.9% those are equals.
+# in unsupported case (no rust, and enforced shell lunchers), it will become javaws.sh.
+# similar case is for other two binaries. 
+JAVAWS=$(javaws)$(DESKTOP_SUFFIX)
+ITWEB_SETTINGS=$(itweb_settings)$(DESKTOP_SUFFIX)
+POLICYEDITOR=$(policyeditor)$(DESKTOP_SUFFIX)
+
+LAUNCHERS=$(NATIVE_LUNCHERS) $(SHELL_LUNCHERS)
+DESKTOP_FILES=javaws.desktop itweb-settings.desktop policyeditor.desktop
+DESKTOP_IN_FILES=javaws.desktop.in itweb-settings.desktop.in policyeditor.desktop.in
+
 export WIN_INSTALLER_DIR = $(TOP_BUILD_DIR)/win-installer.build
 export WIN_INSTALLER_SRC_DIR = $(TOP_SRC_DIR)/win-installer
 export NETX_DIR = $(TOP_BUILD_DIR)/netx.build
@@ -253,12 +279,12 @@
 
 export PLUGIN_VERSION = IcedTea-Web $(FULL_VERSION)
 
-export EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in policyeditor.desktop.in $(top_srcdir)/completion \
- itweb-settings.desktop.in launcher $(top_srcdir)/tests html-gen.sh NEW_LINE_IFS $(top_srcdir)/metadata.in
+export EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png $(DESKTOP_IN_FILES) $(top_srcdir)/completion \
+ launcher $(top_srcdir)/tests html-gen.sh NEW_LINE_IFS $(top_srcdir)/metadata.in
 
 # reproducers `D`shortcuts
 export DTEST_SERVER=-Dtest.server.dir=$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)
-export DJAVAWS_BUILD=-Djavaws.build.bin=$(DESTDIR)$(bindir)/$(javaws)
+export DJAVAWS_BUILD=-Djavaws.build.bin=$(DESTDIR)$(bindir)/$(JAVAWS)
 export DBROWSERS=-Dused.browsers=$(FIREFOX):$(CHROMIUM):$(CHROME):$(OPERA):$(MIDORI):$(EPIPHANY)
 export REPRODUCERS_DPARAMETERS= $(DTEST_SERVER) $(DJAVAWS_BUILD) $(DBROWSERS) $(BROWSER_TESTS_MODIFICATION)
 # end of `D`shortcuts
@@ -294,8 +320,7 @@
 # =================
 
 all-local: stamps/netx-dist.stamp stamps/plugin.stamp stamps/docs.stamp \
- $(WIN_LAUNCHERS) \
- launcher.build/$(javaws) javaws.desktop launcher.build/$(itweb_settings) itweb-settings.desktop launcher.build/$(policyeditor) policyeditor.desktop
+ $(LAUNCHERS) $(DESKTOP_FILES)
 
 
 check-local: $(RHINO_TESTS) $(JUNIT_TESTS)
@@ -323,14 +348,21 @@
 	${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar
 	${INSTALL_DATA} $(NETX_SRCDIR)/javaws_splash.png $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/javaws_splash.png
 	${INSTALL_DATA} $(TOP_SRC_DIR)/javaws.png $(ICONS_DEST_DIR)/
+if ENABLE_NATIVE_LAUNCHERS
 	${INSTALL_PROGRAM} launcher.build/$(javaws) $(DESTDIR)$(bindir)
 	${INSTALL_PROGRAM} launcher.build/$(itweb_settings) $(DESTDIR)$(bindir)
 	${INSTALL_PROGRAM} launcher.build/$(policyeditor) $(DESTDIR)$(bindir)
+endif
+if ENABLE_SHELL_LAUNCHERS
+	${INSTALL_PROGRAM} launcher.build/$(javaws).sh $(DESTDIR)$(bindir)
+	${INSTALL_PROGRAM} launcher.build/$(itweb_settings).sh $(DESTDIR)$(bindir)
+	${INSTALL_PROGRAM} launcher.build/$(policyeditor).sh $(DESTDIR)$(bindir)
 if WINDOWS
 	${INSTALL_PROGRAM} launcher.build/$(javaws).bat $(DESTDIR)$(bindir)
 	${INSTALL_PROGRAM} launcher.build/$(itweb_settings).bat $(DESTDIR)$(bindir)
 	${INSTALL_PROGRAM} launcher.build/$(policyeditor).bat $(DESTDIR)$(bindir)
 endif
+endif
 	${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/itweb-settings.bash $(BASH_CMPL_DEST_DIR)/
 	${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/javaws.bash $(BASH_CMPL_DEST_DIR)/
 	${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/policyeditor.bash $(BASH_CMPL_DEST_DIR)/
@@ -486,7 +518,7 @@
 	   $(DEFS) $(VERSION_DEFS) \
 	  -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
 	  -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \
-	  -DJAVAWS_BIN="\"$(bindir)/$(javaws)\"" \
+	  -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \
 	  -DJAVAWS_NAME="\"$(javaws)\"" \
 	  -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
 	  -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
@@ -541,7 +573,7 @@
 	   $(DEFS) $(VERSION_DEFS) \
 	  -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
 	  -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \
-	  -DJAVAWS_BIN="\"$(bindir)/$(javaws)\"" \
+	  -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \
 	  -DJAVAWS_NAME="\"$(javaws)\"" \
 	  -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
 	  -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
@@ -816,30 +848,48 @@
 clean-desktop-files:
 	rm -f javaws.desktop
 	rm -f itweb-settings.desktop
+	rm -f policyeditor.desktop
 
-launcher.build/$(javaws): launcher/launchers.in
+
+if ENABLE_NATIVE_LAUNCHERS
+launcher.build/$(javaws): rust-launcher/launchers.rs
+	mkdir -p launcher.build
+	$(RUSTC) -o $@ $<
+
+launcher.build/$(itweb_settings): rust-launcher/launchers.rs
+	mkdir -p launcher.build
+	$(RUSTC) -o $@ $<
+
+launcher.build/$(policyeditor): rust-launcher/launchers.rs
+	mkdir -p launcher.build
+	$(RUSTC) -o $@ $<
+endif
+
+if ENABLE_SHELL_LAUNCHERS
+launcher.build/$(javaws).sh: shell-launcher/launchers.sh.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ;\
-	BIN_LOCATION=$(bindir)/$(javaws) ;\
+	BIN_LOCATION=$(bindir)/$(javaws).sh ;\
 	PROGRAM_NAME=$(javaws) ;\
 	$(edit_launcher_script) < $< > $@
 
-launcher.build/$(itweb_settings): launcher/launchers.in
+launcher.build/$(itweb_settings).sh: shell-launcher/launchers.sh.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ;\
-	BIN_LOCATION=$(bindir)/$(itweb_settings) ;\
+	BIN_LOCATION=$(bindir)/$(itweb_settings).sh ;\
 	PROGRAM_NAME=$(itweb_settings) ;\
 	$(edit_launcher_script) < $< > $@
 
-launcher.build/$(policyeditor): launcher/launchers.in
+launcher.build/$(policyeditor).sh: shell-launcher/launchers.sh.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ;\
-	BIN_LOCATION=$(bindir)/$(policyeditor) ;\
+	BIN_LOCATION=$(bindir)/$(policyeditor).sh ;\
 	PROGRAM_NAME=$(policyeditor) ;\
 	$(edit_launcher_script) < $< > $@
 
+if WINDOWS
 # TODO get rid of this copypaste
-launcher.build/$(javaws).bat: launcher/launchers.bat.in
+launcher.build/$(javaws).bat: shell-launcher/launchers.bat.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ;\
 	BIN_LOCATION=$(bindir)/$(javaws) ;\
@@ -848,7 +898,7 @@
 
 
 # TODO get rid of this copypaste
-launcher.build/$(itweb_settings).bat: launcher/launchers.bat.in
+launcher.build/$(itweb_settings).bat: shell-launcher/launchers.bat.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ;\
 	BIN_LOCATION=$(bindir)/$(itweb_settings) ;\
@@ -856,35 +906,44 @@
 	$(edit_launcher_script) < $< > $@
 
 # TODO get rid of this copypaste
-launcher.build/$(policyeditor).bat: launcher/launchers.bat.in
+launcher.build/$(policyeditor).bat: shell-launcher/launchers.bat.in
 	mkdir -p launcher.build
 	MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ;\
 	BIN_LOCATION=$(bindir)/$(policyeditor) ;\
 	PROGRAM_NAME=$(policyeditor) ;\
 	$(edit_launcher_script) < $< > $@
+endif
+endif
 
 clean-launchers:
+if ENABLE_NATIVE_LAUNCHERS
 	rm -f launcher.build/$(javaws)
 	rm -f launcher.build/$(itweb_settings)
 	rm -f launcher.build/$(policyeditor)
+endif
+if ENABLE_SHELL_LAUNCHERS
+	rm -f launcher.build/$(javaws).sh
+	rm -f launcher.build/$(itweb_settings).sh
+	rm -f launcher.build/$(policyeditor).sh
 if WINDOWS
 	rm -f launcher.build/$(javaws).bat
 	rm -f launcher.build/$(itweb_settings).bat
 	rm -f launcher.build/$(policyeditor).bat
 endif
+endif
 	if [ -e launcher.build ] ; then \
 	  rmdir launcher.build ; \
 	fi
 
 javaws.desktop: javaws.desktop.in
-	sed "s#PATH_TO_JAVAWS#$(bindir)/$(javaws)#" < $(srcdir)/javaws.desktop.in > javaws.desktop
+	sed "s#PATH_TO_JAVAWS#$(bindir)/$(JAVAWS)#" < $(srcdir)/javaws.desktop.in > javaws.desktop
 
 itweb-settings.desktop: $(srcdir)/itweb-settings.desktop.in
-	sed "s#PATH_TO_ITWEB_SETTINGS#$(bindir)/$(itweb_settings)#" \
+	sed "s#PATH_TO_ITWEB_SETTINGS#$(bindir)/$(ITWEB_SETTINGS)#" \
 	  < $(srcdir)/itweb-settings.desktop.in > itweb-settings.desktop
 
 policyeditor.desktop: $(srcdir)/policyeditor.desktop.in
-	sed 's#PATH_TO_POLICYEDITOR#$(bindir)/$(policyeditor)#' \
+	sed "s#PATH_TO_POLICYEDITOR#$(bindir)/$(POLICYEDITOR)#" \
 	< $(srcdir)/policyeditor.desktop.in > policyeditor.desktop
 
 # documentation
@@ -1247,8 +1306,8 @@
 	done ; \
 	echo $$class_names > $(REPRODUCERS_CLASS_NAMES)
 
-stamps/run-netx-dist-tests.stamp: stamps/netx-dist.stamp stamps/plugin.stamp launcher.build/$(javaws) \
- javaws.desktop stamps/docs.stamp launcher.build/$(itweb_settings) itweb-settings.desktop launcher.build/$(policyeditor) policyeditor.desktop \
+stamps/run-netx-dist-tests.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/docs.stamp \
+ $(LAUNCHERS) $(DESKTOP_FILES) \
  stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
  stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp\
  $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp
@@ -1294,7 +1353,7 @@
 #icedtea-web plugin inside browser it is intended for testing purposes
 if ENABLE_NATIVE_PLUGIN
 stamps/user-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp \
- launcher.build/$(javaws) stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) 
+ $(LAUNCHERS) stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)
 	if [ $(MOZILLA_FAMILY_TEST) ]  ; then  \
 	  if [ -e $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ] ; then \
 	    mv -f $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME)  $(MOZILLA_LOCAL_BACKUP_FILE) ; \
@@ -1323,7 +1382,7 @@
 	  rm -f stamps/user-links.stamp ; \
 	fi
 
-stamps/global-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp launcher.build/$(javaws) \
+stamps/global-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp $(LAUNCHERS) \
  stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)
 	if [ $(MOZILLA_FAMILY_TEST) ]  ; then  \
 	    dir="$(MOZILLA_GLOBAL32_PLUGINDIR)"  ; \
@@ -1499,7 +1558,7 @@
 	   $(DEFS) $(VERSION_DEFS) \
 	  -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
 	  -DPLUGIN_NAME="\"IcedTea-Web Plugin with jacoco coverage agent\"" \
-	  -DJAVAWS_BIN="\"$(bindir)/$(javaws)\"" \
+	  -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \
 	  -DJAVAWS_NAME="\"$(javaws)\"" \
 	  -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
 	  -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
@@ -1535,13 +1594,13 @@
 	for file in $(COVERAGE_MODIFIED_FILES) ; do \
 	  mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
 	done ;\
-	echo "backuping javaws in $(DESTDIR)$(bindir)" ; \
+	echo "backuping $(JAVAWS) in $(DESTDIR)$(bindir)" ; \
 	javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \
-	mv $(DESTDIR)$(bindir)/javaws $$javaws_backup ;  \
-	echo "patching $(javaws)" ; \
+	mv $(DESTDIR)$(bindir)/$(JAVAWS) $$javaws_backup ;  \
+	echo "patching $(JAVAWS)" ; \
 	nw_bootclasspath="-Xbootclasspath/a:$(UNIFIED_JACOCO_CLASSPATH)" ; \
-	cat $$javaws_backup | sed "s|COMMAND.k.=\"..JAVA.\"|COMMAND[k]=\"\\$$\\{JAVA\\}\" ;  k=1 ; COMMAND[k]=$(JACOCO_AGENT_JAVAWS_SWITCH)|" | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(javaws) ; \
-	chmod 777 $(DESTDIR)$(bindir)/$(javaws) ; \
+	cat $$javaws_backup | sed "s|COMMAND.k.=\"..JAVA.\"|COMMAND[k]=\"\\$$\\{JAVA\\}\" ;  k=1 ; COMMAND[k]=$(JACOCO_AGENT_JAVAWS_SWITCH)|" | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(JAVAWS) ; \
+	chmod 777 $(DESTDIR)$(bindir)/$(JAVAWS) ; \
 	echo "backuping plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
 	plugin_backup=$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)_backup ; \
 	mv $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $$plugin_backup ;  \
@@ -1587,9 +1646,9 @@
 	  --input-srcs  $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java  $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) $(TEST_EXTENSIONS_TESTS_SRCDIR) "$${testcases_srcs[@]}" \
 	  --input-builds $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar  $(JUNIT_RUNNER_JAR)  $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_TESTS_DIR) \
 	  --title "IcedTea-Web reproducers-tests codecoverage" ; \
-	echo "restoring javaws in $(DESTDIR)$(bindir)" ; \
+	echo "restoring $(JAVAWS) in $(DESTDIR)$(bindir)" ; \
 	rm -f $(DESTDIR)$(bindir)/$(javaws);  \
-	mv $$javaws_backup $(DESTDIR)$(bindir)/$(javaws);  \
+	mv $$javaws_backup $(DESTDIR)$(bindir)/$(JAVAWS);  \
 	echo "restoring  plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
 	mv $$plugin_backup $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \
 	for file in $(COVERAGE_MODIFIED_FILES) ; do \
--- a/configure.ac	Mon Sep 25 18:05:33 2017 +0200
+++ b/configure.ac	Fri Nov 03 10:09:44 2017 +0100
@@ -41,6 +41,24 @@
     AC_MSG_ERROR([/bin/bash is used in runtime and for about generation. Dying sooner rather then later])
 fi
 
+AC_MSG_CHECKING([whether build legacy shell launchers])
+AC_ARG_ENABLE([shell-launchers],
+	      [AS_HELP_STRING([--enable-shell-launchers],
+	      		      [Enable build of legacy shell launchers])],
+	      [ENABLE_SHELL_LAUNCHERS="${enableval}"], [ENABLE_SHELL_LAUNCHERS='no'])
+AM_CONDITIONAL([ENABLE_SHELL_LAUNCHERS], [test x$ENABLE_SHELL_LAUNCHERS = xyes])
+AC_MSG_RESULT(${ENABLE_SHELL_LAUNCHERS})
+
+AC_PATH_PROG([RUSTC], [rustc],,)
+if test x"$RUSTC" = x ; then
+  if test x${ENABLE_SHELL_LAUNCHERS} = xno ; then
+    AC_MSG_ERROR([rust is used to compile lunchers. No go])
+  else
+    echo "rust is used to compile lunchers, is missing but you have enable-shell-launchers as yes, continuing with UNAMAINTAINED shell launchers only"
+  fi
+fi
+AM_CONDITIONAL([ENABLE_NATIVE_LAUNCHERS], [test ! x"$RUSTC" = x])
+
 build_linux=no
 build_windows=no
 case "${host_os}" in
--- a/launcher/launchers.bat.in	Mon Sep 25 18:05:33 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-rem use JAVAWS_J_OPTIONS to pass java arguments, instead of -J opts for this script. This will be fixed in next releases
-rem use ITW_HOME to set location where ITW can be found. Form there all binaries and jars and other resources are found
-rem use JAVA_HOME to set path to JRE
-rem any redistribution/installer can replace INST_ITW_HOME and INST_JAVA_HOME to create better defaults
-rem if not set, following defaults are used
-set CLASSNAME=@MAIN_CLASS@
-set PROGRAM_NAME=@PROGRAM_NAME@
-
-set NASHORN=lib/ext/nashorn.jar
-set LAUNCHER_FLAGS=-Xms8m
-if "%PROGRAM_NAME%" == "javaws"  (
-  set ITW_WIN_SPECIALS=-Xnofork
-) else (
- set ITW_WIN_SPECIALS=
-)
-
-
-rem warning for linux users: when you put VAR="value" also quotes are stored in VAR!
-rem maybe set "VAR=value" is working better?
-
-set INST_JAVA_HOME=
-set BAD_SLASH_SCRIPT_DIR=%~dp0
-set SCRIPT_DIR=%BAD_SLASH_SCRIPT_DIR:\=/%
-set ITW_HOME=%SCRIPT_DIR%../
-
-rem the following is for testing-only and not intended to be robust
-rem will not work from 32-bit firefox
-for /f "tokens=*" %%a in ('%windir%\System32\reg query "HKLM\SOFTWARE\JavaSoft\Java Development Kit"') do set "version_key=%%a"
-set "version=%version_key:~58%"
-for /f "tokens=*" %%a in ('%windir%\System32\reg query "HKLM\SOFTWARE\JavaSoft\Java Development Kit\%version%" /v JavaHome') do set "jh_key=%%a"
-set BAD_SLASH_JAVA_HOME=%jh_key:~22%
-set REG_JAVA_HOME=%BAD_SLASH_JAVA_HOME:\=/%
-"%REG_JAVA_HOME%/bin/java.exe" -version
-if errorlevel 0 if not errorlevel 1 (
-    set JAVA_HOME=%REG_JAVA_HOME%
-)
-
-
-if "%INST_JAVA_HOME%" == ""  (
-  if not "%JAVA_HOME%" == ""  (
-  set CP=%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/jfxrt.jar
-  set NASHORN=%JAVA_HOME%/%NASHORN%
-  set JAVA=%JAVA_HOME%/bin/java
-  ) else (
-    set CP=@JRE@/lib/rt.jar;@JRE@/lib/jfxrt.jar
-    set NASHORN=@JRE@/%NASHORN%
-    set JAVA=@JAVA@
-  )
-) else (
-  set CP=%INST_JAVA_HOME%/lib/rt.jar;%INST_JAVA_HOME%/lib/jfxrt.jar
-  set NASHORN=%INST_JAVA_HOME%/%NASHORN%
-  set JAVA=%INST_JAVA_HOME%/bin/java
-)
-
-if "%ITW_HOME%" == ""  (
-  if not "%INST_ITW_HOME%" == ""  (
-  set SPLASH_LOCATION=%INST_ITW_HOME%/share/icedtea-web/javaws_splash.png
-  set BINARY_LOCATION=%INST_ITW_HOME%/bin/@PROGRAM_NAME@.bat
-  set LAUNCHER_BOOTCLASSPATH=-Xbootclasspath/a:%INST_ITW_HOME%/share/icedtea-web/netx.jar;%INST_ITW_HOME%/share/icedtea-web/plugin.jar;%INST_ITW_HOME%/share/icedtea-web/jsobject.jar;%INST_ITW_HOME%/win-deps-runtime/js.jar;%INST_ITW_HOME%/win-deps-runtime/tagsoup.jar;%NASHORN%
-  ) else (
-    set SPLASH_LOCATION=@JAVAWS_SPLASH_LOCATION@
-    set BINARY_LOCATION=@BIN_LOCATION@.bat
-    set LAUNCHER_BOOTCLASSPATH=@LAUNCHER_BOOTCLASSPATH@;%NASHORN%
-  )
-) else (
-  set SPLASH_LOCATION=%ITW_HOME%/share/icedtea-web/javaws_splash.png
-  set BINARY_LOCATION=%ITW_HOME%/bin/@PROGRAM_NAME@.bat
-  set LAUNCHER_BOOTCLASSPATH=-Xbootclasspath/a:%ITW_HOME%/share/icedtea-web/netx.jar;%ITW_HOME%/share/icedtea-web/plugin.jar;%ITW_HOME%/share/icedtea-web/jsobject.jar;%ITW_HOME%/win-deps-runtime/js.jar;%ITW_HOME%/win-deps-runtime/tagsoup.jar;%NASHORN%
-)
-
-
-
-rem TODO use "exec -a %PROGRAM_NAME% ..." idiom
-"%JAVA%" "-splash:%SPLASH_LOCATION%" "%LAUNCHER_BOOTCLASSPATH%" %LAUNCHER_FLAGS% %JAVAWS_J_OPTIONS% "-classpath" "%CP%" "-Dicedtea-web.bin.name=%PROGRAM_NAME%" "-Dicedtea-web.bin.location=%BINARY_LOCATION%" "%CLASSNAME%" %ITW_WIN_SPECIALS% %*
-
-SET errno=%ERRORLEVEL%
-
-
-echo Please press any key to close this window/get back prompt
-pause > nul
-EXIT /B %errno%
--- a/launcher/launchers.in	Mon Sep 25 18:05:33 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-#!/bin/bash
-
-NASHORN=lib/ext/nashorn.jar
-JAVA=@JAVA@
-LAUNCHER_BOOTCLASSPATH='@LAUNCHER_BOOTCLASSPATH@'
-LAUNCHER_FLAGS=-Xms8m
-CLASSNAME=@MAIN_CLASS@
-BINARY_LOCATION=@BIN_LOCATION@
-SPLASH_LOCATION=@JAVAWS_SPLASH_LOCATION@
-PROGRAM_NAME=@PROGRAM_NAME@
-CP=@JRE@/lib/rt.jar:@JRE@/lib/jfxrt.jar
-
-CONFIG_HOME=$XDG_CONFIG_HOME
-if [ "x$CONFIG_HOME" = "x" ] ; then
-  CONFIG_HOME=~/.config
-fi;
-PROPERTY_NAME=deployment.jre.dir
-CUSTOM_JRE_REGEX="^$PROPERTY_NAME *= *"
-CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" $CONFIG_HOME/icedtea-web/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
-#now check in legacy one
-if [ "x$CUSTOM_JRE" = "x" ] ; then
-  CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" ~/.icedtea/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
-fi;
-#now check in global one
-if [ "x$CUSTOM_JRE" = "x" ] ; then
-  CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" /etc/.java/.deploy/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
-fi;
-if [ "x$CUSTOM_JRE" != "x" ] ; then
-  if [ -e  "$CUSTOM_JRE" -a -e "$CUSTOM_JRE/bin/java" ] ; then
-    JAVA=$CUSTOM_JRE/bin/java
-    CP=$CUSTOM_JRE/lib/rt.jar:$CUSTOM_JRE/lib/jfxrt.jar
-    LAUNCHER_BOOTCLASSPATH=$LAUNCHER_BOOTCLASSPATH:$CUSTOM_JRE/$NASHORN
-  else
-    echo "Your custom JRE $CUSTOM_JRE read from deployment.properties under key $PROPERTY_NAME as $CUSTOM_JRE is not valid. Using default ($JAVA, $CP) in attempt to start. Please fix this."
-  fi
-else
-  LAUNCHER_BOOTCLASSPATH="$LAUNCHER_BOOTCLASSPATH:@JRE@/$NASHORN"
-fi;
-
-JDK9="NO"
-if ${JAVA} -version 2>&1 | grep -q "version \"9-" ; then
-  JDK9="YES"
-fi
-
-JAVA_ARGS=( )
-ARGS=( )
-COMMAND=()
-
-i=0
-j=0
-
-SPLASH="false"
-if [ "x$ICEDTEA_WEB_SPLASH" = "x" ] ; then
-SPLASH="true"
-fi;
-while [ "$#" -gt "0" ]; do
-  case "$1" in
-    -J*)
-      JAVA_ARGS[$i]="${1##-J}"
-      i=$((i+1))
-      ;;
-    *)
-      ARGS[$j]="$1"
-      j=$((j+1))
-      if [[ "$1" =~ ^[-]*headless ]] ; then   
-        SPLASH="false"
-      fi
-      ;;
-  esac
-  shift
-done
-
-k=0
-COMMAND[k]="${JAVA}"
-k=$((k+1))
-if [ "$SPLASH" = "true" ] ; then
-COMMAND[k]="-splash:${SPLASH_LOCATION}"
-k=$((k+1))
-fi;
-COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
-k=$((k+1))
-COMMAND[k]="${LAUNCHER_FLAGS}"
-k=$((k+1))
-
-if [ "x$JDK9" == "xYES" ] ; then
-COMMAND[k]="--patch-module"
-k=$((k+1))
-COMMAND[k]="java.desktop=@PLUGIN_JAR@:@NETX_JAR@"
-k=$((k+1))
-# jsobject must be pathched separately from plugin
-# otherwise netscape pkg would be shared by two modules, which is forbiden
-JSOBJECT_JAR=@JSOBJECT_JAR@
-# plugin jar may not be built
-if [ ! "x$JSOBJECT_JAR" == "x" ] ; then
-  COMMAND[k]="--patch-module"
-  k=$((k+1))
-  COMMAND[k]="jdk.jsobject=$JSOBJECT_JAR"
-  k=$((k+1))
-fi
-
-COMMAND[k]="--add-reads"
-k=$((k+1))
-COMMAND[k]="java.base=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-reads"
-k=$((k+1))
-COMMAND[k]="java.desktop=ALL-UNNAMED,java.naming"
-k=$((k+1))
-COMMAND[k]="--add-reads"
-k=$((k+1))
-COMMAND[k]="java.naming=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.desktop/sun.awt=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.desktop/javax.jnlp=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.security.provider=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.security.util=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.security.x509=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/jdk.internal.util.jar=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.security.validator=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/com.sun.net.ssl.internal.ssl=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.net.www.protocol.jar=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.desktop/sun.awt.X11=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.security.action=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.base/sun.net.www.protocol.http=ALL-UNNAMED,java.desktop"
-k=$((k+1))
-COMMAND[k]="--add-exports"
-k=$((k+1))
-COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,jdk.jsobject"
-k=$((k+1))
-fi
-
-
-i=0
-while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
-  COMMAND[k]="${JAVA_ARGS[$i]}"
-  i=$((i+1))
-  k=$((k+1))
-done
-COMMAND[k]="-classpath"
-k=$((k+1))
-COMMAND[k]="${CP}"
-k=$((k+1))
-COMMAND[k]="-Dicedtea-web.bin.name=${PROGRAM_NAME}"
-k=$((k+1))
-COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
-k=$((k+1))
-COMMAND[k]="${CLASSNAME}"
-k=$((k+1))
-j=0
-while [ "$j" -lt "${#ARGS[@]}" ]; do
-  COMMAND[k]="${ARGS[$j]}"
-  j=$((j+1))
-  k=$((k+1))
-done
-
-exec -a "$PROGRAM_NAME" "${COMMAND[@]}"
-
-exit $?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rust-launcher/launchers.rs	Fri Nov 03 10:09:44 2017 +0100
@@ -0,0 +1,3 @@
+fn main() {
+    println!("Hello, world!");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/shell-launcher/launchers.bat.in	Fri Nov 03 10:09:44 2017 +0100
@@ -0,0 +1,81 @@
+rem use JAVAWS_J_OPTIONS to pass java arguments, instead of -J opts for this script. This will be fixed in next releases
+rem use ITW_HOME to set location where ITW can be found. Form there all binaries and jars and other resources are found
+rem use JAVA_HOME to set path to JRE
+rem any redistribution/installer can replace INST_ITW_HOME and INST_JAVA_HOME to create better defaults
+rem if not set, following defaults are used
+set CLASSNAME=@MAIN_CLASS@
+set PROGRAM_NAME=@PROGRAM_NAME@
+
+set NASHORN=lib/ext/nashorn.jar
+set LAUNCHER_FLAGS=-Xms8m
+if "%PROGRAM_NAME%" == "javaws"  (
+  set ITW_WIN_SPECIALS=-Xnofork
+) else (
+ set ITW_WIN_SPECIALS=
+)
+
+
+rem warning for linux users: when you put VAR="value" also quotes are stored in VAR!
+rem maybe set "VAR=value" is working better?
+
+set INST_JAVA_HOME=
+set BAD_SLASH_SCRIPT_DIR=%~dp0
+set SCRIPT_DIR=%BAD_SLASH_SCRIPT_DIR:\=/%
+set ITW_HOME=%SCRIPT_DIR%../
+
+rem the following is for testing-only and not intended to be robust
+rem will not work from 32-bit firefox
+for /f "tokens=*" %%a in ('%windir%\System32\reg query "HKLM\SOFTWARE\JavaSoft\Java Development Kit"') do set "version_key=%%a"
+set "version=%version_key:~58%"
+for /f "tokens=*" %%a in ('%windir%\System32\reg query "HKLM\SOFTWARE\JavaSoft\Java Development Kit\%version%" /v JavaHome') do set "jh_key=%%a"
+set BAD_SLASH_JAVA_HOME=%jh_key:~22%
+set REG_JAVA_HOME=%BAD_SLASH_JAVA_HOME:\=/%
+"%REG_JAVA_HOME%/bin/java.exe" -version
+if errorlevel 0 if not errorlevel 1 (
+    set JAVA_HOME=%REG_JAVA_HOME%
+)
+
+
+if "%INST_JAVA_HOME%" == ""  (
+  if not "%JAVA_HOME%" == ""  (
+  set CP=%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/jfxrt.jar
+  set NASHORN=%JAVA_HOME%/%NASHORN%
+  set JAVA=%JAVA_HOME%/bin/java
+  ) else (
+    set CP=@JRE@/lib/rt.jar;@JRE@/lib/jfxrt.jar
+    set NASHORN=@JRE@/%NASHORN%
+    set JAVA=@JAVA@
+  )
+) else (
+  set CP=%INST_JAVA_HOME%/lib/rt.jar;%INST_JAVA_HOME%/lib/jfxrt.jar
+  set NASHORN=%INST_JAVA_HOME%/%NASHORN%
+  set JAVA=%INST_JAVA_HOME%/bin/java
+)
+
+if "%ITW_HOME%" == ""  (
+  if not "%INST_ITW_HOME%" == ""  (
+  set SPLASH_LOCATION=%INST_ITW_HOME%/share/icedtea-web/javaws_splash.png
+  set BINARY_LOCATION=%INST_ITW_HOME%/bin/@PROGRAM_NAME@.bat
+  set LAUNCHER_BOOTCLASSPATH=-Xbootclasspath/a:%INST_ITW_HOME%/share/icedtea-web/netx.jar;%INST_ITW_HOME%/share/icedtea-web/plugin.jar;%INST_ITW_HOME%/share/icedtea-web/jsobject.jar;%INST_ITW_HOME%/win-deps-runtime/js.jar;%INST_ITW_HOME%/win-deps-runtime/tagsoup.jar;%NASHORN%
+  ) else (
+    set SPLASH_LOCATION=@JAVAWS_SPLASH_LOCATION@
+    set BINARY_LOCATION=@BIN_LOCATION@.bat
+    set LAUNCHER_BOOTCLASSPATH=@LAUNCHER_BOOTCLASSPATH@;%NASHORN%
+  )
+) else (
+  set SPLASH_LOCATION=%ITW_HOME%/share/icedtea-web/javaws_splash.png
+  set BINARY_LOCATION=%ITW_HOME%/bin/@PROGRAM_NAME@.bat
+  set LAUNCHER_BOOTCLASSPATH=-Xbootclasspath/a:%ITW_HOME%/share/icedtea-web/netx.jar;%ITW_HOME%/share/icedtea-web/plugin.jar;%ITW_HOME%/share/icedtea-web/jsobject.jar;%ITW_HOME%/win-deps-runtime/js.jar;%ITW_HOME%/win-deps-runtime/tagsoup.jar;%NASHORN%
+)
+
+
+
+rem TODO use "exec -a %PROGRAM_NAME% ..." idiom
+"%JAVA%" "-splash:%SPLASH_LOCATION%" "%LAUNCHER_BOOTCLASSPATH%" %LAUNCHER_FLAGS% %JAVAWS_J_OPTIONS% "-classpath" "%CP%" "-Dicedtea-web.bin.name=%PROGRAM_NAME%" "-Dicedtea-web.bin.location=%BINARY_LOCATION%" "%CLASSNAME%" %ITW_WIN_SPECIALS% %*
+
+SET errno=%ERRORLEVEL%
+
+
+echo Please press any key to close this window/get back prompt
+pause > nul
+EXIT /B %errno%
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/shell-launcher/launchers.sh.in	Fri Nov 03 10:09:44 2017 +0100
@@ -0,0 +1,202 @@
+#!/bin/bash
+
+NASHORN=lib/ext/nashorn.jar
+JAVA=@JAVA@
+LAUNCHER_BOOTCLASSPATH='@LAUNCHER_BOOTCLASSPATH@'
+LAUNCHER_FLAGS=-Xms8m
+CLASSNAME=@MAIN_CLASS@
+BINARY_LOCATION=@BIN_LOCATION@
+SPLASH_LOCATION=@JAVAWS_SPLASH_LOCATION@
+PROGRAM_NAME=@PROGRAM_NAME@
+CP=@JRE@/lib/rt.jar:@JRE@/lib/jfxrt.jar
+
+CONFIG_HOME=$XDG_CONFIG_HOME
+if [ "x$CONFIG_HOME" = "x" ] ; then
+  CONFIG_HOME=~/.config
+fi;
+PROPERTY_NAME=deployment.jre.dir
+CUSTOM_JRE_REGEX="^$PROPERTY_NAME *= *"
+CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" $CONFIG_HOME/icedtea-web/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
+#now check in legacy one
+if [ "x$CUSTOM_JRE" = "x" ] ; then
+  CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" ~/.icedtea/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
+fi;
+#now check in global one
+if [ "x$CUSTOM_JRE" = "x" ] ; then
+  CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" /etc/.java/.deploy/deployment.properties 2>/dev/null |  sed "s/$CUSTOM_JRE_REGEX//g"`
+fi;
+if [ "x$CUSTOM_JRE" != "x" ] ; then
+  if [ -e  "$CUSTOM_JRE" -a -e "$CUSTOM_JRE/bin/java" ] ; then
+    JAVA=$CUSTOM_JRE/bin/java
+    CP=$CUSTOM_JRE/lib/rt.jar:$CUSTOM_JRE/lib/jfxrt.jar
+    LAUNCHER_BOOTCLASSPATH=$LAUNCHER_BOOTCLASSPATH:$CUSTOM_JRE/$NASHORN
+  else
+    echo "Your custom JRE $CUSTOM_JRE read from deployment.properties under key $PROPERTY_NAME as $CUSTOM_JRE is not valid. Using default ($JAVA, $CP) in attempt to start. Please fix this."
+  fi
+else
+  LAUNCHER_BOOTCLASSPATH="$LAUNCHER_BOOTCLASSPATH:@JRE@/$NASHORN"
+fi;
+
+JDK9="NO"
+if ${JAVA} -version 2>&1 | grep -q "version \"9-" ; then
+  JDK9="YES"
+fi
+
+JAVA_ARGS=( )
+ARGS=( )
+COMMAND=()
+
+i=0
+j=0
+
+SPLASH="false"
+if [ "x$ICEDTEA_WEB_SPLASH" = "x" ] ; then
+SPLASH="true"
+fi;
+while [ "$#" -gt "0" ]; do
+  case "$1" in
+    -J*)
+      JAVA_ARGS[$i]="${1##-J}"
+      i=$((i+1))
+      ;;
+    *)
+      ARGS[$j]="$1"
+      j=$((j+1))
+      if [[ "$1" =~ ^[-]*headless ]] ; then   
+        SPLASH="false"
+      fi
+      ;;
+  esac
+  shift
+done
+
+k=0
+COMMAND[k]="${JAVA}"
+k=$((k+1))
+if [ "$SPLASH" = "true" ] ; then
+COMMAND[k]="-splash:${SPLASH_LOCATION}"
+k=$((k+1))
+fi;
+COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
+k=$((k+1))
+COMMAND[k]="${LAUNCHER_FLAGS}"
+k=$((k+1))
+
+if [ "x$JDK9" == "xYES" ] ; then
+COMMAND[k]="--patch-module"
+k=$((k+1))
+COMMAND[k]="java.desktop=@PLUGIN_JAR@:@NETX_JAR@"
+k=$((k+1))
+# jsobject must be pathched separately from plugin
+# otherwise netscape pkg would be shared by two modules, which is forbiden
+JSOBJECT_JAR=@JSOBJECT_JAR@
+# plugin jar may not be built
+if [ ! "x$JSOBJECT_JAR" == "x" ] ; then
+  COMMAND[k]="--patch-module"
+  k=$((k+1))
+  COMMAND[k]="jdk.jsobject=$JSOBJECT_JAR"
+  k=$((k+1))
+fi
+
+COMMAND[k]="--add-reads"
+k=$((k+1))
+COMMAND[k]="java.base=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-reads"
+k=$((k+1))
+COMMAND[k]="java.desktop=ALL-UNNAMED,java.naming"
+k=$((k+1))
+COMMAND[k]="--add-reads"
+k=$((k+1))
+COMMAND[k]="java.naming=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.desktop/sun.awt=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.desktop/javax.jnlp=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.security.provider=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.security.util=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.security.x509=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/jdk.internal.util.jar=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.security.validator=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/com.sun.net.ssl.internal.ssl=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.net.www.protocol.jar=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.desktop/sun.awt.X11=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.security.action=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.base/sun.net.www.protocol.http=ALL-UNNAMED,java.desktop"
+k=$((k+1))
+COMMAND[k]="--add-exports"
+k=$((k+1))
+COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,jdk.jsobject"
+k=$((k+1))
+fi
+
+
+i=0
+while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
+  COMMAND[k]="${JAVA_ARGS[$i]}"
+  i=$((i+1))
+  k=$((k+1))
+done
+COMMAND[k]="-classpath"
+k=$((k+1))
+COMMAND[k]="${CP}"
+k=$((k+1))
+COMMAND[k]="-Dicedtea-web.bin.name=${PROGRAM_NAME}"
+k=$((k+1))
+COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
+k=$((k+1))
+COMMAND[k]="${CLASSNAME}"
+k=$((k+1))
+j=0
+while [ "$j" -lt "${#ARGS[@]}" ]; do
+  COMMAND[k]="${ARGS[$j]}"
+  j=$((j+1))
+  k=$((k+1))
+done
+
+exec -a "$PROGRAM_NAME" "${COMMAND[@]}"
+
+exit $?