commit
cbcd4cf7f8
@ -0,0 +1 @@
|
|||||||
|
SOURCES/icedtea-web-1.8.4.tar.gz
|
@ -0,0 +1 @@
|
|||||||
|
08f339753946626f5f46d11120dce44d5e6f6540 SOURCES/icedtea-web-1.8.4.tar.gz
|
@ -0,0 +1,40 @@
|
|||||||
|
--- IcedTea-Web-icedtea-web-1.8.4/shell-launcher/launchers.sh.in
|
||||||
|
+++ iIcedTea-Web-cedtea-web-1.8.4/shell-launcher/launchers.sh.in
|
||||||
|
@@ -193,6 +193,12 @@
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
+java_dir="`dirname ${JAVA}`"
|
||||||
|
+alt_java="alt-java"
|
||||||
|
+if [ -e "$java_dir/$alt_java" ] ; then
|
||||||
|
+ JAVA="`dirname ${JAVA}`/$alt_java"
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
# TODO: inline args without using COMMAND[array] to unify linux/windows scripts
|
||||||
|
k=0
|
||||||
|
COMMAND[k]="${JAVA}"
|
||||||
|
--- IcedTea-Web-icedtea-web-1.8.4/rust-launcher/src/os_access.rs
|
||||||
|
+++ IcedTea-Web-icedtea-web-1.8.4/rust-launcher/src/os_access.rs
|
||||||
|
@@ -5,9 +5,19 @@
|
||||||
|
use log_helper;
|
||||||
|
|
||||||
|
pub fn create_java_cmd(os: &Os,jre_dir: &std::path::PathBuf, args: &Vec<String>) -> std::process::Command {
|
||||||
|
- let mut bin_java = jre_dir.clone();
|
||||||
|
- bin_java.push("bin");
|
||||||
|
- bin_java.push("java");
|
||||||
|
+ let mut alt_bin_java = jre_dir.clone();
|
||||||
|
+ alt_bin_java.push("bin");
|
||||||
|
+ alt_bin_java.push("alt-java");
|
||||||
|
+ let mut bin_java;
|
||||||
|
+ if alt_bin_java.exists() {
|
||||||
|
+ os.log("itw-rust-debug: alt-java found");
|
||||||
|
+ bin_java = alt_bin_java;
|
||||||
|
+ } else {
|
||||||
|
+ os.log("itw-rust-debug: alt-java NOT found");
|
||||||
|
+ bin_java = jre_dir.clone();
|
||||||
|
+ bin_java.push("bin");
|
||||||
|
+ bin_java.push("java");
|
||||||
|
+ }
|
||||||
|
let mut cmd = std::process::Command::new(&bin_java);
|
||||||
|
for ar in args.into_iter() {
|
||||||
|
cmd.arg(ar);
|
@ -0,0 +1,735 @@
|
|||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index 3f73cff7..1112bf49 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -956,10 +956,10 @@ if ENABLE_NATIVE_LAUNCHERS
|
||||||
|
# there is curently harecoded sh, so it can somehow basically work
|
||||||
|
# see the DESKTOP_SUFFIX for final tuning
|
||||||
|
launcher.build/$(javaws) launcher.build/$(itweb_settings) launcher.build/$(policyeditor): rust-launcher/src/main.rs rust-launcher/Cargo.toml
|
||||||
|
- export ITW_TMP_REPLACEMENT=$(TESTS_DIR)/rust_tests_tmp ; \
|
||||||
|
- mkdir -p $$ITW_TMP_REPLACEMENT; \
|
||||||
|
filename=`basename $@` ; \
|
||||||
|
type=$${filename%.*} ; \
|
||||||
|
+ export ITW_TMP_REPLACEMENT=$(TESTS_DIR)/rust_tests_tmp/$$type ; \
|
||||||
|
+ mkdir -p $$ITW_TMP_REPLACEMENT; \
|
||||||
|
srcs=$(TOP_SRC_DIR)/rust-launcher ; \
|
||||||
|
outs=$(TOP_BUILD_DIR)/launcher.in.$$type ; \
|
||||||
|
mkdir -p launcher.build ; \
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 5bcb1046..03796e39 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -71,7 +71,7 @@ AM_CONDITIONAL([ENABLE_NATIVE_LAUNCHERS], [test ! x"$RUSTC" = x -a ! x"$CARGO" =
|
||||||
|
build_linux=no
|
||||||
|
build_windows=no
|
||||||
|
case "${host_os}" in
|
||||||
|
- linux*)
|
||||||
|
+ linux*|freebsd*)
|
||||||
|
build_linux=yes
|
||||||
|
;;
|
||||||
|
cygwin*)
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/Launcher.java b/netx/net/sourceforge/jnlp/Launcher.java
|
||||||
|
index bcfd7b34..1ff42421 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/Launcher.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/Launcher.java
|
||||||
|
@@ -552,7 +552,7 @@ public class Launcher {
|
||||||
|
}
|
||||||
|
|
||||||
|
OutputController.getLogger().log(OutputController.Level.ERROR_ALL, "Starting application [" + mainName + "] ...");
|
||||||
|
-
|
||||||
|
+
|
||||||
|
Class<?> mainClass = app.getClassLoader().loadClass(mainName);
|
||||||
|
|
||||||
|
Method main = mainClass.getMethod("main", new Class<?>[] { String[].class });
|
||||||
|
@@ -572,6 +572,7 @@ public class Launcher {
|
||||||
|
|
||||||
|
main.setAccessible(true);
|
||||||
|
|
||||||
|
+ JNLPRuntime.addStartupTrackingEntry("invoking main()");
|
||||||
|
OutputController.getLogger().log("Invoking main() with args: " + Arrays.toString(args));
|
||||||
|
main.invoke(null, new Object[] { args });
|
||||||
|
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/OptionsDefinitions.java b/netx/net/sourceforge/jnlp/OptionsDefinitions.java
|
||||||
|
index c87b4a79..16ef46d3 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/OptionsDefinitions.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/OptionsDefinitions.java
|
||||||
|
@@ -78,6 +78,7 @@ public class OptionsDefinitions {
|
||||||
|
JNLP("-jnlp","BOJnlp", NumberOfArguments.ONE),
|
||||||
|
HTML("-html","BOHtml", NumberOfArguments.ONE_OR_MORE),
|
||||||
|
BROWSER("-browser", "BrowserArg", NumberOfArguments.ONE_OR_MORE),
|
||||||
|
+ STARTUP_TRACKER("-startuptracker","BOStartupTracker"),
|
||||||
|
//itweb settings
|
||||||
|
LIST("-list", "IBOList"),
|
||||||
|
GET("-get", "name", "IBOGet", NumberOfArguments.ONE_OR_MORE),
|
||||||
|
@@ -222,7 +223,8 @@ public class OptionsDefinitions {
|
||||||
|
OPTIONS.TRUSTNONE,
|
||||||
|
OPTIONS.JNLP,
|
||||||
|
OPTIONS.HTML,
|
||||||
|
- OPTIONS.BROWSER
|
||||||
|
+ OPTIONS.BROWSER,
|
||||||
|
+ OPTIONS.STARTUP_TRACKER
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/cache/CacheEntry.java b/netx/net/sourceforge/jnlp/cache/CacheEntry.java
|
||||||
|
index 3a241acb..c5f1f329 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/cache/CacheEntry.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/cache/CacheEntry.java
|
||||||
|
@@ -47,6 +47,8 @@ public class CacheEntry {
|
||||||
|
/** info about the cached file */
|
||||||
|
private final PropertiesFile properties;
|
||||||
|
|
||||||
|
+ private File localFile;
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Create a CacheEntry for the resources specified as a remote
|
||||||
|
* URL.
|
||||||
|
@@ -58,8 +60,8 @@ public class CacheEntry {
|
||||||
|
this.location = location;
|
||||||
|
this.version = version;
|
||||||
|
|
||||||
|
- File infoFile = CacheUtil.getCacheFile(location, version);
|
||||||
|
- infoFile = new File(infoFile.getPath() + CacheDirectory.INFO_SUFFIX); // replace with something that can't be clobbered
|
||||||
|
+ this.localFile = CacheUtil.getCacheFile(location, version);
|
||||||
|
+ File infoFile = new File(localFile.getPath() + CacheDirectory.INFO_SUFFIX); // replace with something that can't be clobbered
|
||||||
|
|
||||||
|
properties = new PropertiesFile(infoFile, R("CAutoGen"));
|
||||||
|
}
|
||||||
|
@@ -130,7 +132,11 @@ public class CacheEntry {
|
||||||
|
* @return whether the cache contains the version
|
||||||
|
*/
|
||||||
|
public boolean isCurrent(long lastModified) {
|
||||||
|
- boolean cached = isCached();
|
||||||
|
+ return isCurrent(lastModified, null);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public boolean isCurrent(long lastModified, File cachedFile) {
|
||||||
|
+ boolean cached = isCached(cachedFile);
|
||||||
|
OutputController.getLogger().log("isCurrent:isCached " + cached);
|
||||||
|
|
||||||
|
if (!cached) {
|
||||||
|
@@ -153,7 +159,16 @@ public class CacheEntry {
|
||||||
|
* @return true if the resource is in the cache
|
||||||
|
*/
|
||||||
|
public boolean isCached() {
|
||||||
|
- File localFile = getCacheFile();
|
||||||
|
+ return isCached(null);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public boolean isCached(File cachedFile) {
|
||||||
|
+ final File localFile;
|
||||||
|
+ if (null == version && null != cachedFile) {
|
||||||
|
+ localFile = cachedFile;
|
||||||
|
+ } else {
|
||||||
|
+ localFile = getCacheFile();
|
||||||
|
+ }
|
||||||
|
if (!localFile.exists())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
@@ -224,4 +239,7 @@ public class CacheEntry {
|
||||||
|
return properties.isHeldByCurrentThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public File getLocalFile() {
|
||||||
|
+ return localFile;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/cache/CacheUtil.java b/netx/net/sourceforge/jnlp/cache/CacheUtil.java
|
||||||
|
index 486421b9..d298d203 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java
|
||||||
|
@@ -422,14 +422,13 @@ public class CacheUtil {
|
||||||
|
* @return whether the cache contains the version
|
||||||
|
* @throws IllegalArgumentException if the source is not cacheable
|
||||||
|
*/
|
||||||
|
- public static boolean isCurrent(URL source, Version version, long lastModifed) {
|
||||||
|
+ public static boolean isCurrent(URL source, Version version, long lastModifed, CacheEntry entry, File cachedFile) {
|
||||||
|
|
||||||
|
if (!isCacheable(source, version))
|
||||||
|
throw new IllegalArgumentException(R("CNotCacheable", source));
|
||||||
|
|
||||||
|
try {
|
||||||
|
- CacheEntry entry = new CacheEntry(source, version); // could pool this
|
||||||
|
- boolean result = entry.isCurrent(lastModifed);
|
||||||
|
+ boolean result = entry.isCurrent(lastModifed, cachedFile);
|
||||||
|
|
||||||
|
OutputController.getLogger().log("isCurrent: " + source + " = " + result);
|
||||||
|
|
||||||
|
@@ -796,6 +795,8 @@ public class CacheUtil {
|
||||||
|
}
|
||||||
|
URL undownloaded[] = urlList.toArray(new URL[urlList.size()]);
|
||||||
|
|
||||||
|
+ final int maxUrls = Integer.parseInt(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_MAX_URLS_DOWNLOAD_INDICATOR));
|
||||||
|
+
|
||||||
|
listener = indicator.getListener(app, title, undownloaded);
|
||||||
|
|
||||||
|
do {
|
||||||
|
@@ -810,20 +811,30 @@ public class CacheUtil {
|
||||||
|
|
||||||
|
int percent = (int) ((100 * read) / Math.max(1, total));
|
||||||
|
|
||||||
|
+ int urlCounter = 0;
|
||||||
|
for (URL url : undownloaded) {
|
||||||
|
+ if (urlCounter > maxUrls) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
listener.progress(url, "version",
|
||||||
|
tracker.getAmountRead(url),
|
||||||
|
tracker.getTotalSize(url),
|
||||||
|
percent);
|
||||||
|
+ urlCounter += 1;
|
||||||
|
}
|
||||||
|
} while (!tracker.waitForResources(resources, indicator.getUpdateRate()));
|
||||||
|
|
||||||
|
// make sure they read 100% until indicator closes
|
||||||
|
+ int urlCounter = 0;
|
||||||
|
for (URL url : undownloaded) {
|
||||||
|
+ if (urlCounter > maxUrls) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
listener.progress(url, "version",
|
||||||
|
tracker.getTotalSize(url),
|
||||||
|
tracker.getTotalSize(url),
|
||||||
|
100);
|
||||||
|
+ urlCounter += 1;
|
||||||
|
}
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
OutputController.getLogger().log(ex);
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/cache/CachedDaemonThreadPoolProvider.java b/netx/net/sourceforge/jnlp/cache/CachedDaemonThreadPoolProvider.java
|
||||||
|
index 1cd4df23..ff48662d 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/cache/CachedDaemonThreadPoolProvider.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/cache/CachedDaemonThreadPoolProvider.java
|
||||||
|
@@ -36,9 +36,14 @@
|
||||||
|
exception statement from your version. */
|
||||||
|
package net.sourceforge.jnlp.cache;
|
||||||
|
|
||||||
|
+import net.sourceforge.jnlp.config.DeploymentConfiguration;
|
||||||
|
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
|
||||||
|
+
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
-import java.util.concurrent.Executors;
|
||||||
|
+import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.ThreadFactory;
|
||||||
|
+import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
+import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
public class CachedDaemonThreadPoolProvider {
|
||||||
|
@@ -81,6 +86,19 @@ public class CachedDaemonThreadPoolProvider {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- public static final ExecutorService DAEMON_THREAD_POOL = Executors.newCachedThreadPool(new DaemonThreadFactory());
|
||||||
|
+ public static synchronized ExecutorService getThreadPool() {
|
||||||
|
+ if (null == DAEMON_THREAD_POOL) {
|
||||||
|
+ final int nThreads = Integer.parseInt(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_BACKGROUND_THREADS_COUNT));
|
||||||
|
+ ThreadPoolExecutor pool = new ThreadPoolExecutor(nThreads, nThreads,
|
||||||
|
+ 60L, TimeUnit.SECONDS,
|
||||||
|
+ new LinkedBlockingQueue<Runnable>(),
|
||||||
|
+ new DaemonThreadFactory());
|
||||||
|
+ pool.allowCoreThreadTimeOut(true);
|
||||||
|
+ DAEMON_THREAD_POOL = pool;
|
||||||
|
+ }
|
||||||
|
+ return DAEMON_THREAD_POOL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static ExecutorService DAEMON_THREAD_POOL = null;
|
||||||
|
|
||||||
|
}
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java b/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java
|
||||||
|
index 643b46fd..e0a123bb 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/cache/ResourceDownloader.java
|
||||||
|
@@ -153,7 +153,12 @@ public class ResourceDownloader implements Runnable {
|
||||||
|
URLConnection connection = ConnectionFactory.getConnectionFactory().openConnection(location.URL); // this won't change so should be okay not-synchronized
|
||||||
|
connection.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip");
|
||||||
|
|
||||||
|
- File localFile = CacheUtil.getCacheFile(resource.getLocation(), resource.getDownloadVersion());
|
||||||
|
+ File localFile = null;
|
||||||
|
+ if (resource.getRequestVersion() == resource.getDownloadVersion()) {
|
||||||
|
+ localFile = entry.getLocalFile();
|
||||||
|
+ } else {
|
||||||
|
+ localFile = CacheUtil.getCacheFile(resource.getLocation(), resource.getDownloadVersion());
|
||||||
|
+ }
|
||||||
|
Long size = location.length;
|
||||||
|
if (size == null) {
|
||||||
|
size = connection.getContentLengthLong();
|
||||||
|
@@ -162,7 +167,7 @@ public class ResourceDownloader implements Runnable {
|
||||||
|
if (lm == null) {
|
||||||
|
lm = connection.getLastModified();
|
||||||
|
}
|
||||||
|
- boolean current = CacheUtil.isCurrent(resource.getLocation(), resource.getRequestVersion(), lm) && resource.getUpdatePolicy() != UpdatePolicy.FORCE;
|
||||||
|
+ boolean current = CacheUtil.isCurrent(resource.getLocation(), resource.getRequestVersion(), lm, entry, localFile) && resource.getUpdatePolicy() != UpdatePolicy.FORCE;
|
||||||
|
if (!current) {
|
||||||
|
if (entry.isCached()) {
|
||||||
|
entry.markForDelete();
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
|
||||||
|
index f4ad69be..972a10cf 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
|
||||||
|
@@ -28,10 +28,7 @@ import static net.sourceforge.jnlp.cache.Resource.Status.PROCESSING;
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
-import java.util.ArrayList;
|
||||||
|
-import java.util.Collection;
|
||||||
|
-import java.util.EnumSet;
|
||||||
|
-import java.util.List;
|
||||||
|
+import java.util.*;
|
||||||
|
|
||||||
|
import net.sourceforge.jnlp.DownloadOptions;
|
||||||
|
import net.sourceforge.jnlp.Version;
|
||||||
|
@@ -105,6 +102,7 @@ public class ResourceTracker {
|
||||||
|
|
||||||
|
/** the resources known about by this resource tracker */
|
||||||
|
private final List<Resource> resources = new ArrayList<>();
|
||||||
|
+ private final HashMap<String, Resource> resourcesMap = new HashMap<>();
|
||||||
|
|
||||||
|
/** download listeners for this tracker */
|
||||||
|
private final List<DownloadListener> listeners = new ArrayList<>();
|
||||||
|
@@ -155,6 +153,7 @@ public class ResourceTracker {
|
||||||
|
return;
|
||||||
|
resource.addTracker(this);
|
||||||
|
resources.add(resource);
|
||||||
|
+ resourcesMap.put(location.toString(), resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options == null) {
|
||||||
|
@@ -190,6 +189,7 @@ public class ResourceTracker {
|
||||||
|
|
||||||
|
if (resource != null) {
|
||||||
|
resources.remove(resource);
|
||||||
|
+ resourcesMap.remove(location.toString());
|
||||||
|
resource.removeTracker(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -508,7 +508,7 @@ public class ResourceTracker {
|
||||||
|
* @param resource resource to be download
|
||||||
|
*/
|
||||||
|
protected void startDownloadThread(Resource resource) {
|
||||||
|
- CachedDaemonThreadPoolProvider.DAEMON_THREAD_POOL.execute(new ResourceDownloader(resource, lock));
|
||||||
|
+ CachedDaemonThreadPoolProvider.getThreadPool().execute(new ResourceDownloader(resource, lock));
|
||||||
|
}
|
||||||
|
|
||||||
|
static Resource selectByFilter(Collection<Resource> source, Filter<Resource> filter) {
|
||||||
|
@@ -569,6 +569,12 @@ public class ResourceTracker {
|
||||||
|
*/
|
||||||
|
private Resource getResource(URL location) {
|
||||||
|
synchronized (resources) {
|
||||||
|
+ if (null != location) {
|
||||||
|
+ Resource res = resourcesMap.get(location.toString());
|
||||||
|
+ if (null != res && UrlUtils.urlEquals(res.getLocation(), location)) {
|
||||||
|
+ return res;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
for (Resource resource : resources) {
|
||||||
|
if (UrlUtils.urlEquals(resource.getLocation(), location))
|
||||||
|
return resource;
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/config/Defaults.java b/netx/net/sourceforge/jnlp/config/Defaults.java
|
||||||
|
index 8e316e4f..78f9b3e6 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/config/Defaults.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/config/Defaults.java
|
||||||
|
@@ -466,6 +466,21 @@ public class Defaults {
|
||||||
|
BasicValueValidators.getRangedIntegerValidator(0, 1000),
|
||||||
|
String.valueOf(10)// treshold when applet is considered as too small
|
||||||
|
},
|
||||||
|
+ {
|
||||||
|
+ DeploymentConfiguration.KEY_ENABLE_CACHE_FSYNC,
|
||||||
|
+ BasicValueValidators.getBooleanValidator(),
|
||||||
|
+ String.valueOf(false)
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ DeploymentConfiguration.KEY_BACKGROUND_THREADS_COUNT,
|
||||||
|
+ BasicValueValidators.getRangedIntegerValidator(1, 16),
|
||||||
|
+ String.valueOf(3)
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ DeploymentConfiguration.KEY_MAX_URLS_DOWNLOAD_INDICATOR,
|
||||||
|
+ BasicValueValidators.getRangedIntegerValidator(1, 1024),
|
||||||
|
+ String.valueOf(16)
|
||||||
|
+ },
|
||||||
|
//**************
|
||||||
|
//* Native (rust) only - beggin
|
||||||
|
//**************
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
|
||||||
|
index de7425e3..84f77075 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
|
||||||
|
@@ -250,7 +250,10 @@ public final class DeploymentConfiguration {
|
||||||
|
public static final String KEY_SMALL_SIZE_OVERRIDE_TRESHOLD = "deployment.small.size.treshold";
|
||||||
|
public static final String KEY_SMALL_SIZE_OVERRIDE_WIDTH = "deployment.small.size.override.width";
|
||||||
|
public static final String KEY_SMALL_SIZE_OVERRIDE_HEIGHT = "deployment.small.size.override.height";
|
||||||
|
-
|
||||||
|
+ public static final String KEY_ENABLE_CACHE_FSYNC = "deployment.enable.cache.fsync";
|
||||||
|
+ public static final String KEY_BACKGROUND_THREADS_COUNT = "deployment.background.threads.count";
|
||||||
|
+ public static final String KEY_MAX_URLS_DOWNLOAD_INDICATOR = "deployment.max.urls.download.indicator";
|
||||||
|
+
|
||||||
|
public static final String TRANSFER_TITLE = "Legacy configuration and cache found. Those will be now transported to new locations";
|
||||||
|
|
||||||
|
private ConfigurationException loadingException = null;
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/resources/Messages.properties b/netx/net/sourceforge/jnlp/resources/Messages.properties
|
||||||
|
index 773f134b..0e87bce3 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties
|
||||||
|
@@ -357,6 +357,7 @@ BXoffline = Prevent ITW network connection. Only cache will be used. Applicati
|
||||||
|
BOHelp1 = Prints out information about supported command and basic usage.
|
||||||
|
BOHelp2 = Prints out information about supported command and basic usage. Can also take an parameter, and then it prints detailed help for this command.
|
||||||
|
BOTrustnone = Instead of asking user, will foretold all answers as no.
|
||||||
|
+BOStartupTracker = Enable startup time tracker
|
||||||
|
|
||||||
|
# Itweb-settings boot commands
|
||||||
|
IBOList=Shows a list of all the IcedTea-Web settings and their current values.
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/runtime/Boot.java b/netx/net/sourceforge/jnlp/runtime/Boot.java
|
||||||
|
index 7317b989..a9990909 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/runtime/Boot.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/runtime/Boot.java
|
||||||
|
@@ -107,6 +107,10 @@ public final class Boot implements PrivilegedAction<Void> {
|
||||||
|
|
||||||
|
optionParser = new OptionParser(argsIn, OptionsDefinitions.getJavaWsOptions());
|
||||||
|
|
||||||
|
+ if (optionParser.hasOption(OptionsDefinitions.OPTIONS.STARTUP_TRACKER)) {
|
||||||
|
+ JNLPRuntime.initStartupTracker();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)) {
|
||||||
|
JNLPRuntime.setDebug(true);
|
||||||
|
}
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java b/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java
|
||||||
|
index 9746f5d0..811d132e 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java
|
||||||
|
@@ -43,6 +43,7 @@ import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
+import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.security.AccessController;
|
||||||
|
@@ -103,9 +104,11 @@ final class CachedJarFileCallback implements URLJarFileCallBack {
|
||||||
|
|
||||||
|
if (UrlUtils.isLocalFile(localUrl)) {
|
||||||
|
// if it is known to us, just return the cached file
|
||||||
|
- JarFile returnFile = new JarFile(localUrl.getPath());
|
||||||
|
+ JarFile returnFile=null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
+ localUrl.toURI().getPath();
|
||||||
|
+ returnFile = new JarFile(localUrl.toURI().getPath());
|
||||||
|
|
||||||
|
// Blank out the class-path because:
|
||||||
|
// 1) Web Start does not support it
|
||||||
|
@@ -117,6 +120,8 @@ final class CachedJarFileCallback implements URLJarFileCallBack {
|
||||||
|
|
||||||
|
} catch (NullPointerException npe) {
|
||||||
|
// Discard NPE here. Maybe there was no manifest, maybe there were no attributes, etc.
|
||||||
|
+ } catch (URISyntaxException e) {
|
||||||
|
+ // should not happen as localUrl was built using localFile.toURI().toURL(), see JNLPClassLoader.activateJars(List<JARDesc>)
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnFile;
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
|
||||||
|
index 3785707a..77576fdd 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
|
||||||
|
@@ -709,7 +709,9 @@ public class JNLPClassLoader extends URLClassLoader {
|
||||||
|
fillInPartJars(initialJars); // add in each initial part's lazy jars
|
||||||
|
}
|
||||||
|
|
||||||
|
+ JNLPRuntime.addStartupTrackingEntry("JARs download enter");
|
||||||
|
waitForJars(initialJars); //download the jars first.
|
||||||
|
+ JNLPRuntime.addStartupTrackingEntry("JARs download complete");
|
||||||
|
|
||||||
|
//A ZipException will propagate later on if the jar is invalid and not checked here
|
||||||
|
if (shouldFilterInvalidJars()) {
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
|
||||||
|
index 295744db..919f78fd 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
|
||||||
|
@@ -170,6 +170,7 @@ public class JNLPRuntime {
|
||||||
|
|
||||||
|
private static Boolean onlineDetected = null;
|
||||||
|
|
||||||
|
+ private static long startupTrackerMoment = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Header is not checked and so eg
|
||||||
|
@@ -891,6 +892,19 @@ public class JNLPRuntime {
|
||||||
|
JNLPRuntime.ignoreHeaders = ignoreHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // may only be called from Boot
|
||||||
|
+ public static void initStartupTracker() {
|
||||||
|
+ startupTrackerMoment = System.currentTimeMillis();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void addStartupTrackingEntry(String message) {
|
||||||
|
+ if (startupTrackerMoment > 0) {
|
||||||
|
+ long time = (System.currentTimeMillis() - startupTrackerMoment)/1000;
|
||||||
|
+ String msg = "Startup tracker: seconds elapsed: [" + time + "], message: [" + message + "]";
|
||||||
|
+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, msg);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
private static boolean isPluginDebug() {
|
||||||
|
if (pluginDebug == null) {
|
||||||
|
try {
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/tools/JarCertVerifier.java b/netx/net/sourceforge/jnlp/tools/JarCertVerifier.java
|
||||||
|
index eb26dc69..7fd5d92f 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/tools/JarCertVerifier.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/tools/JarCertVerifier.java
|
||||||
|
@@ -39,15 +39,18 @@ import java.util.Enumeration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
-import java.util.Vector;
|
||||||
|
+import java.util.concurrent.Callable;
|
||||||
|
+import java.util.concurrent.Future;
|
||||||
|
import java.util.jar.JarEntry;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import net.sourceforge.jnlp.JARDesc;
|
||||||
|
import net.sourceforge.jnlp.JNLPFile;
|
||||||
|
import net.sourceforge.jnlp.LaunchException;
|
||||||
|
+import net.sourceforge.jnlp.cache.CachedDaemonThreadPoolProvider;
|
||||||
|
import net.sourceforge.jnlp.cache.ResourceTracker;
|
||||||
|
import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
|
||||||
|
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
|
||||||
|
import net.sourceforge.jnlp.security.AppVerifier;
|
||||||
|
import net.sourceforge.jnlp.security.CertVerifier;
|
||||||
|
import net.sourceforge.jnlp.security.CertificateUtils;
|
||||||
|
@@ -226,37 +229,36 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
private void verifyJars(List<JARDesc> jars, ResourceTracker tracker)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
+ List<String> filesToVerify = new ArrayList<>();
|
||||||
|
for (JARDesc jar : jars) {
|
||||||
|
+ File jarFile = tracker.getCacheFile(jar.getLocation());
|
||||||
|
|
||||||
|
- try {
|
||||||
|
-
|
||||||
|
- File jarFile = tracker.getCacheFile(jar.getLocation());
|
||||||
|
-
|
||||||
|
- // some sort of resource download/cache error. Nothing to add
|
||||||
|
- // in that case ... but don't fail here
|
||||||
|
- if (jarFile == null) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
+ // some sort of resource download/cache error. Nothing to add
|
||||||
|
+ // in that case ... but don't fail here
|
||||||
|
+ if (jarFile == null) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- String localFile = jarFile.getAbsolutePath();
|
||||||
|
- if (verifiedJars.contains(localFile)
|
||||||
|
- || unverifiedJars.contains(localFile)) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
+ String localFile = jarFile.getAbsolutePath();
|
||||||
|
+ if (verifiedJars.contains(localFile)
|
||||||
|
+ || unverifiedJars.contains(localFile)) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- VerifyResult result = verifyJar(localFile);
|
||||||
|
+ filesToVerify.add(localFile);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (result == VerifyResult.UNSIGNED) {
|
||||||
|
- unverifiedJars.add(localFile);
|
||||||
|
- } else if (result == VerifyResult.SIGNED_NOT_OK) {
|
||||||
|
- verifiedJars.add(localFile);
|
||||||
|
- } else if (result == VerifyResult.SIGNED_OK) {
|
||||||
|
- verifiedJars.add(localFile);
|
||||||
|
- }
|
||||||
|
- } catch (Exception e) {
|
||||||
|
- // We may catch exceptions from using verifyJar()
|
||||||
|
- // or from checkTrustedCerts
|
||||||
|
- throw e;
|
||||||
|
+ List<VerifiedJarFile> verified = verifyJarsParallel(filesToVerify);
|
||||||
|
+
|
||||||
|
+ for (VerifiedJarFile vjf : verified) {
|
||||||
|
+ VerifyResult result = verifyJarEntryCerts(vjf.file, vjf.hasManifest, vjf.entriesVec);
|
||||||
|
+ String localFile = vjf.file;
|
||||||
|
+ if (result == VerifyResult.UNSIGNED) {
|
||||||
|
+ unverifiedJars.add(localFile);
|
||||||
|
+ } else if (result == VerifyResult.SIGNED_NOT_OK) {
|
||||||
|
+ verifiedJars.add(localFile);
|
||||||
|
+ } else if (result == VerifyResult.SIGNED_OK) {
|
||||||
|
+ verifiedJars.add(localFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -264,6 +266,31 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
checkTrustedCerts(certPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private List<VerifiedJarFile> verifyJarsParallel(List<String> files) throws Exception {
|
||||||
|
+ JNLPRuntime.addStartupTrackingEntry("JARs verification enter");
|
||||||
|
+ List<Callable<VerifiedJarFile>> callables = new ArrayList<>(files.size());
|
||||||
|
+ for (final String fi : files) {
|
||||||
|
+ callables.add(new Callable<VerifiedJarFile>() {
|
||||||
|
+ @Override
|
||||||
|
+ public VerifiedJarFile call() throws Exception {
|
||||||
|
+ return verifyJar(fi);
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+ List<Future<VerifiedJarFile>> futures = CachedDaemonThreadPoolProvider.getThreadPool().invokeAll(callables);
|
||||||
|
+ List<VerifiedJarFile> results = new ArrayList<>(files.size());
|
||||||
|
+ try {
|
||||||
|
+ for (Future<VerifiedJarFile> fu : futures) {
|
||||||
|
+ results.add(fu.get());
|
||||||
|
+ }
|
||||||
|
+ } catch (Exception e) {
|
||||||
|
+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
|
||||||
|
+ throw e;
|
||||||
|
+ }
|
||||||
|
+ JNLPRuntime.addStartupTrackingEntry("JARs verification complete");
|
||||||
|
+ return results;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Checks through all the jar entries of jarName for signers, storing all the common ones in the certs hash map.
|
||||||
|
*
|
||||||
|
@@ -273,15 +300,15 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
* @throws Exception
|
||||||
|
* Will be thrown if there are any problems with the jar.
|
||||||
|
*/
|
||||||
|
- private VerifyResult verifyJar(String jarName) throws Exception {
|
||||||
|
+ private VerifiedJarFile verifyJar(String jarName) throws Exception {
|
||||||
|
try (JarFile jarFile = new JarFile(jarName, true)) {
|
||||||
|
- Vector<JarEntry> entriesVec = new Vector<JarEntry>();
|
||||||
|
+ List<JarEntry> entriesVec = new ArrayList<>();
|
||||||
|
byte[] buffer = new byte[8192];
|
||||||
|
|
||||||
|
Enumeration<JarEntry> entries = jarFile.entries();
|
||||||
|
while (entries.hasMoreElements()) {
|
||||||
|
JarEntry je = entries.nextElement();
|
||||||
|
- entriesVec.addElement(je);
|
||||||
|
+ entriesVec.add(je);
|
||||||
|
|
||||||
|
InputStream is = jarFile.getInputStream(je);
|
||||||
|
try {
|
||||||
|
@@ -295,8 +322,7 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- return verifyJarEntryCerts(jarName, jarFile.getManifest() != null,
|
||||||
|
- entriesVec);
|
||||||
|
+ return new VerifiedJarFile(jarName, null != jarFile.getManifest(), entriesVec);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
|
||||||
|
@@ -318,7 +344,7 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
* Will be thrown if there are issues with entries.
|
||||||
|
*/
|
||||||
|
VerifyResult verifyJarEntryCerts(String jarName, boolean jarHasManifest,
|
||||||
|
- Vector<JarEntry> entries) throws Exception {
|
||||||
|
+ List<JarEntry> entries) throws Exception {
|
||||||
|
// Contains number of entries the cert with this CertPath has signed.
|
||||||
|
Map<CertPath, Integer> jarSignCount = new HashMap<>();
|
||||||
|
int numSignableEntriesInJar = 0;
|
||||||
|
@@ -629,4 +655,16 @@ public class JarCertVerifier implements CertVerifier {
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ private static class VerifiedJarFile {
|
||||||
|
+ final String file;
|
||||||
|
+ final boolean hasManifest;
|
||||||
|
+ private final List<JarEntry> entriesVec;
|
||||||
|
+
|
||||||
|
+ private VerifiedJarFile(String file, boolean hasManifest, List<JarEntry> entriesVec) {
|
||||||
|
+ this.file = file;
|
||||||
|
+ this.hasManifest = hasManifest;
|
||||||
|
+ this.entriesVec = entriesVec;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/netx/net/sourceforge/jnlp/util/PropertiesFile.java b/netx/net/sourceforge/jnlp/util/PropertiesFile.java
|
||||||
|
index 2f0918f6..c399ef20 100644
|
||||||
|
--- a/netx/net/sourceforge/jnlp/util/PropertiesFile.java
|
||||||
|
+++ b/netx/net/sourceforge/jnlp/util/PropertiesFile.java
|
||||||
|
@@ -23,6 +23,8 @@ import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
+import net.sourceforge.jnlp.config.DeploymentConfiguration;
|
||||||
|
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
|
||||||
|
import net.sourceforge.jnlp.util.lockingfile.LockedFile;
|
||||||
|
import net.sourceforge.jnlp.util.logging.OutputController;
|
||||||
|
|
||||||
|
@@ -168,7 +170,9 @@ public class PropertiesFile extends Properties {
|
||||||
|
store(s, header);
|
||||||
|
|
||||||
|
// fsync()
|
||||||
|
- s.getChannel().force(true);
|
||||||
|
+ if (Boolean.parseBoolean(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_ENABLE_CACHE_FSYNC))) {
|
||||||
|
+ s.getChannel().force(true);
|
||||||
|
+ }
|
||||||
|
lastStore = file.lastModified();
|
||||||
|
} finally {
|
||||||
|
if (s != null) s.close();
|
||||||
|
diff --git a/tests/netx/unit/net/sourceforge/jnlp/runtime/CachedJarFileCallbackTest.java b/tests/netx/unit/net/sourceforge/jnlp/runtime/CachedJarFileCallbackTest.java
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..bc564db5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/netx/unit/net/sourceforge/jnlp/runtime/CachedJarFileCallbackTest.java
|
||||||
|
@@ -0,0 +1,55 @@
|
||||||
|
+package net.sourceforge.jnlp.runtime;
|
||||||
|
+
|
||||||
|
+import java.io.File;
|
||||||
|
+import java.io.IOException;
|
||||||
|
+import java.net.URL;
|
||||||
|
+import java.net.URLEncoder;
|
||||||
|
+import java.nio.charset.StandardCharsets;
|
||||||
|
+import java.util.Arrays;
|
||||||
|
+import java.util.List;
|
||||||
|
+import java.util.jar.JarFile;
|
||||||
|
+
|
||||||
|
+import org.junit.After;
|
||||||
|
+import org.junit.Before;
|
||||||
|
+import org.junit.Test;
|
||||||
|
+
|
||||||
|
+import net.sourceforge.jnlp.util.FileTestUtils;
|
||||||
|
+import net.sourceforge.jnlp.util.FileUtils;
|
||||||
|
+
|
||||||
|
+public class CachedJarFileCallbackTest {
|
||||||
|
+ private File tempDirectory;
|
||||||
|
+
|
||||||
|
+ @Before
|
||||||
|
+ public void before() throws IOException {
|
||||||
|
+ tempDirectory = FileTestUtils.createTempDirectory();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @After
|
||||||
|
+ public void after() throws IOException {
|
||||||
|
+ FileUtils.recursiveDelete(tempDirectory, tempDirectory.getParentFile());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Test
|
||||||
|
+ public void testRetrieve() throws Exception {
|
||||||
|
+ List<String> names = Arrays.asList("test1.0.jar", "test@1.0.jar");
|
||||||
|
+
|
||||||
|
+ for (String name: names) {
|
||||||
|
+ // URL-encode the filename
|
||||||
|
+ name = URLEncoder.encode(name, StandardCharsets.UTF_8.name());
|
||||||
|
+ // create temp jar file
|
||||||
|
+ File jarFile = new File(tempDirectory, name);
|
||||||
|
+ FileTestUtils.createJarWithContents(jarFile /* no contents */);
|
||||||
|
+
|
||||||
|
+ // JNLPClassLoader.activateJars uses toUri().toURL() to get the local file URL
|
||||||
|
+ URL localUrl = jarFile.toURI().toURL();
|
||||||
|
+ URL remoteUrl = new URL("http://localhost/" + name);
|
||||||
|
+ // add jar to cache
|
||||||
|
+ CachedJarFileCallback cachedJarFileCallback = CachedJarFileCallback.getInstance();
|
||||||
|
+ cachedJarFileCallback.addMapping(remoteUrl, localUrl);
|
||||||
|
+ // retrieve from cache (throws exception if file not found)
|
||||||
|
+ try (JarFile fromCacheJarFile = cachedJarFileCallback.retrieve(remoteUrl)) {
|
||||||
|
+ // nothing to do, we just wanted to make sure that the local file existed
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
@ -0,0 +1,11 @@
|
|||||||
|
--- a/rust-launcher/cc.toml
|
||||||
|
+++ b/rust-launcher/Cargo.toml
|
||||||
|
@@ -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"
|
||||||
|
|
@ -0,0 +1,665 @@
|
|||||||
|
#can rust have debuginfo? Verify and fix! Likely issue in Makefile of itw.
|
||||||
|
%global debug_package %{nil}
|
||||||
|
|
||||||
|
# Version of java
|
||||||
|
%define javaver 1.8.0
|
||||||
|
|
||||||
|
# Alternatives priority
|
||||||
|
%define priority 18000
|
||||||
|
# jnlp prorocol gnome registry keys
|
||||||
|
%define gurlhandler /desktop/gnome/url-handlers
|
||||||
|
%define jnlphandler %{gurlhandler}/jnlp
|
||||||
|
%define jnlpshandler %{gurlhandler}/jnlps
|
||||||
|
|
||||||
|
%define javadir %{_jvmdir}/java-%{javaver}-openjdk
|
||||||
|
%define jredir %{_jvmdir}/jre-%{javaver}-openjdk
|
||||||
|
|
||||||
|
%define binsuffix .itweb
|
||||||
|
|
||||||
|
%define preffered_java java-%{javaver}-openjdk
|
||||||
|
|
||||||
|
Name: icedtea-web
|
||||||
|
Version: 1.8.4
|
||||||
|
Release: 4%{?dist}
|
||||||
|
Summary: Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
|
||||||
|
|
||||||
|
Group: Applications/Internet
|
||||||
|
License: LGPLv2+ and GPLv2 with exceptions
|
||||||
|
URL: http://icedtea.classpath.org/wiki/IcedTea-Web
|
||||||
|
Source0: http://icedtea.classpath.org/download/source/%{name}-%{version}.tar.gz
|
||||||
|
Patch0: patchOutDunce.patch
|
||||||
|
Patch1: altjava.patch
|
||||||
|
Patch2: fed2f5b-22402bb.patch
|
||||||
|
|
||||||
|
BuildRequires: javapackages-tools
|
||||||
|
#for deprecated add_maven_depmap, see https://www.spinics.net/lists/fedora-devel/msg233211.html
|
||||||
|
BuildRequires: javapackages-local
|
||||||
|
BuildRequires: %{preffered_java}-devel
|
||||||
|
BuildRequires: desktop-file-utils
|
||||||
|
BuildRequires: glib2-devel
|
||||||
|
BuildRequires: autoconf
|
||||||
|
BuildRequires: automake
|
||||||
|
BuildRequires: cargo
|
||||||
|
BuildRequires: junit
|
||||||
|
BuildRequires: hamcrest
|
||||||
|
BuildRequires: libappstream-glib
|
||||||
|
# new in 1.5 to have clean up for malformed XMLs
|
||||||
|
BuildRequires: tagsoup
|
||||||
|
# to apply binary tests for CVEs
|
||||||
|
BuildRequires: git
|
||||||
|
|
||||||
|
# For functionality and the OpenJDK dirs
|
||||||
|
Requires: %{preffered_java}
|
||||||
|
Requires: javapackages-tools
|
||||||
|
Recommends: bash-completion
|
||||||
|
#maven fragments
|
||||||
|
Requires(post): javapackages-tools
|
||||||
|
Requires(postun): javapackages-tools
|
||||||
|
|
||||||
|
# When itw builds against it, it have to be also in runtime
|
||||||
|
Requires: tagsoup
|
||||||
|
|
||||||
|
# Post requires alternatives to install tool alternatives.
|
||||||
|
Requires(post): %{_sbindir}/alternatives
|
||||||
|
# jnlp protocols support
|
||||||
|
Requires(post): GConf2
|
||||||
|
# Postun requires alternatives to uninstall tool alternatives.
|
||||||
|
Requires(postun): %{_sbindir}/alternatives
|
||||||
|
# jnlp protocols support
|
||||||
|
Requires(postun): GConf2
|
||||||
|
|
||||||
|
# Standard JPackage plugin provides.
|
||||||
|
Provides: java-plugin = 1:%{javaver}
|
||||||
|
Provides: javaws = 1:%{javaver}
|
||||||
|
Provides: %{preffered_java}-javaws = 1:%{version}
|
||||||
|
|
||||||
|
Provides: %{preffered_java}-plugin = 1:%{version}
|
||||||
|
|
||||||
|
%description
|
||||||
|
The IcedTea-Web project provides a an implementation of Java Web Start
|
||||||
|
(originally based on the Netx project) and a settings tool to
|
||||||
|
manage deployment settings for the aforementioned plugin and Web Start
|
||||||
|
implementations.
|
||||||
|
|
||||||
|
%package javadoc
|
||||||
|
Summary: API documentation for IcedTea-Web
|
||||||
|
Group: Documentation
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description javadoc
|
||||||
|
This package contains Javadocs for the IcedTea-Web project.
|
||||||
|
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: pure sources for debugging IcedTea-Web
|
||||||
|
Group: devel
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
This package contains ziped sources of the IcedTea-Web project.
|
||||||
|
|
||||||
|
%package nativelaunchers
|
||||||
|
Summary: native launchers of icedtea-web
|
||||||
|
Group: Applications/Internet
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description nativelaunchers
|
||||||
|
This package contains native launchers for faster starup
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n IcedTea-Web-%{name}-%{version}
|
||||||
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
|
||||||
|
%build
|
||||||
|
autoreconf -vfi
|
||||||
|
CXXFLAGS="$RPM_OPT_FLAGS $RPM_LD_FLAGS" \
|
||||||
|
%configure \
|
||||||
|
--with-pkgversion=fedora-%{release}-%{_arch} \
|
||||||
|
--docdir=%{_datadir}/javadoc/%{name} \
|
||||||
|
--with-jdk-home=%{javadir} \
|
||||||
|
--with-jre-home=%{jredir} \
|
||||||
|
--libdir=%{_libdir} \
|
||||||
|
--program-suffix=%{binsuffix} \
|
||||||
|
--disable-native-plugin \
|
||||||
|
--with-itw-libs=DISTRIBUTION \
|
||||||
|
--with-modularjdk-file=%{_sysconfdir}/java/%{name} \
|
||||||
|
--enable-shell-launchers \
|
||||||
|
--prefix=%{_prefix}
|
||||||
|
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
# icedteaweb-completion is currently not handled by make nor make install
|
||||||
|
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/
|
||||||
|
mv completion/policyeditor.bash $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/
|
||||||
|
mv completion/javaws.bash $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/
|
||||||
|
mv completion/itweb-settings.bash $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/
|
||||||
|
|
||||||
|
# Move javaws man page to a more specific name
|
||||||
|
mv $RPM_BUILD_ROOT/%{_mandir}/man1/javaws.1 $RPM_BUILD_ROOT/%{_mandir}/man1/javaws.itweb.1
|
||||||
|
|
||||||
|
# Install desktop files.
|
||||||
|
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
|
||||||
|
|
||||||
|
# patch desktops to use the legacy sh laucnhers
|
||||||
|
sed "s/.itweb /.itweb.sh /" -i javaws.desktop #there is javaws... %u
|
||||||
|
sed "s/.itweb$/.itweb.sh/" -i itweb-settings.desktop
|
||||||
|
sed "s/.itweb$/.itweb.sh/" -i policyeditor.desktop
|
||||||
|
|
||||||
|
desktop-file-install --vendor ''\
|
||||||
|
--dir $RPM_BUILD_ROOT%{_datadir}/applications javaws.desktop
|
||||||
|
desktop-file-install --vendor ''\
|
||||||
|
--dir $RPM_BUILD_ROOT%{_datadir}/applications itweb-settings.desktop
|
||||||
|
desktop-file-install --vendor ''\
|
||||||
|
--dir $RPM_BUILD_ROOT%{_datadir}/applications policyeditor.desktop
|
||||||
|
|
||||||
|
# install MetaInfo file for firefox
|
||||||
|
DESTDIR=%{buildroot} appstream-util install metadata/%{name}.metainfo.xml
|
||||||
|
# install MetaInfo file for javaws
|
||||||
|
DESTDIR=%{buildroot} appstream-util install metadata/%{name}-javaws.appdata.xml
|
||||||
|
|
||||||
|
# maven fragments generation
|
||||||
|
mkdir -p $RPM_BUILD_ROOT%{_javadir}
|
||||||
|
pushd $RPM_BUILD_ROOT%{_javadir}
|
||||||
|
ln -s ../%{name}/javaws.jar ../%{name}/netx.jar # backward copatinlity needed?
|
||||||
|
ln -s ../%{name}/javaws.jar %{name}.jar
|
||||||
|
ln -s ../%{name}/plugin.jar %{name}-plugin.jar
|
||||||
|
popd
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/%{_mavenpomdir}
|
||||||
|
cp metadata/%{name}.pom $RPM_BUILD_ROOT/%{_mavenpomdir}/%{name}.pom
|
||||||
|
cp metadata/%{name}-plugin.pom $RPM_BUILD_ROOT/%{_mavenpomdir}/%{name}-plugin.pom
|
||||||
|
|
||||||
|
%add_maven_depmap %{name}.pom %{name}.jar
|
||||||
|
%add_maven_depmap %{name}-plugin.pom %{name}-plugin.jar
|
||||||
|
|
||||||
|
cp netx.build/lib/src.zip $RPM_BUILD_ROOT%{_datadir}/%{name}/netx.src.zip # backward copatinlity needed?
|
||||||
|
cp netx.build/lib/src.zip $RPM_BUILD_ROOT%{_datadir}/%{name}/javaws.src.zip
|
||||||
|
cp liveconnect/lib/src.zip $RPM_BUILD_ROOT%{_datadir}/%{name}/plugin.src.zip
|
||||||
|
|
||||||
|
%find_lang %{name} --all-name --with-man
|
||||||
|
|
||||||
|
%check
|
||||||
|
#make check
|
||||||
|
#appstream-util validate $RPM_BUILD_ROOT/%{_datadir}/appdata/*.xml || :
|
||||||
|
|
||||||
|
%post nativelaunchers
|
||||||
|
PRIORITY=%{priority}
|
||||||
|
let PRIORITY=PRIORITY-1
|
||||||
|
alternatives \
|
||||||
|
--install %{_bindir}/javaws javaws.%{_arch} %{_prefix}/bin/javaws%{binsuffix} $PRIORITY --family %{preffered_java}.%{_arch} \
|
||||||
|
--slave %{_bindir}/itweb-settings itweb-settings %{_prefix}/bin/itweb-settings%{binsuffix} \
|
||||||
|
--slave %{_bindir}/policyeditor policyeditor %{_prefix}/bin/policyeditor%{binsuffix} \
|
||||||
|
--slave %{_bindir}/ControlPanel ControlPanel %{_prefix}/bin/itweb-settings%{binsuffix} \
|
||||||
|
--slave %{_mandir}/man1/javaws.1.gz javaws.1.gz %{_mandir}/man1/javaws%{binsuffix}.1.gz \
|
||||||
|
--slave %{_mandir}/man1/ControlPanel.1.gz ControlPanel.1.gz %{_mandir}/man1/itweb-settings.1.gz
|
||||||
|
%post
|
||||||
|
PRIORITY=%{priority}
|
||||||
|
alternatives \
|
||||||
|
--install %{_bindir}/javaws javaws.%{_arch} %{_prefix}/bin/javaws%{binsuffix}.sh $PRIORITY --family %{preffered_java}.%{_arch} \
|
||||||
|
--slave %{_bindir}/itweb-settings itweb-settings %{_prefix}/bin/itweb-settings%{binsuffix}.sh \
|
||||||
|
--slave %{_bindir}/policyeditor policyeditor %{_prefix}/bin/policyeditor%{binsuffix}.sh \
|
||||||
|
--slave %{_bindir}/ControlPanel ControlPanel %{_prefix}/bin/itweb-settings%{binsuffix}.sh \
|
||||||
|
--slave %{_mandir}/man1/javaws.1.gz javaws.1.gz %{_mandir}/man1/javaws%{binsuffix}.1.gz \
|
||||||
|
--slave %{_mandir}/man1/ControlPanel.1.gz ControlPanel.1.gz %{_mandir}/man1/itweb-settings.1.gz
|
||||||
|
|
||||||
|
gconftool-2 -s %{jnlphandler}/command '%{_bindir}/javaws %s' --type String &> /dev/null || :
|
||||||
|
gconftool-2 -s %{jnlphandler}/enabled --type Boolean true &> /dev/null || :
|
||||||
|
gconftool-2 -s %{jnlpshandler}/command '%{_bindir}/javaws %s' --type String &> /dev/null || :
|
||||||
|
gconftool-2 -s %{jnlpshandler}/enabled --type Boolean true &> /dev/null || :
|
||||||
|
|
||||||
|
%posttrans
|
||||||
|
update-desktop-database &> /dev/null || :
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%postun nativelaunchers
|
||||||
|
if [ $1 -eq 0 ]
|
||||||
|
then
|
||||||
|
alternatives --remove javaws.%{_arch} %{_prefix}/bin/javaws%{binsuffix}
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%postun
|
||||||
|
update-desktop-database &> /dev/null || :
|
||||||
|
if [ $1 -eq 0 ]
|
||||||
|
then
|
||||||
|
alternatives --remove javaws.%{_arch} %{_prefix}/bin/javaws%{binsuffix}.sh
|
||||||
|
gconftool-2 -u %{jnlphandler}/command &> /dev/null || :
|
||||||
|
gconftool-2 -u %{jnlphandler}/enabled &> /dev/null || :
|
||||||
|
gconftool-2 -u %{jnlpshandler}/command &> /dev/null || :
|
||||||
|
gconftool-2 -u %{jnlpshandler}/enabled &> /dev/null || :
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%files nativelaunchers
|
||||||
|
%{_prefix}/bin/javaws.itweb
|
||||||
|
%{_prefix}/bin/itweb-settings.itweb
|
||||||
|
%{_prefix}/bin/policyeditor.itweb
|
||||||
|
%license COPYING
|
||||||
|
|
||||||
|
%files -f .mfiles -f %{name}.lang
|
||||||
|
%{_sysconfdir}/bash_completion.d/*
|
||||||
|
%config(noreplace) %{_sysconfdir}/java/%{name}/itw-modularjdk.args
|
||||||
|
%{_prefix}/bin/javaws.itweb.sh
|
||||||
|
%{_prefix}/bin/itweb-settings.itweb.sh
|
||||||
|
%{_prefix}/bin/policyeditor.itweb.sh
|
||||||
|
%{_datadir}/applications/*
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%{_datadir}/%{name}/*.jar
|
||||||
|
%{_datadir}/%{name}/*.png
|
||||||
|
%{_datadir}/man/man1/*
|
||||||
|
%{_datadir}/pixmaps/*
|
||||||
|
%{_datadir}/appdata/*.xml
|
||||||
|
%doc NEWS README
|
||||||
|
%license COPYING
|
||||||
|
|
||||||
|
%files javadoc
|
||||||
|
%{_datadir}/javadoc/%{name}
|
||||||
|
%license COPYING
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{_datadir}/%{name}/*.zip
|
||||||
|
%license COPYING
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Nov 30 2020 - Jiri Vanek <jvanek@redhat.com> -1.8.4-4
|
||||||
|
- added patch2, fed2f5b-22402bb.patch containing important fixes from future 1.8.5
|
||||||
|
- Resolves: rhbz#1900043
|
||||||
|
|
||||||
|
* Fri Nov 27 2020 - Jiri Vanek <jvanek@redhat.com> -1.8.4-2
|
||||||
|
- added native launchers, via separate subpackage, but efectively changed main package to arched one
|
||||||
|
- removed policyeditor man page, it was link to itself
|
||||||
|
- Resolves: rhbz#1900043
|
||||||
|
|
||||||
|
* Fri Nov 27 2020 - Jiri Vanek <jvanek@redhat.com> -1.8.4-1
|
||||||
|
- rebased to itw 1.8, ommiting native launchers
|
||||||
|
- Resolves: rhbz#1900043
|
||||||
|
|
||||||
|
* Fri Nov 20 2020 Jiri Vanek <jvanek@redhat.com> 1.7.1-18
|
||||||
|
- patched to use alt-java if available
|
||||||
|
- Added Patch6, altjava.patch
|
||||||
|
- Resolves: rhbz#1888633
|
||||||
|
|
||||||
|
* Thu Jul 18 2019 Jiri Vanek <jvanek@redhat.com> 1.7.1-16
|
||||||
|
- Added Patch5, testTuning.patch to make tests pass inclean envirnment
|
||||||
|
- Resolves: rhbz#1724958
|
||||||
|
|
||||||
|
* Thu Jul 18 2019 Jiri Vanek <jvanek@redhat.com> 1.7.1-16
|
||||||
|
- added patch1, patch4 and patch11 to fix CVE-2019-10182
|
||||||
|
- added patch2 to fix CVE-2019-10181
|
||||||
|
- added patch3 and patch33 to fix CVE-2019-10185
|
||||||
|
- Resolves: rhbz#1724958
|
||||||
|
- Resolves: rhbz#1725928
|
||||||
|
- Resolves: rhbz#1724989
|
||||||
|
|
||||||
|
* Fri Mar 22 2019 - Jiri Vanek <jvanek@redhat.com> -1.7.1-10
|
||||||
|
- added gating
|
||||||
|
|
||||||
|
* Mon Jul 16 2018 - Jiri Vanek <jvanek@redhat.com> -1.7.1-8
|
||||||
|
- removed rhino
|
||||||
|
|
||||||
|
* Thu May 24 2018 - Jiri Vanek <jvanek@redhat.com> -1.7.1-6
|
||||||
|
- removed clang
|
||||||
|
|
||||||
|
* Mon May 14 2018 - Jiri Vanek <jvanek@redhat.com> -1.7.1-6
|
||||||
|
- added an applied patch1, oracleForms.patch to make oracle forms working
|
||||||
|
|
||||||
|
* Fri Mar 02 2018 - Jiri Vanek <jvanek@redhat.com> -1.7.1-5
|
||||||
|
- added 1473-1480.patch
|
||||||
|
- added support for javafx-desc and so allwong run of pure-javafx only applications
|
||||||
|
- --nosecurity enhanced for possibility to skip invalid signatures
|
||||||
|
- enhanced to allow resources to be read also from j2se/java element (OmegaT)
|
||||||
|
|
||||||
|
* Tue Feb 20 2018 - Jiri Vanek <jvanek@redhat.com> -1.7.1-3
|
||||||
|
- added buildrequires on gcc/gcc-c++
|
||||||
|
- to follow new packaging guidelines which no longer automatically pulls gcc/c++ to build root
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Dec 18 2017 Jiri Vanek <jvanek@redhat.com> 1.7.1-1
|
||||||
|
* bump to 1.7.1
|
||||||
|
|
||||||
|
* Fri Nov 03 2017 Jiri Vanek <jvanek@redhat.com> 1.7-6
|
||||||
|
- javaws specific manpage renmed from -suffix to .suffix
|
||||||
|
|
||||||
|
* Wed Oct 18 2017 Jiri Vanek <jvanek@redhat.com> 1.7-5
|
||||||
|
- gathered various patches from usptream
|
||||||
|
|
||||||
|
* Wed Aug 23 2017 Jiri Vanek <jvanek@redhat.com> 1.7-4
|
||||||
|
- removed natie plugin, no longer can build (removed xullruner and gecko devel packages)
|
||||||
|
- added forgotten slaves of itweb-settings policyeditor
|
||||||
|
- Own %%{_datadir}/%%{name} dir
|
||||||
|
- Mark non-English man pages with %%lang
|
||||||
|
- Install COPYING as %%license
|
||||||
|
- last three by Ville Skytta <ville.skytta@iki.fi> via 1481270
|
||||||
|
- added BuildRequires: javapackages-local to introduce deprecated add_maven_depmap macro
|
||||||
|
|
||||||
|
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 19 2017 Jiri Vanek <jvanek@redhat.com> 1.7-1
|
||||||
|
- updated to itw 1.7
|
||||||
|
|
||||||
|
* Wed Jul 19 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.5
|
||||||
|
- updated to RC7
|
||||||
|
|
||||||
|
* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7-0.4.pre06
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri May 12 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.3.pre06
|
||||||
|
- updated to RC6
|
||||||
|
- split bash-copletion
|
||||||
|
- added sources (to align with upstream binary release)
|
||||||
|
|
||||||
|
* Tue May 02 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.3.pre05
|
||||||
|
- gconf calls silenced by "&> /dev/null || :"
|
||||||
|
- see rhbz1446932
|
||||||
|
|
||||||
|
* Fri Apr 28 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.2.pre05
|
||||||
|
- updated to rc5
|
||||||
|
- added support for jnlp://, jnlps:// and jnlp: protocols
|
||||||
|
|
||||||
|
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7-0.2.pre04
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jan 12 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.1.pre04
|
||||||
|
- updated to rc4
|
||||||
|
- fixed RHBZ#1412544
|
||||||
|
|
||||||
|
* Wed Jan 11 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.1.pre03
|
||||||
|
- updated ro RC3 of 1.7
|
||||||
|
|
||||||
|
* Wed Jan 04 2017 Jiri Vanek <jvanek@redhat.com> 1.7-0.1.pre01
|
||||||
|
- updated ro RC1 of 1.7
|
||||||
|
- added recommends on vash completion
|
||||||
|
|
||||||
|
* Wed Jul 13 2016 Jiri Vanek <jvanek@redhat.com> 1.6.2-3
|
||||||
|
- minor fix to javadir and jre dir
|
||||||
|
|
||||||
|
* Wed Jul 13 2016 Jiri Vanek <jvanek@redhat.com> 1.6.2-2
|
||||||
|
- added --family to make it part of javas alternatives alignment
|
||||||
|
- java-javaver-openjdk collected into preffered_java
|
||||||
|
|
||||||
|
* Wed Feb 03 2016 Jiri Vanek <jvanek@redhat.com> 1.6.2-1
|
||||||
|
- updated to 1.6.2
|
||||||
|
- fixed also rhbz#1303437 - package owns /etc/bash_completion.d but it should not own it
|
||||||
|
|
||||||
|
* Thu Jan 28 2016 Jiri Vanek <jvanek@redhat.com> 1.6.1-66
|
||||||
|
- moved to 1.6.2pre
|
||||||
|
|
||||||
|
* Tue Dec 22 2015 Jiri Vanek <jvanek@redhat.com> 1.6.1-5
|
||||||
|
- generated maven metadata
|
||||||
|
|
||||||
|
* Thu Nov 19 2015 Jiri Vanek <jvanek@redhat.com> 1.6.1-4
|
||||||
|
- installed also javaws metadata
|
||||||
|
|
||||||
|
* Wed Oct 14 2015 Jiri Vanek <jvanek@redhat.com> 1.6.1-3
|
||||||
|
- added and applied three patches scheduled for 1.6.2
|
||||||
|
- patch2 fileLogInitializationError-1.6.patch to prevent consequences 1268909
|
||||||
|
- patch1 donLogToFileBeforeFileLogsInitiate.patch
|
||||||
|
- patch0 javadocFixes.patch
|
||||||
|
|
||||||
|
* Mon Sep 21 2015 Jiri Vanek <jvanek@redhat.com> 1.6.1-2
|
||||||
|
- added and applied patch0 javadocFixes.patch
|
||||||
|
|
||||||
|
* Fri Sep 11 2015 Jiri Vanek <jvanek@redhat.com> 1.6.1-1
|
||||||
|
- updated to upstream release 1.6.1
|
||||||
|
- metadata xml files enhanced for javaws
|
||||||
|
|
||||||
|
* Mon Jun 22 2015 Omair Majid <omajid@redhat.com> - 1.6-5
|
||||||
|
- Comply with newer java packaging guidelines
|
||||||
|
- Require javapackages-tools in main package
|
||||||
|
- Don't require jpackage-utils in -javadoc subpackage, since subpackage
|
||||||
|
requires the main package
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon May 04 2015 Jiri Vanek <jvanek@redhat.com> 1.6-3
|
||||||
|
- added depndence on hamcrest - no longer part of junit
|
||||||
|
|
||||||
|
* Wed Apr 29 2015 Jiri Vanek <jvanek@redhat.com> 1.6-2
|
||||||
|
- enabled check
|
||||||
|
|
||||||
|
* Tue Apr 28 2015 Jiri Vanek <jvanek@redhat.com> 1.6-1
|
||||||
|
- updated to limited audience final release
|
||||||
|
|
||||||
|
* Fri Apr 24 2015 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre05
|
||||||
|
- updated to pre06
|
||||||
|
- handled "Add Tab Completion for icedtea-web" change
|
||||||
|
- this release contains numers, not yet upstreamed, but going to release features:
|
||||||
|
- summary: Fixed resource test to pass for CZ localization
|
||||||
|
- summary: Added Czech translation for 1.6.
|
||||||
|
- summary: Messages from TextsProvider moved to properties
|
||||||
|
- summary: various improvements to default set of properties
|
||||||
|
- summary: Added MultipleDeploymentPropertiesModifier improvement to testsuite
|
||||||
|
|
||||||
|
* Fri Apr 17 2015 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre05
|
||||||
|
- updated to pre05
|
||||||
|
|
||||||
|
* Tue Apr 14 2015 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre04
|
||||||
|
- updated to pre04
|
||||||
|
|
||||||
|
* Mon Mar 16 2015 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre03
|
||||||
|
- updated to pre03
|
||||||
|
- removed cp javaws.png. Handled by upstream now
|
||||||
|
|
||||||
|
* Mon Dec 22 2014 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre02
|
||||||
|
- updated to pre02
|
||||||
|
- upstreamed patch1, quoteDocsPaths.patch
|
||||||
|
- temprarily disabled unittests
|
||||||
|
- fixed nlp apps shortcut
|
||||||
|
|
||||||
|
* Mon Dec 22 2014 Jiri Vanek <jvanek@redhat.com> 1.6-0.1.pre01
|
||||||
|
- update future 1.6 alpha pre01
|
||||||
|
- added localised man pages
|
||||||
|
- removed link to icedtea-web man page (now provided by upstream)
|
||||||
|
|
||||||
|
* Thu Nov 27 2014 Jiri Vanek <jvanek@redhat.com> 1.5.2-0
|
||||||
|
- update to upstream 1.5.2
|
||||||
|
|
||||||
|
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.1-1
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Aug 15 2014 Jiri Vanek <jvanek@redhat.com> 1.5.1-0
|
||||||
|
- update to upstream 1.5.1
|
||||||
|
- removed all patches (all upstreamed)
|
||||||
|
|
||||||
|
* Thu Aug 14 2014 Richard Hughes <richard@hughsie.com> - 1.5-4
|
||||||
|
- Add MetaInfo file to show an addon in GNOME Software.
|
||||||
|
- See http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1907 for upstream.
|
||||||
|
|
||||||
|
* Mon Jun 09 2014 Omair Majid <omajid@redhat.com> - 1.5-3
|
||||||
|
- Require junit instead of juni4
|
||||||
|
- Build against OpenJDK 7 explicitly
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Apr 07 2014 Jiri Vanek <jvanek@redhat.com> 1.5-2
|
||||||
|
- add not yet upstreamed DE localisation of 1.5
|
||||||
|
- patch0 DElocalizationforIcedTea-Web1.5-0001.patch
|
||||||
|
- autoreconf gog -vfi, see RH1077898
|
||||||
|
- ./configure changed to %%configure,see RH1077287
|
||||||
|
|
||||||
|
* Mon Apr 07 2014 Jiri Vanek <jvanek@redhat.com> 1.5-1
|
||||||
|
- updated to icedtea-web-1.5
|
||||||
|
|
||||||
|
* Mon Mar 10 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.8.pre05
|
||||||
|
- updated to pre05
|
||||||
|
- based on revision 925
|
||||||
|
|
||||||
|
* Mon Mar 10 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.4.pre04
|
||||||
|
- updated to pre04
|
||||||
|
- based on revision 917
|
||||||
|
|
||||||
|
* Wed Mar 05 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.3.pre03
|
||||||
|
- updated to pre03
|
||||||
|
- based on revision 910:0a36108ce4b9
|
||||||
|
|
||||||
|
* Wed Feb 26 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.2.pre02
|
||||||
|
- added supported tagsoup dependence
|
||||||
|
|
||||||
|
* Wed Feb 26 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.1.pre02
|
||||||
|
- updated to bleeding edge as tracker before 1.5 actual release
|
||||||
|
- based on revision 899
|
||||||
|
- added policyeditor.desktop
|
||||||
|
- removed -std=c++11 flag
|
||||||
|
|
||||||
|
* Wed Feb 12 2014 Jiri Vanek <jvanek@redhat.com> 1.5-0.1.pre01
|
||||||
|
- updated to bleeding edge as tracker before 1.5 actual release
|
||||||
|
- named by https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Pre-Release_packages
|
||||||
|
- see commented original source0 line and setup line reusing versions
|
||||||
|
- the source tarball is based on revision 892
|
||||||
|
|
||||||
|
* Tue Feb 04 2014 Jiri Vanek <jvanek@redhat.com> 1.4.2-0
|
||||||
|
- updated to 1.4.2
|
||||||
|
- removed upstreamed patches
|
||||||
|
- added std=c++11 flag to CXXFLAGS (thanx omajid!)
|
||||||
|
- removed autoreconf
|
||||||
|
|
||||||
|
* Tue Dec 17 2013 Jiri Vanek <jvanek@redhat.com> 1.4.1-1
|
||||||
|
- added and applied patch0, christmasSplash3.diff. Will be upstreamed
|
||||||
|
- Christmas release for Fedora !-)
|
||||||
|
|
||||||
|
* Tue Sep 17 2013 Jiri Vanek <jvanek@redhat.com> 1.4.1-0
|
||||||
|
- updated to 1.4.1
|
||||||
|
- add icedtea-web man page
|
||||||
|
- removed upstreamed patch1 b25-appContextFix.patch
|
||||||
|
- removed upstreamed patch2 rhino-pac-permissions.patch
|
||||||
|
- make check enabled again
|
||||||
|
- should be build for non-standart archs !-)
|
||||||
|
- removed unused multilib arches (yupii!)
|
||||||
|
|
||||||
|
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 23 2013 Omair Majid <jvanek@redhat.com> 1.4.0-3
|
||||||
|
- Added upstream fix for RH982558
|
||||||
|
|
||||||
|
* Wed Jun 19 2013 Jiri Vanek <jvanek@redhat.com> 1.4.0-2
|
||||||
|
- added patch1 b25-appContextFix.patch to make it run with future openjdk
|
||||||
|
|
||||||
|
* Fri Jun 07 2013 Jiri Vanek <jvanek@redhat.com> 1.4-1
|
||||||
|
- Adapted to latest openjdk changes
|
||||||
|
- added build requires for autoconf and automake
|
||||||
|
- minor clean up
|
||||||
|
- Updated to 1.4
|
||||||
|
- See announcement for detail
|
||||||
|
- http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-May/023195.html
|
||||||
|
- commented out check - some junit4 incompatibility
|
||||||
|
|
||||||
|
* Wed Apr 17 2013 Jiri Vanek <jvanek@redhat.com> 1.3.2-0
|
||||||
|
- Updated to latest ustream release of 1.3 branch - 1.3.2
|
||||||
|
- Security Updates
|
||||||
|
- CVE-2013-1927, RH884705: fixed gifar vulnerability
|
||||||
|
- CVE-2013-1926, RH916774: Class-loader incorrectly shared for applets with same relative-path.
|
||||||
|
- Common
|
||||||
|
- Added new option in itw-settings which allows users to set JVM arguments when plugin is initialized.
|
||||||
|
- NetX
|
||||||
|
- PR580: http://www.horaoficial.cl/ loads improperly
|
||||||
|
- Plugin
|
||||||
|
PR1260: IcedTea-Web should not rely on GTK
|
||||||
|
PR1157: Applets can hang browser after fatal exception
|
||||||
|
- Removed upstreamed patch to remove GTK dependency
|
||||||
|
- icedtea-web-pr1260-remove-gtk-dep.patch
|
||||||
|
|
||||||
|
* Wed Feb 20 2013 Ville Skyttä <ville.skytta@iki.fi> - 1.3.1-5
|
||||||
|
- Resolves: rhbz#875496
|
||||||
|
- Build with $RPM_LD_FLAGS and %%{_smp_mflags}.
|
||||||
|
- Run unit tests during build.
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 16 2013 Deepak Bhole <dbhole@redhat.com> 1.3.1-3
|
||||||
|
- Resolves: rhbz#889644, rhbz#895197
|
||||||
|
- Added patch to remove GTK dependency
|
||||||
|
|
||||||
|
* Thu Dec 20 2012 Jiri Vanek <jvanek@redhat.com> 1.3.1-2
|
||||||
|
- Moved to be build with GTK3
|
||||||
|
|
||||||
|
* Wed Nov 07 2012 Deepak Bhole <dbhole@redhat.com> 1.3.1-1
|
||||||
|
- Resolves: RH869040/CVE-2012-4540
|
||||||
|
|
||||||
|
* Mon Sep 17 2012 Deepak Bhole <dbhole@redhat.com> 1.3-1
|
||||||
|
- Updated to 1.3
|
||||||
|
- Resolves: rhbz#720836: Epiphany fails to execute Java applets
|
||||||
|
|
||||||
|
* Tue Jul 31 2012 Deepak Bhole <dbhole@redhat.com> 1.2.1-1
|
||||||
|
- Updated to 1.2.1
|
||||||
|
- Resolves: RH840592/CVE-2012-3422
|
||||||
|
- Resolves: RH841345/CVE-2012-3423
|
||||||
|
|
||||||
|
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu May 03 2012 Deepak Bhole <dbhole@redhat.com> 1.2-4
|
||||||
|
- Resolves rhbz#814585
|
||||||
|
- Fixed java-plugin provides and added one for javaws
|
||||||
|
|
||||||
|
* Tue Apr 17 2012 Deepak Bhole <dbhole@redhat.com> 1.2-3
|
||||||
|
- Updated summary
|
||||||
|
- Fixed virtual provide
|
||||||
|
|
||||||
|
* Tue Mar 13 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 1.2-2
|
||||||
|
- Enable building on ARM platforms
|
||||||
|
|
||||||
|
* Mon Mar 05 2012 Deepak Bhole <dbhole@redhat.com> 1.2-1
|
||||||
|
- Updated to 1.2
|
||||||
|
|
||||||
|
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.4-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Nov 25 2011 Deepak Bhole <dbhole@redhat.com> 1.1.4-3
|
||||||
|
- Resolves rhbz#757191
|
||||||
|
- Bumped min_openjdk_version to -60 (latest)
|
||||||
|
|
||||||
|
* Thu Nov 24 2011 Deepak Bhole <dbhole@redhat.com> 1.1.4-2
|
||||||
|
- Resolves: rhbz#742887. Do not own directories not created by the package.
|
||||||
|
|
||||||
|
* Tue Nov 08 2011 Deepak Bhole <dbhole@redhat.com> 1.1.4-1
|
||||||
|
- Updated to 1.1.4
|
||||||
|
- Added npapi-fix patch so that the plug-in compiles with xulrunner 8
|
||||||
|
|
||||||
|
* Thu Sep 01 2011 Deepak Bhole <dbhole@redhat.com> 1.1.2-1
|
||||||
|
- Updated to 1.1.2
|
||||||
|
- Removed all patches (now upstream)
|
||||||
|
- Resolves: rhbz# 734890
|
||||||
|
|
||||||
|
* Tue Aug 23 2011 Deepak Bhole <dbhole@redhat.com> 1.1.1-3
|
||||||
|
- Added patch to allow install to jre dir
|
||||||
|
- Fixed requirement for java-1.7.0-openjdk
|
||||||
|
|
||||||
|
* Tue Aug 09 2011 Deepak Bhole <dbhole@redhat.com> 1.1.1-2
|
||||||
|
- Fixed file ownership so that debuginfo is not in main package
|
||||||
|
|
||||||
|
* Wed Aug 03 2011 Deepak Bhole <dbhole@redhat.com> 1.1.1-1
|
||||||
|
- Bump to 1.1.1
|
||||||
|
- Added patch for PR768 and PR769
|
||||||
|
|
||||||
|
* Wed Jul 20 2011 Deepak Bhole <dbhole@redhat.com> 1.0.4-1
|
||||||
|
- Bump to 1.0.4
|
||||||
|
- Fixed rhbz#718164: Home directory path disclosure to untrusted applications
|
||||||
|
- Fixed rhbz#718170: Java Web Start security warning dialog manipulation
|
||||||
|
|
||||||
|
* Mon Jun 13 2011 Deepak Bhole <dbhole@redhat.com> 1.0.3-1
|
||||||
|
- Update to 1.0.3
|
||||||
|
- Resolves: rhbz#691259
|
||||||
|
|
||||||
|
* Mon Apr 04 2011 Deepak Bhole <dbhole@redhat.com> 1.0.2-2
|
||||||
|
- Fixed incorrect macro value for min_openjdk_version
|
||||||
|
- Use posttrans instead of post, so that upgrade from old plugin works
|
||||||
|
|
||||||
|
* Mon Apr 04 2011 Deepak Bhole <dbhole@redhat.com> 1.0.2-1
|
||||||
|
- Initial build
|
Loading…
Reference in new issue