diff --git a/icedtea-web-1.8.8-bash-completion.patch b/icedtea-web-1.8.8-bash-completion.patch new file mode 100644 index 0000000..e44749d --- /dev/null +++ b/icedtea-web-1.8.8-bash-completion.patch @@ -0,0 +1,26 @@ +From 558638e2aa131da29f3f6a39340a5641aa4134f7 Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Sun, 23 Apr 2023 02:08:04 +0200 +Subject: [PATCH] Use same naming scheme like bash-completion + +--- + Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index e44070c17..f18492f2f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -416,9 +416,9 @@ if WINDOWS_OR_INCLUDE_BATS + ${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)/ ++ ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/itweb-settings.bash $(BASH_CMPL_DEST_DIR)/itweb-settings ++ ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/javaws.bash $(BASH_CMPL_DEST_DIR)/javaws ++ ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/policyeditor.bash $(BASH_CMPL_DEST_DIR)/policyeditor + + # all generated manpages are installed in swarm + # all windows depndences are copied for windows build, and known one are copied/removed as necessary diff --git a/icedtea-web-1.8.8-disable-pluginjar.patch b/icedtea-web-1.8.8-disable-pluginjar.patch new file mode 100644 index 0000000..b7ca8ec --- /dev/null +++ b/icedtea-web-1.8.8-disable-pluginjar.patch @@ -0,0 +1,118 @@ +From 92a975e01d1d6e24be8b3e7c56dbfb09bf1ccf79 Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Tue, 30 May 2023 02:33:56 +0200 +Subject: [PATCH] Disable sun.applet javadocs and plugin man page for + --disable-pluginjar + +--- + Makefile.am | 8 ++-- + .../jnlp/util/docprovider/TextsProvider.java | 42 +++++++++++-------- + 2 files changed, 28 insertions(+), 22 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index d762c002b..88c18f501 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -241,8 +241,7 @@ export NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ + net.sourceforge.jnlp.controlpanel net.sourceforge.jnlp.event \ + net.sourceforge.jnlp.runtime net.sourceforge.jnlp.security \ + net.sourceforge.jnlp.security.viewer net.sourceforge.jnlp.services \ +- net.sourceforge.jnlp.tools net.sourceforge.jnlp.util \ +- sun.applet ++ net.sourceforge.jnlp.tools net.sourceforge.jnlp.util + + if ENABLE_PLUGINJAR + export ICEDTEAPLUGIN_TARGET = stamps/liveconnect-dist.stamp +@@ -251,6 +250,7 @@ export PLUGIN_SRCDIR=$(TOP_SRC_DIR)/plugin/icedteanp + export JSOBJECT_DIRS = netscape + export SUN_DIR = sun + export SUN_APPLET_DIRS = sun/applet ++export SUN_APPLET_PKGS = sun.applet + export PLUGIN_PKGS = sun.applet netscape.security netscape.javascript + export LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java + export LIVECONNECT_DIR = $(JSOBJECT_DIRS) $(SUN_APPLET_DIRS) +@@ -898,7 +898,7 @@ stamps/generate-docs.stamp: stamps/netx.stamp + mkdir "$$PLAIN_DOCS_TARGET_DIR" ; \ + mkdir "$$MAN_DOCS_TARGET_DIR" ; \ + HTML_DOCS_INDEX="$$HTML_DOCS_TARGET_DIR/index.html" ; \ +- TP_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.util.docprovider.TextsProvider" ; \ ++ TP_COMMAND="$(SYSTEM_JRE_DIR)/bin/java --add-exports=java.base/sun.security.action=ALL-UNNAMED -DPLUGIN_JAR=$(PLUGIN_JAR) -cp $(NETX_DIR) net.sourceforge.jnlp.util.docprovider.TextsProvider" ; \ + TP_TAIL="false $(FULL_VERSION)" ; \ + LANG_BACKUP=$$LANG ; \ + echo "$(PLUGIN_VERSION)" > "$$HTML_DOCS_INDEX" ; \ +@@ -1189,7 +1189,7 @@ if ENABLE_DOCS + -windowtitle 'IcedTea-Web: NetX ' \ + -header 'IcedTea-Web
NetX
' \ + $(call composeclasspath, $(MSLINKS_JAR) $(TAGSOUP_JAR) $(RHINO_JAR)) \ +- $(NETX_PKGS) ++ $(NETX_PKGS) $(SUN_APPLET_PKGS) + endif + mkdir -p stamps + touch stamps/netx-docs.stamp +diff --git a/netx/net/sourceforge/jnlp/util/docprovider/TextsProvider.java b/netx/net/sourceforge/jnlp/util/docprovider/TextsProvider.java +index 941b3e377..3269a54c1 100644 +--- a/netx/net/sourceforge/jnlp/util/docprovider/TextsProvider.java ++++ b/netx/net/sourceforge/jnlp/util/docprovider/TextsProvider.java +@@ -498,12 +498,14 @@ public static void generateHtmlTexts(String encoding, File dir, boolean allowCon + os.flush(); + } + } +- JavaWsTextsProvider javaws = new JavaWsTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand); +- ItwebSettingsTextsProvider itws = new ItwebSettingsTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand); +- PolicyEditorTextsProvider pe = new PolicyEditorTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand); +- IcedTeaWebTextsProvider itw = new IcedTeaWebTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand); +- ItwebPluginTextProvider pl = new ItwebPluginTextProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand); +- TextsProvider[] providers = new TextsProvider[]{javaws, itws, pe, itw, pl}; ++ ArrayList providers = new ArrayList(); ++ providers.add(new JavaWsTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand)); ++ providers.add(new ItwebSettingsTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand)); ++ providers.add(new PolicyEditorTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand)); ++ providers.add(new IcedTeaWebTextsProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand)); ++ if (!System.getProperty("PLUGIN_JAR", "").isEmpty()) { ++ providers.add(new ItwebPluginTextProvider(encoding, new HtmlFormatter(allowContext, allowLogo, includeXmlHeader), titles, expand)); ++ } + for (TextsProvider provider : providers) { + provider.setAuthorFilePath(authorFileFromUserInput); + provider.writeToDir(dir); +@@ -516,12 +518,14 @@ public static void generateManText(String encoding, File dir, boolean expand) th + } + + public static void generateManText(String encoding, File dir, boolean titles, boolean expand) throws IOException { +- JavaWsTextsProvider javaws = new JavaWsTextsProvider(encoding, new ManFormatter(), titles, expand); +- ItwebSettingsTextsProvider itws = new ItwebSettingsTextsProvider(encoding, new ManFormatter(), titles, expand); +- PolicyEditorTextsProvider pe = new PolicyEditorTextsProvider(encoding, new ManFormatter(), titles, expand); +- IcedTeaWebTextsProvider itw = new IcedTeaWebTextsProvider(encoding, new ManFormatter(), titles, expand); +- ItwebPluginTextProvider pl = new ItwebPluginTextProvider(encoding, new ManFormatter(), titles, expand); +- TextsProvider[] providers = new TextsProvider[]{javaws, itws, pe, itw, pl}; ++ ArrayList providers = new ArrayList(); ++ providers.add(new JavaWsTextsProvider(encoding, new ManFormatter(), titles, expand)); ++ providers.add(new ItwebSettingsTextsProvider(encoding, new ManFormatter(), titles, expand)); ++ providers.add(new PolicyEditorTextsProvider(encoding, new ManFormatter(), titles, expand)); ++ providers.add(new IcedTeaWebTextsProvider(encoding, new ManFormatter(), titles, expand)); ++ if (!System.getProperty("PLUGIN_JAR", "").isEmpty()) { ++ providers.add(new ItwebPluginTextProvider(encoding, new ManFormatter(), titles, expand)); ++ } + for (TextsProvider provider : providers) { + provider.setAuthorFilePath(authorFileFromUserInput); + provider.writeToDir(dir); +@@ -534,12 +538,14 @@ public static void generatePlainTextDocs(File dir, int lineWidth, boolean expand + } + + public static void generatePlainTextDocs(String encoding, File dir, String indent, int lineWidth, boolean titles, boolean expand) throws IOException { +- JavaWsTextsProvider javaws = new JavaWsTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand); +- ItwebSettingsTextsProvider itws = new ItwebSettingsTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand); +- PolicyEditorTextsProvider pe = new PolicyEditorTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand); +- IcedTeaWebTextsProvider itw = new IcedTeaWebTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand); +- ItwebPluginTextProvider pl = new ItwebPluginTextProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand); +- TextsProvider[] providers = new TextsProvider[]{javaws, itws, pe, itw, pl}; ++ ArrayList providers = new ArrayList(); ++ providers.add(new JavaWsTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand)); ++ providers.add(new ItwebSettingsTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand)); ++ providers.add(new PolicyEditorTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand)); ++ providers.add(new IcedTeaWebTextsProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand)); ++ if (!System.getProperty("PLUGIN_JAR", "").isEmpty()) { ++ providers.add(new ItwebPluginTextProvider(encoding, new PlainTextFormatter(indent, lineWidth), titles, expand)); ++ } + for(TextsProvider provider : providers){ + provider.setAuthorFilePath(authorFileFromUserInput); + provider.writeToDir(dir); diff --git a/icedtea-web-1.8.8-javadoc-param.patch b/icedtea-web-1.8.8-javadoc-param.patch new file mode 100644 index 0000000..3a38bc5 --- /dev/null +++ b/icedtea-web-1.8.8-javadoc-param.patch @@ -0,0 +1,24 @@ +From 51151ebc8c0e2b76f2c164aeb1238eb0f626c0aa Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Tue, 30 May 2023 02:41:06 +0200 +Subject: [PATCH] Fix javadoc error related to @param in TimedHashMap.java + +--- + netx/net/sourceforge/jnlp/util/TimedHashMap.java | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/netx/net/sourceforge/jnlp/util/TimedHashMap.java b/netx/net/sourceforge/jnlp/util/TimedHashMap.java +index d5d32e4e2..2c4176e4d 100644 +--- a/netx/net/sourceforge/jnlp/util/TimedHashMap.java ++++ b/netx/net/sourceforge/jnlp/util/TimedHashMap.java +@@ -57,8 +57,8 @@ + * + * This map does not allow null keys but does allow null values. + * +- * @param K The key type +- * @param V The Object type ++ * @param The key type ++ * @param The Object type + */ + public class TimedHashMap implements Map { + diff --git a/icedtea-web-1.8.8-no-pack200.patch b/icedtea-web-1.8.8-no-pack200.patch new file mode 100644 index 0000000..5c6adaf --- /dev/null +++ b/icedtea-web-1.8.8-no-pack200.patch @@ -0,0 +1,83 @@ +Patch by Emmanuel Bourg for icedtea-web which removes pack200 support to build with OpenJDK Java 17. +See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1011532 + +Patch origin: https://salsa.debian.org/java-team/icedtea-web/-/blob/master/debian/patches/remove-pack200-support.patch + +--- icedtea-web-1.8.8/configure.ac 2023-05-30 02:14:16.833428945 +0200 ++++ icedtea-web-1.8.8/configure.ac.java17 2023-05-30 03:26:49.139800654 +0200 +@@ -129,7 +129,6 @@ + IT_FIND_JAVADOC + IT_FIND_KEYTOOL + IT_FIND_JARSIGNER +-IT_FIND_PACK200 + + IT_SET_VERSION + IT_CHECK_XULRUNNER_VERSION +@@ -152,7 +151,6 @@ + JAVA_DESKTOP=java.desktop + JAVA_NAMING=java.naming + fi +-IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200], [some.pkg], []) + IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager], [some.pkg], []) + IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie], [some.pkg], []) + IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler], [some.pkg], []) +--- icedtea-web-1.8.8/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java 2023-05-30 02:14:16.831428932 +0200 ++++ icedtea-web-1.8.8/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java.java17 2023-05-30 03:26:49.137800641 +0200 +@@ -25,7 +25,6 @@ + import java.util.List; + import java.util.Map; + import java.util.jar.JarOutputStream; +-import java.util.jar.Pack200; + import java.util.zip.GZIPInputStream; + + import net.sourceforge.jnlp.DownloadOptions; +@@ -151,7 +150,7 @@ + try { + resource.setDownloadLocation(location.URL); + URLConnection connection = ConnectionFactory.getConnectionFactory().openConnection(location.URL); // this won't change so should be okay not-synchronized +- connection.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip"); ++ connection.addRequestProperty("Accept-Encoding", "gzip"); + + File localFile = null; + if (resource.getRequestVersion() == resource.getDownloadVersion()) { +@@ -293,7 +292,7 @@ + URL url = urls.get(i); + try { + Map requestProperties = new HashMap<>(); +- requestProperties.put("Accept-Encoding", "pack200-gzip, gzip"); ++ requestProperties.put("Accept-Encoding", "gzip"); + + UrlRequestResult response = getUrlResponseCodeWithRedirectonResult(url, requestProperties, requestMethod); + if (response.result == 511) { +@@ -390,7 +389,7 @@ + + private URLConnection getDownloadConnection(URL location) throws IOException { + URLConnection con = ConnectionFactory.getConnectionFactory().openConnection(location); +- con.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip"); ++ con.addRequestProperty("Accept-Encoding", "gzip"); + con.connect(); + return con; + } +@@ -504,21 +503,7 @@ + } + + private void uncompressPackGz(URL compressedLocation, URL uncompressedLocation, Version version) throws IOException { +- OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Extracting packgz: " + compressedLocation + " to " + uncompressedLocation); +- +- try (GZIPInputStream gzInputStream = new GZIPInputStream(new FileInputStream(CacheUtil +- .getCacheFile(compressedLocation, version)))) { +- InputStream inputStream = new BufferedInputStream(gzInputStream); +- +- JarOutputStream outputStream = new JarOutputStream(new FileOutputStream(CacheUtil +- .getCacheFile(uncompressedLocation, version))); +- +- Pack200.Unpacker unpacker = Pack200.newUnpacker(); +- unpacker.unpack(inputStream, outputStream); +- +- outputStream.close(); +- inputStream.close(); +- } ++ throw new UnsupportedOperationException("Pack200 compression is no longer supported, cannot unpack " + compressedLocation); + } + + /** diff --git a/icedtea-web-1.8.8-remove-dunce.patch b/icedtea-web-1.8.8-remove-dunce.patch new file mode 100644 index 0000000..310cea9 --- /dev/null +++ b/icedtea-web-1.8.8-remove-dunce.patch @@ -0,0 +1,12 @@ +Remove dependency to dunce (normalizes Windows paths to the most compatible format) + +--- icedtea-web-1.8.8/rust-launcher/Cargo.toml 2021-10-27 22:13:18.000000000 +0200 ++++ icedtea-web-1.8.8/rust-launcher/Cargo.toml.remove-dunce 2023-04-23 00:48:27.861178475 +0200 +@@ -2,7 +2,3 @@ + name = "launcher" + version = "1.8.0" + authors = ["https://icedtea.classpath.org/wiki/IcedTea-Web"] +- +-[dependencies] +-[target.'cfg(windows)'.dependencies] +-dunce = "0.1.1" diff --git a/icedtea-web-1.8.8-untranslated-man-pages.patch b/icedtea-web-1.8.8-untranslated-man-pages.patch new file mode 100644 index 0000000..36d2483 --- /dev/null +++ b/icedtea-web-1.8.8-untranslated-man-pages.patch @@ -0,0 +1,22 @@ +From c477ebda825f0179e0f44bab01e0000fee37ea2e Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Wed, 26 Apr 2023 23:12:44 +0200 +Subject: [PATCH] Disable man pages for languages without any translation + +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index e44070c17..1b20b7ddc 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -899,7 +899,7 @@ stamps/generate-docs.stamp: stamps/netx.stamp + LANG_BACKUP=$$LANG ; \ + echo "$(PLUGIN_VERSION)" > "$$HTML_DOCS_INDEX" ; \ + echo "

$(PLUGIN_VERSION) docs:

" >> "$$HTML_DOCS_INDEX" ; \ +- for LANG_ID in en_US.UTF-8 cs_CZ.UTF-8 pl_PL.UTF-8 de_DE.UTF-8 ; do \ ++ for LANG_ID in en_US.UTF-8 ; do \ + ID=`echo "$$LANG_ID" | head -c 2` ; \ + ENCOD=`echo "$$LANG_ID" | tail -c 6 -` ; \ + export LANG=$$LANG_ID; \ diff --git a/icedtea-web-1.8.8-upstream-changes.patch b/icedtea-web-1.8.8-upstream-changes.patch new file mode 100644 index 0000000..0fe9104 --- /dev/null +++ b/icedtea-web-1.8.8-upstream-changes.patch @@ -0,0 +1,394 @@ +From 4db4f1e1b0425b06d5b0c3f285b43b1cb11c0353 Mon Sep 17 00:00:00 2001 +From: Dmitry Cherepanov +Date: Mon, 14 Feb 2022 13:48:51 +0300 +Subject: [PATCH 1/7] backport classloader patch from #783 + +--- + netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java +index 7ed0c4db6..da23fb5c4 100644 +--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java ++++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java +@@ -1559,6 +1559,12 @@ protected Class findLoadedClassAll(String name) { + */ + @Override + public Class loadClass(String name) throws ClassNotFoundException { ++ synchronized (getClassLoadingLock(name)) { ++ return loadClassImpl(name); ++ } ++ } ++ ++ private Class loadClassImpl(String name) throws ClassNotFoundException { + Class result = findLoadedClassAll(name); + + // try parent classloader + +From 3c25773f7d516f4babaf5e2ab302160914cbb58b Mon Sep 17 00:00:00 2001 +From: lherschi +Date: Tue, 8 Nov 2022 23:25:29 +0100 +Subject: [PATCH 2/7] fix "Unexpected End of ZLIB Input Stream" Task #826 - + IcedTeaWeb + Tomcat Cause "Unexpected End of ZLIB Input Stream" While Caching + +--- + netx/net/sourceforge/jnlp/cache/ResourceDownloader.java | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java b/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java +index e0a123bbd..50d4e12a1 100644 +--- a/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java ++++ b/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java +@@ -396,6 +396,8 @@ private URLConnection getDownloadConnection(URL location) throws IOException { + } + + private void downloadPackGzFile(URLConnection connection, URL downloadFrom, URL downloadTo) throws IOException { ++ if (downloadFrom.equals(downloadTo)) ++ downloadFrom = new URL(downloadFrom + ".pack.gz"); + downloadFile(connection, downloadFrom); + + uncompressPackGz(downloadFrom, downloadTo, resource.getDownloadVersion()); +@@ -405,6 +407,8 @@ private void downloadPackGzFile(URLConnection connection, URL downloadFrom, URL + } + + private void downloadGZipFile(URLConnection connection, URL downloadFrom, URL downloadTo) throws IOException { ++ if (downloadFrom.equals(downloadTo)) ++ downloadFrom = new URL(downloadFrom + ".gz"); + downloadFile(connection, downloadFrom); + + uncompressGzip(downloadFrom, downloadTo, resource.getDownloadVersion()); + +From 1f246bdcd3a7cf4db12b65a838cdcc228e8aec24 Mon Sep 17 00:00:00 2001 +From: lhersch +Date: Wed, 9 Nov 2022 13:38:11 +0100 +Subject: [PATCH 3/7] change to new rhino download url + +--- + .github/workflows/build.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml +index 4f016d3a4..4df43d068 100644 +--- a/.github/workflows/build.yml ++++ b/.github/workflows/build.yml +@@ -49,7 +49,7 @@ jobs: + gmp-devel java-1.8.0-openjdk-devel libcurl-devel make mpfr-devel perl unzip which zip + curl -o tagsoup.jar "https://repo1.maven.org/maven2/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar" + sha256sum tagsoup.jar | awk '$1!="ac97f7b4b1d8e9337edfa0e34044f8d0efe7223f6ad8f3a85d54cc1018ea2e04"{exit 1}' +- curl -o rhino.zip "https://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R7.zip" ++ curl -o rhino.zip "https://mediacdn.prod.productdelivery.prod.webservices.mozgcp.net/pub/js/rhino1_6R7.zip" + sha256sum rhino.zip | awk '$1!="c94c6de3a29b3acbc4eee732e688f75a5d94bd02c9878be4ceb4d3cd220f3866"{exit 1}' + unzip -j rhino.zip "*/js.jar" + +@@ -161,7 +161,7 @@ jobs: + sha256sum tagsoup.jar | awk '$1!="ac97f7b4b1d8e9337edfa0e34044f8d0efe7223f6ad8f3a85d54cc1018ea2e04"{exit 1}' + curl -o mslinks.jar "https://repo1.maven.org/maven2/com/github/vatbub/mslinks/1.0.5/mslinks-1.0.5.jar" + sha256sum mslinks.jar | awk '$1!="e14d756f81b310b75baeb5baf219d25592b6a8635eb215c4059f17493b0cea5c"{exit 1}' +- curl -o rhino.zip "https://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R7.zip" ++ curl -o rhino.zip "https://mediacdn.prod.productdelivery.prod.webservices.mozgcp.net/pub/js/rhino1_6R7.zip" + sha256sum rhino.zip | awk '$1!="c94c6de3a29b3acbc4eee732e688f75a5d94bd02c9878be4ceb4d3cd220f3866"{exit 1}' + unzip -j rhino.zip "*/js.jar" + + +From d3c6a540a1e2405d19d1c743ac853c3520655c4d Mon Sep 17 00:00:00 2001 +From: lhersch +Date: Wed, 9 Nov 2022 14:24:55 +0100 +Subject: [PATCH 4/7] change to new rhino download url + +--- + .github/workflows/build.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml +index 4df43d068..00abe0f89 100644 +--- a/.github/workflows/build.yml ++++ b/.github/workflows/build.yml +@@ -259,7 +259,7 @@ jobs: + brew install autoconf automake coreutils freetype gnu-sed rust + curl -o tagsoup.jar "https://repo1.maven.org/maven2/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar" + sha256sum tagsoup.jar | awk '$1!="ac97f7b4b1d8e9337edfa0e34044f8d0efe7223f6ad8f3a85d54cc1018ea2e04"{exit 1}' +- curl -o rhino.zip "https://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R7.zip" ++ curl -o rhino.zip "https://mediacdn.prod.productdelivery.prod.webservices.mozgcp.net/pub/js/rhino1_6R7.zip" + sha256sum rhino.zip | awk '$1!="c94c6de3a29b3acbc4eee732e688f75a5d94bd02c9878be4ceb4d3cd220f3866"{exit 1}' + unzip -j rhino.zip "*/js.jar" + + +From 8970fed7c8b4ba25adec786104f4d348947c84fe Mon Sep 17 00:00:00 2001 +From: Lars Herschke +Date: Thu, 10 Nov 2022 10:37:45 +0100 +Subject: [PATCH 5/7] fix checkout when using Cygwin Git + +--- + .github/workflows/build.yml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml +index 00abe0f89..8bfc780f5 100644 +--- a/.github/workflows/build.yml ++++ b/.github/workflows/build.yml +@@ -359,9 +359,11 @@ jobs: + + - name: Cygwin git configuration + shell: bash +- run: mkdir $HOME && git config --system core.autocrlf false ++ run: mkdir $HOME && git config --system core.autocrlf false && git config --system --add safe.directory '*' + + - uses: actions/checkout@v2 ++ with: ++ set-safe-directory: false + + - name: Install Dependencies + run: | + +From be989488bb60c23b8ea2b5e95282d661d25a4077 Mon Sep 17 00:00:00 2001 +From: lherschi +Date: Sat, 26 Nov 2022 00:17:10 +0100 +Subject: [PATCH 6/7] backport of #868 + +--- + Makefile.am | 10 +++++++--- + configure.ac | 9 ++++----- + .../jnlp/runtime/JNLPSecurityManager.java | 12 ++++++++---- + netx/net/sourceforge/jnlp/security/package-info.java | 2 +- + .../sourceforge/jnlp/tools/CodeSignerCreator.java | 3 ++- + 5 files changed, 22 insertions(+), 14 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index e44070c17..d762c002b 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -195,6 +195,9 @@ else + NETX_EXCLUDE_SRCS=net.sourceforge.jnlp.MalformedXMLParser.java net.sourceforge.jnlp.util.WindowsDesktopEntry.java + endif + endif ++if !ENABLE_PLUGINJAR ++ NETX_EXCLUDE_SRCS+= net.sourceforge.jnlp.NetxPanel sun.applet.AppletViewerPanelAccess.java ++endif + + # Flags + # macOS requires this flag, see https://youtrack.jetbrains.com/issue/IDEA-72010 +@@ -246,6 +249,7 @@ export ICEDTEAPLUGIN_TARGET = stamps/liveconnect-dist.stamp + export PLUGIN_DIR=$(TOP_BUILD_DIR)/plugin/icedteanp + export PLUGIN_SRCDIR=$(TOP_SRC_DIR)/plugin/icedteanp + export JSOBJECT_DIRS = netscape ++export SUN_DIR = sun + export SUN_APPLET_DIRS = sun/applet + export PLUGIN_PKGS = sun.applet netscape.security netscape.javascript + export LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java +@@ -283,7 +287,7 @@ if ENABLE_DOCS + JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ + -bottom ' Submit a bug or feature' + if HAVE_JAVA9 +-JAVADOC_OPTS+=-source $(IT_LANGUAGE_SOURCE_VERSION) ++JAVADOC_OPTS+=-source $(IT_LANGUAGE_SOURCE_VERSION) --ignore-source-errors + endif + if JAVADOC_SUPPORTS_J_OPTIONS + JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m +@@ -956,11 +960,11 @@ stamps/netx-dist.stamp: stamps/netx.stamp $(TOP_BUILD_DIR)/netx.manifest stamps/ + (cd $(NETX_DIR) ; \ + mkdir -p lib ; \ + $(SYSTEM_JDK_DIR)/bin/jar cfm lib/classes.jar \ +- $(TOP_BUILD_DIR)/netx.manifest javax/jnlp net sun; \ ++ $(TOP_BUILD_DIR)/netx.manifest javax/jnlp net $(SUN_DIR); \ + cp -pPR $(SRC_DIR_LINK) $(NETX_SRCDIR) src; \ + find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ + cd src ; \ +- $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net sun) ++ $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net $(SUN_DIR)) + mkdir -p stamps + touch $@ + +diff --git a/configure.ac b/configure.ac +index b6710ed93..3b5b95ade 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -143,7 +143,6 @@ dnl PR46074 (gcc) - Missing java.net cookie code required by IcedTea plugin + dnl IT563 - NetX uses sun.security code + dnl IT605 - NetX depends on sun.misc HexDumpEncoder or sun.security.util.HexDumpEncoder + dnl IT570 - NetX depends on sun.applet.AppletViewPanel +-dnl IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java + dnl IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java + dnl IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil + dnl IT576 - Plugin depends on sun.applet.AppletImageRef +@@ -172,7 +171,6 @@ else + IT_CHECK_FOR_CLASS(SUN_MISC_LAUNCHER, [sun.misc.Launcher], [some.pkg], [$JAVA_BASE]) + fi + IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException], [some.pkg], [$JAVA_BASE]) +-IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager], [some.pkg], [$JAVA_BASE]) + IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILE, [sun.net.www.protocol.jar.URLJarFile], [some.pkg], [$JAVA_BASE]) + IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILECALLBACK, [sun.net.www.protocol.jar.URLJarFileCallBack], [some.pkg], [$JAVA_BASE]) + if test "x$build_linux" = xyes ; then +@@ -186,9 +184,10 @@ if test "x$build_windows" = xyes ; then + fi + IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil], [some.pkg], [$JAVA_NAMING]) + IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_HTTP_HANDLER, [sun.net.www.protocol.http.Handler], [some.pkg], [$JAVA_BASE]) +-IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef], [sun.applet], [$JAVA_DESKTOP]) +- +-IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY ++if test "$enable_pluginjar" = yes ; then ++ IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef], [sun.applet], [$JAVA_DESKTOP]) ++ IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY ++fi + IT_CHECK_GLIB_VERSION + IT_CHECK_XULRUNNER_MIMEDESCRIPTION_CONSTCHAR + IT_CHECK_XULRUNNER_REQUIRES_C11 +diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java +index 6196a9ea7..fab17a80f 100644 +--- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java ++++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java +@@ -18,6 +18,7 @@ + + import static net.sourceforge.jnlp.runtime.Translator.R; + ++import java.awt.AWTPermission; + import java.awt.Window; + import java.net.SocketPermission; + import java.security.AccessControlException; +@@ -343,7 +344,6 @@ private void addPermission(Permission perm) { + * warning banner, and adds the window to the list of windows to + * be disposed when the calling application exits. + */ +- @Override + public boolean checkTopLevelWindow(Object window) { + ApplicationInstance app = getApplication(); + +@@ -362,7 +362,12 @@ public boolean checkTopLevelWindow(Object window) { + // todo: set awt.appletWarning to custom message + // todo: logo on with glass pane on JFrame/JWindow? + +- return super.checkTopLevelWindow(window); ++ try { ++ checkPermission(new AWTPermission("showWindowWithoutWarningBanner")); ++ return true; ++ } catch (Exception se) { ++ return false; ++ } + } + + /** +@@ -432,7 +437,6 @@ protected void disableExit() { + * @exception SecurityException if the caller does not have + * permission to accesss the AWT event queue. + */ +- @Override + public void checkAwtEventQueueAccess() { + /* + * this is the templace of the code that should allow applets access to +@@ -446,7 +450,7 @@ public void checkAwtEventQueueAccess() { + // If we're about to allow access to the main EventQueue, + // and anything untrusted is on the class context stack, + // disallow access. +- super.checkAwtEventQueueAccess(); ++ checkPermission(new AWTPermission("accessEventQueue")); + // } + } + +diff --git a/netx/net/sourceforge/jnlp/security/package-info.java b/netx/net/sourceforge/jnlp/security/package-info.java +index a894f15c8..bac704a49 100644 +--- a/netx/net/sourceforge/jnlp/security/package-info.java ++++ b/netx/net/sourceforge/jnlp/security/package-info.java +@@ -32,7 +32,7 @@ + statement from your version.*/ + /** + *package generally about showing various security prompts +- *

Following diagram shows how dialog is handled when some application/appelt needs to show it

++ *

Following diagram shows how dialog is handled when some application/appelt needs to show it

+ * + *
+ {@code
+diff --git a/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java b/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java
+index 8d372c022..0eceef613 100644
+--- a/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java
++++ b/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java
+@@ -204,7 +204,8 @@ private String getCertAndKeyGenClass() {
+             String className = null;
+             if (javaVersion.startsWith("1.7")) {
+                 className = "sun.security.x509.CertAndKeyGen";
+-            } else if (javaVersion.startsWith("1.8") || javaVersion.startsWith("1.9")) {
++            } else if (javaVersion.startsWith("1.8") ||
++                       javaVersion.matches("^(9|1[0-3])\\..*")) {
+                 className = "sun.security.tools.keytool.CertAndKeyGen";
+             } else {
+                 throw new AssertionError("Unrecognized Java Version");
+
+From 261ce91cfd6e09887c42ce0b4a4114fb7f511e3d Mon Sep 17 00:00:00 2001
+From: Frederic Thevenet 
+Date: Tue, 28 Feb 2023 19:53:29 +0100
+Subject: [PATCH 7/7]  Fixed issue #691: properties from extension jnlp are not
+ set.
+
+---
+ .../jnlp/runtime/ApplicationInstance.java     | 35 ++++++++++++++++++-
+ 1 file changed, 34 insertions(+), 1 deletion(-)
+
+diff --git a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
+index 6acc5dd38..170e5032a 100644
+--- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
++++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
+@@ -27,10 +27,15 @@
+ import java.security.CodeSource;
+ import java.security.PrivilegedAction;
+ import java.security.ProtectionDomain;
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.List;
+ 
+ import javax.swing.event.EventListenerList;
+ 
+ import sun.awt.AppContext;
++import net.sourceforge.jnlp.ExtensionDesc;
++import net.sourceforge.jnlp.ParseException;
+ import net.sourceforge.jnlp.JNLPFile;
+ import net.sourceforge.jnlp.PropertyDesc;
+ import net.sourceforge.jnlp.SecurityDesc;
+@@ -314,7 +319,7 @@ public void finalize() {
+      * Install the environment variables.
+      */
+     void installEnvironment() {
+-        final PropertyDesc props[] = file.getResources().getProperties();
++        final List props = collectPropertiesFromJnlpHierarchy(new ArrayList<>(), file);
+ 
+         CodeSource cs = new CodeSource((URL) null, (java.security.cert.Certificate[]) null);
+ 
+@@ -331,6 +336,8 @@ void installEnvironment() {
+             public Object run() {
+                 for (PropertyDesc propDesc : props) {
+                     System.setProperty(propDesc.getKey(), propDesc.getValue());
++                    OutputController.getLogger().log(OutputController.Level.MESSAGE_DEBUG,
++                            "Setting property: " + propDesc.getKey() + " = " + propDesc.getValue());
+                 }
+ 
+                 return null;
+@@ -339,6 +346,32 @@ public Object run() {
+         AccessController.doPrivileged(installProps, acc);
+     }
+ 
++    /**
++     * Collects properties from the full hierarchy of JNLP files
++     *
++     * @param props a list of all properties collected so far
++     * @param jnlpFile the current tip of the jnlp hierarchy
++     * @return a list of properties collected from the full hierarchy of JNLP files
++     */
++    private List collectPropertiesFromJnlpHierarchy(List props, JNLPFile jnlpFile) {
++        // Collect properties from the current jnlp file
++        props.addAll(Arrays.asList(jnlpFile.getResources().getProperties()));
++        for (ExtensionDesc ext : jnlpFile.getResources().getExtensions()) {
++            // Recursively look for extension jnlp files to collect their properties
++            try {
++                ext.resolve();
++                JNLPFile extFile = ext.getJNLPFile();
++                if (extFile != null) {
++                    collectPropertiesFromJnlpHierarchy(props, extFile);
++                }
++            } catch (ParseException | IOException e) {
++                OutputController.getLogger().log(OutputController.Level.WARNING_ALL,
++                        "Could not resolve JNLP file " + ext.getName() + " (declared properties won't be set): " + e.getMessage());
++            }
++        }
++        return props;
++    }
++
+     /**
+      * Returns the jnlpfile on which is this application based
+      * @return JNLP file for this task.
diff --git a/icedtea-web.spec b/icedtea-web.spec
index a5661f1..c8fa7c0 100644
--- a/icedtea-web.spec
+++ b/icedtea-web.spec
@@ -9,33 +9,34 @@
 
 Name:          icedtea-web
 Version:       1.8.8
-Release:       4mamba
+Release:       5mamba
 Summary:       IcedTea Web Start implementation
 Group:         System/Libraries/Java
 Vendor:        openmamba
 Distribution:  openmamba
 Packager:      Silvan Calarco 
-URL:           https://icedtea.classpath.org/
+URL:           https://github.com/AdoptOpenJDK/IcedTea-Web
 Source:        https://github.com/AdoptOpenJDK/IcedTea-Web/archive/icedtea-web-%{version}.tar.gz
+Patch0:        icedtea-web-1.8.8-upstream-changes.patch
+Patch1:        icedtea-web-1.8.8-remove-dunce.patch
+Patch2:        icedtea-web-1.8.8-no-pack200.patch
+Patch3:        icedtea-web-1.8.8-bash-completion.patch
+Patch4:        icedtea-web-1.8.8-disable-pluginjar.patch
+Patch5:        icedtea-web-1.8.8-javadoc-param.patch
+Patch6:        icedtea-web-1.8.8-untranslated-man-pages.patch
 License:       GPL
 ## AUTOBUILDREQ-BEGIN
 BuildRequires: glibc-devel
 BuildRequires: libgcc
-BuildRequires: libglib-devel
-BuildRequires: libstdc++6-devel
 ## AUTOBUILDREQ-END
 BuildRequires: desktop-file-utils
-BuildRequires: eclipse-ecj
-BuildRequires: java-openjdk8
+BuildRequires: java-openjdk17
 BuildRequires: java-junit
-BuildRequires: java-rhino
 BuildRequires: java-hamcrest
 BuildRequires: java-tagsoup
 BuildRequires: objectweb-asm
 BuildRequires: rustc
-#BuildRequires: zsh
-Requires:      java-openjdk8-runtime
-Requires:      java-rhino
+Requires:      java-openjdk17-runtime
 Obsoletes:     icedtea-web-plugin <= 1.8.8-1mamba
 
 %description
@@ -53,27 +54,39 @@ The IcedTea Web API documentation.
 
 %prep
 %setup -q -n IcedTea-Web-%{name}-%{version}
+%patch 0 -p1 -b .upstream-changes
+%patch 1 -p1 -b .remove-dunce
+%patch 2 -p1 -b .no-pack200
+%patch 3 -p1 -b .bash-completion
+%patch 4 -p1 -b .disable-pluginjar
+%patch 5 -p1 -b .javadoc-param
+%patch 6 -p1 -b .untranslated-man-pages
+
+# Remove applet support
+rm -rf plugin netx/sun netx/net/sourceforge/jnlp/{NetxPanel,runtime/RhinoBasedPacEvaluator,util/WindowsDesktopEntry}.java
+
+# Remove unused sources
+rm -rf tests win-installer
+
 ./autogen.sh
 
 %build
 unset JAVA_HOME CLASSPATH
 ./configure \
+  --with-pkgversion=openmamba-%{release}-%{_arch} \
   --prefix=%{_datadir}/icedtea-web \
   --datadir=%{_datadir} \
   --datarootdir=%{_datadir} \
   --mandir=%{_mandir} \
   --docdir=%{_docdir}/icedtea-web \
   --htmldir=%{_javadocdir}/icedtea-web \
-  --with-jdk-home=%{_jvmdir}/java-8 \
-  --with-jre-home=%{_jvmdir}/jre-8 \
-  --with-chromium=%{_bindir}/chromium \
-  --with-firefox=%{_bindir}/firefox \
-  --with-epiphany=%{_bindir}/epiphany \
+  --with-jdk-home=%{_jvmdir}/java-17 \
+  --with-jre-home=%{_jvmdir}/jre-17 \
+  --disable-native-plugin \
+  --disable-pluginjar \
+  --enable-shell-launchers \
   --with-itw-libs=DISTRIBUTION
 
-#  --enable-docs \
-#  --with-ecj-jar=$(build-classpath eclipse-ecj) \
-
 %make
 
 %install
@@ -84,8 +97,17 @@ install -d -m 755 %{buildroot}%{_libdir}/mozilla/plugins
 
 install -D -m0644 javaws.desktop %{buildroot}%{_datadir}/applications/javaws.desktop
 install -D -m0644 itweb-settings.desktop %{buildroot}%{_datadir}/applications/itweb-settings.desktop
+install -D -m0644 itweb-settings.desktop %{buildroot}%{_datadir}/applications/policyeditor.desktop
 install -D -m0644 javaws.png %{buildroot}%{_datadir}/pixmaps/javaws.png
 
+# Install MetaInfo file for firefox
+install -D -p -m 0644 metadata/%{name}.metainfo.xml $RPM_BUILD_ROOT%{_metainfodir}/%{name}.metainfo.xml
+# Install MetaInfo file for javaws
+install -D -p -m 0644 metadata/%{name}-javaws.appdata.xml $RPM_BUILD_ROOT%{_metainfodir}/%{name}-javaws.metainfo.xml
+
+# FIXME: provided in bash-completion package
+rm -f %{buildroot}%{_datadir}/bash-completion/completions/javaws
+
 %clean
 [ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
 
@@ -99,6 +121,7 @@ fi
 :
 
 %post
+if [ $1 -ge 1 ]; then
   [ -L /usr/bin/javaws -a "`readlink /usr/bin/javaws`" != "/etc/alternatives/javaws" ] &&
     rm -f /usr/bin/javaws 2>/dev/null
     /usr/sbin/update-alternatives --install %{_bindir}/javaws javaws %{_datadir}/icedtea-web/bin/javaws 71
@@ -107,6 +130,9 @@ fi
     rm -f /usr/bin/itweb-settings 2>/dev/null
     /usr/sbin/update-alternatives --install %{_bindir}/itweb-settings itweb-settings %{_datadir}/icedtea-web/bin/itweb-settings 71
 
+    /usr/sbin/update-alternatives --install %{_bindir}/policyeditor policyeditor %{_datadir}/icedtea-web/bin/policyeditor 71
+fi
+
 update-desktop-database %{_datadir}/applications &> /dev/null || :
 
 touch --no-create %{_datadir}/icons/hicolor
@@ -125,6 +151,8 @@ if [ $1 -eq 0 ]; then
     rm -f /usr/bin/itweb-settings
   /usr/sbin/update-alternatives --remove javaws %{_datadir}/icedtea-web/bin/itweb-settings
 
+  /usr/sbin/update-alternatives --remove policyeditor %{_datadir}/icedtea-web/bin/policyeditor
+
 fi
 :
 
@@ -136,6 +164,7 @@ if [ $1 -eq 0 ]; then
   [ -L /usr/bin/itweb-settings -a "`readlink /usr/bin/itweb-settings`" != "/etc/alternatives/itweb-settings" ] &&
     rm -f /usr/bin/itweb-settings
   /usr/sbin/update-alternatives --remove javaws %{_datadir}/icedtea-web/bin/itweb-settings
+  /usr/sbin/update-alternatives --remove policyeditor %{_datadir}/icedtea-web/bin/policyeditor
 
 fi
 
@@ -151,6 +180,7 @@ fi
 if [ $1 -ge 1 ]; then
    /usr/sbin/update-alternatives --auto javaws
    /usr/sbin/update-alternatives --auto itweb-settings
+   /usr/sbin/update-alternatives --auto policyeditor
 fi
 :
 
@@ -160,16 +190,15 @@ fi
 %{_datadir}/icedtea-web/*
 %{_datadir}/applications/itweb-settings.desktop
 %{_datadir}/applications/javaws.desktop
-%{_datadir}/bash-completion/completions/*.bash
+%{_datadir}/applications/policyeditor.desktop
+%{_metainfodir}/icedtea-web-javaws.metainfo.xml
+%{_metainfodir}/icedtea-web.metainfo.xml
+%{_datadir}/bash-completion/completions/*
 %{_datadir}/pixmaps/javaws.png
-%{_mandir}/man1/icedtea-web-plugin.1*
 %{_mandir}/man1/icedtea-web.1*
 %{_mandir}/man1/itweb-settings.1*
 %{_mandir}/man1/javaws.1*
 %{_mandir}/man1/policyeditor.1*
-%lang(cs) %{_mandir}/cs/man1/*.1*
-%lang(de) %{_mandir}/de/man1/*.1*
-%lang(pl) %{_mandir}/pl/man1/*.1*
 %doc AUTHORS COPYING
 
 %files javadoc
@@ -177,6 +206,9 @@ fi
 %{_javadocdir}/icedtea-web
 
 %changelog
+* Thu Dec 05 2024 Silvan Calarco  1.8.8-5mamba
+- removed build requirement for eclipse-ecj, rebuilt with java 17 (patches from Fedora)
+
 * Wed Oct 25 2023 Silvan Calarco  1.8.8-4mamba
 - rebuild with only necessary builddeps and deps