OK.

May I hope that a fix for this will make its way to the early-access build soon?

(While I can build from source myself, it is much more convenient to use an EA 
in our CI cluster.)

/Lennart

> 11 mars 2019 kl. 18:04 skrev Andy Herrick <andy.herr...@oracle.com>:
> 
> Although we plan to remove the mac-app-store intaller type for the first 
> release (which will fix this instance the problem for now) I agree this is 
> not right for an exception in one install type to prevent the other types (if 
> there are any) from running.
> 
> I think instead though we should try to run them all, then log what succeeded 
> and then throw the exception if any failed.
> 
> /Andy
> 
> 
> 
> On 3/11/2019 7:55 AM, Lennart Börjeson wrote:
>> Looking into the code of Arguments.generateBundle(Map params), I believe 
>> it's a bug to immediately throw an error when a bundler has configuration 
>> problems.
>> 
>> Instead, that bundler should be removed from the platformBundlers List. 
>> Quick-and-dirty solution:
>> 
>> 
>> diff -r e11f3bf34083 
>> src/jdk.jpackage/share/classes/jdk/jpackage/internal/Arguments.java
>> --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/Arguments.java    
>>    Fri Mar 01 08:27:51 2019 -0500
>> +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/Arguments.java    
>>    Mon Mar 11 12:37:43 2019 +0100
>> @@ -37,6 +37,7 @@
>>  import java.util.HashMap;
>>  import java.util.HashSet;
>>  import java.util.List;
>> +import java.util.ListIterator;
>>  import java.util.Map;
>>  import java.util.Set;
>>  import java.util.Properties;
>> @@ -655,7 +656,10 @@
>>          // clean these extra (and unneeded) temp directories.
>>          StandardBundlerParam.BUILD_ROOT.fetchFrom(params);
>>  -        for (jdk.jpackage.internal.Bundler bundler : 
>> getPlatformBundlers()) {
>> +        List<jdk.jpackage.internal.Bundler> platformBundlers = 
>> getPlatformBundlers();
>> +        ListIterator<jdk.jpackage.internal.Bundler> platformBundleIterator 
>> = platformBundlers.listIterator();
>> +        while (platformBundleIterator.hasNext()) {
>> +            jdk.jpackage.internal.Bundler bundler = 
>> platformBundleIterator.next();
>>              Map<String, ? super Object> localParams = new HashMap<>(params);
>>              try {
>>                  if (bundler.validate(localParams)) {
>> @@ -677,18 +681,20 @@
>>              } catch (ConfigException e) {
>>                  Log.debug(e);
>>                  if (e.getAdvice() != null) {
>> -                    throw new PackagerException(e,
>> +                    Log.info(new PackagerException(e,
>>                              "MSG_BundlerConfigException",
>> -                            bundler.getName(), e.getMessage(), 
>> e.getAdvice());
>> +                            bundler.getName(), e.getMessage(), 
>> e.getAdvice()).getMessage());
>>                  } else {
>> -                    throw new PackagerException(e,
>> +                    Log.info(new PackagerException(e,
>>                             "MSG_BundlerConfigExceptionNoAdvice",
>> -                            bundler.getName(), e.getMessage());
>> +                            bundler.getName(), 
>> e.getMessage()).getMessage());
>>                  }
>> +                platformBundleIterator.remove();
>>              } catch (RuntimeException re) {
>>                  Log.debug(re);
>> -                throw new PackagerException(re, 
>> "MSG_BundlerRuntimeException",
>> -                        bundler.getName(), re.toString());
>> +                Log.info(new PackagerException(re, 
>> "MSG_BundlerRuntimeException",
>> +                        bundler.getName(), re.toString()).getMessage());
>> +                platformBundleIterator.remove();
>>              } finally {
>>                  if (userProvidedBuildRoot) {
>>                      Log.verbose(MessageFormat.format(
>> 
>> 
>> Best regards,
>> 
>> /Lennart Börjeson
>> 
>>> 11 mars 2019 kl. 09:40 skrev Lennart Börjeson <lenbo...@gmail.com>:
>>> 
>>> I'm experimenting with jpackage from the current EA available at 
>>> https://jdk.java.net/jpackage/ <https://jdk.java.net/jpackage/> 
>>> <https://jdk.java.net/jpackage/ <https://jdk.java.net/jpackage/>>, for the 
>>> moment on Mac only.
>>> 
>>> I have an existing application which I have previously deployed on multiple 
>>> platforms using the then bundled javafxpackager.
>>> 
>>> With the current EA (build 17), I find I must specify the --installer-type 
>>> parameter, otherwise I get the following error:
>>> 
>>> $ /Users/lennartb/Downloads/jdk-13.jdk/Contents/Home/bin/jpackage 
>>> create-installer --overwrite --output 
>>> /Users/lennartb/RaT/git/BMF/GUI/build/jpackage --name bmfgui --app-image 
>>> /Users/lennartb/RaT/git/BMF/GUI/build/jpackage/BMFGraphicalUserInterface.app
>>>  --icon BMF.icns --identifier com.cinnober.bmf.gui.Main --app-version 
>>> 1.6.10 --verbose
>>> jdk.jpackage.internal.PackagerException: Bundler Mac App Store Ready 
>>> Bundler skipped because of a configuration problem: Mac App Store apps must 
>>> be signed, and signing has been disabled by bundler configuration.
>>> Advice to fix: Either unset 'signBundle' or set 'signBundle' to true.
>>>     at 
>>> jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:726)
>>>     at 
>>> jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:642)
>>>     at jdk.jpackage/jdk.jpackage.main.Main.run(Main.java:90)
>>>     at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:53)
>>> Caused by: jdk.jpackage.internal.ConfigException: Mac App Store apps must 
>>> be signed, and signing has been disabled by bundler configuration.
>>>     at 
>>> jdk.jpackage/jdk.jpackage.internal.MacAppStoreBundler.validate(MacAppStoreBundler.java:332)
>>>     at 
>>> jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:705)
>>>     ... 3 more
>>> 
>>> With the previous javafxpackager this wasn't needed. Javafxpackager always 
>>> tried to create all installer types and ignored all errors from any 
>>> specific bundler, e.g. on linux it always tried to create both a Debian 
>>> package and an rpm and just ignored if any of the requisite builder tools 
>>> was unavailable.
>>> 
>>> The obvious workaround in my case is to run jpackage twice, once with 
>>> "--installer-type pkg" and once with "--installer-type dmg", but since I'm 
>>> furthered hampered by limitations of my toolchain (gradle + 
>>> badass-jlink-plugin) it would really simplify matters it jpackage could be 
>>> restored to the javafxpackager behaviour when "--installer-type" is 
>>> unspecified, e.g. ignore errors and create whatever installers it can.
>>> 
>>> 
>>> Best regards,
>>> 
>>> /Lennart Börjeson

Reply via email to