--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java Wed May 18 16:36:52 2016 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java Wed May 18 11:31:23 2016 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,9 +43,10 @@
1.0 to 1.3.X 45,3
1.4 to 1.4.X 46,0
1.5 to 1.5.X 49,0
- 1.6 to 1.5.x 50,0
- 1.7 to 1.6.x 51,0
- 1.8 to 1.7.x 52,0
+ 1.6 to 1.6.X 50,0
+ 1.7 to 1.7.X 51,0
+ 1.8 to 1.8.X 52,0
+ 1.9 to 1.9.X 53,0
*/
public static final Package.Version JAVA_MIN_CLASS_VERSION =
@@ -63,6 +64,9 @@
public static final Package.Version JAVA8_MAX_CLASS_VERSION =
Package.Version.of(52, 00);
+ public static final Package.Version JAVA9_MAX_CLASS_VERSION =
+ Package.Version.of(53, 00);
+
public static final int JAVA_PACKAGE_MAGIC = 0xCAFED00D;
public static final Package.Version JAVA5_PACKAGE_VERSION =
@@ -79,7 +83,7 @@
// upper limit, should point to the latest class version
public static final Package.Version JAVA_MAX_CLASS_VERSION =
- JAVA8_MAX_CLASS_VERSION;
+ JAVA9_MAX_CLASS_VERSION;
// upper limit should point to the latest package version, for version info!.
public static final Package.Version MAX_PACKAGE_VERSION =
--- a/jdk/src/jdk.pack200/share/native/common-unpack/constants.h Wed May 18 16:36:52 2016 -0700
+++ b/jdk/src/jdk.pack200/share/native/common-unpack/constants.h Wed May 18 11:31:23 2016 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,30 +23,10 @@
* questions.
*/
-/*
- Java Class Version numbers history
- 1.0 to 1.3.X 45,3
- 1.4 to 1.4.X 46,0
- 1.5 to 1.5.X 49,0
- 1.6 to 1.5.x 50,0 NOTE Assumed for now
-*/
-
// classfile constants
#define JAVA_MAGIC 0xCAFEBABE
-#define JAVA_MIN_MAJOR_VERSION 45
-#define JAVA_MIN_MINOR_VERSION 3
-#define JAVA5_MAX_MAJOR_VERSION 49
-#define JAVA5_MAX_MINOR_VERSION 0
-
-#define JAVA6_MAX_MAJOR_VERSION 50
-#define JAVA6_MAX_MINOR_VERSION 0
-
-#define JAVA7_MAX_MAJOR_VERSION 51
-#define JAVA7_MAX_MINOR_VERSION 0
-
-#define JAVA8_MAX_MAJOR_VERSION 52
-#define JAVA8_MAX_MINOR_VERSION 0
+// Class version history, refer to Constants.java
// package file constants
#define JAVA_PACKAGE_MAGIC 0xCAFED00D
--- a/jdk/test/ProblemList.txt Wed May 18 16:36:52 2016 -0700
+++ b/jdk/test/ProblemList.txt Wed May 18 11:31:23 2016 -0700
@@ -332,8 +332,6 @@
tools/pack200/Pack200Props.java 8155857 generic-all
-tools/pack200/TestNormal.java 8156807 windows-all
-
############################################################################
# jdk_jdi
--- a/jdk/test/tools/pack200/TestNormal.java Wed May 18 16:36:52 2016 -0700
+++ b/jdk/test/tools/pack200/TestNormal.java Wed May 18 11:31:23 2016 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,85 +25,37 @@
/*
* @test
* @run main/timeout=600 TestNormal
- * @bug 8020802
+ * @bug 8020802 8156807
* @summary Need an ability to create jar files that are invariant to the pack200 packing/unpacking
* @author Alexander Zuev
*/
import java.io.*;
-import java.util.Collections;
-import java.util.Properties;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
public class TestNormal {
private static String FS = File.separator;
public static void main(String args[]) throws Exception {
- Properties p = System.getProperties();
- String java_home = p.getProperty("test.jdk");
String testdir = Utils.TEST_CLS_DIR.getAbsolutePath();
try {
- execJavaCommand(java_home, "jar cnf normalized.jar -C " + testdir + " .");
- execJavaCommand(java_home, "jar cf original.jar -C " + testdir + " .");
- execJavaCommand(java_home, "pack200 -r repacked.jar original.jar");
- compareJars(new JarFile("normalized.jar"), new JarFile("repacked.jar"));
- } finally {
- String[] cleanupList = {"normalized.jar", "original.jar", "repacked.jar"};
- for (String s : cleanupList) {
- delete(new File(s));
- }
- }
- }
+ String jarCmd = Utils.getJarCmd();
+ String packCmd = Utils.getPack200Cmd();
- public static void execJavaCommand(String java_home, String cmd) throws Exception {
- Process proc = Runtime.getRuntime().exec(java_home + FS + "bin" + FS + cmd);
- String s;
- BufferedReader stdInput =
- new BufferedReader(new InputStreamReader(proc.getInputStream()));
- BufferedReader stdError =
- new BufferedReader(new InputStreamReader(proc.getErrorStream()));
- while ((s = stdInput.readLine()) != null) {
- System.out.println(s);
- }
- while ((s = stdError.readLine()) != null) {
- System.err.println(s);
- }
- }
+ // create the original jar
+ Utils.runExec(jarCmd, "cf", "original.jar", "-C", testdir, ".");
+
+ // create the reference jar
+ Utils.runExec(packCmd, "-r", "repacked.jar", "original.jar");
- public static void compareJars(JarFile jf1, JarFile jf2) throws Exception {
- try {
- if (jf1.size() != jf2.size()) {
- throw new Exception("Jars " + jf1.getName() + " and " + jf2.getName()
- + " have different number of entries");
- }
- for (JarEntry elem1 : Collections.list(jf1.entries())) {
- JarEntry elem2 = jf2.getJarEntry(elem1.getName());
- if (elem2 == null) {
- throw new Exception("Element " + elem1.getName() + " is missing from " + jf2.getName());
- }
- if (!elem1.isDirectory() && elem1.getCrc() != elem2.getCrc()) {
- throw new Exception("The crc of " + elem1.getName() + " is different.");
- }
- }
+ // create the normalized jar using jar(1)
+ Utils.runExec(jarCmd, "cnf", "normalized.jar", "-C", testdir, ".");
+
+ // compare archive contents bit wise, these should be identical!
+ Utils.doCompareBitWise(new File("repacked.jar"),
+ new File("normalized.jar"));
} finally {
- jf1.close();
- jf2.close();
- }
- }
-
- static void delete(File f) throws IOException {
- if (!f.exists()) {
- return;
- }
- if (f.isDirectory()) {
- for (File c : f.listFiles()) {
- delete(c);
- }
- }
- if (!f.delete()) {
- throw new FileNotFoundException("Failed to delete file: " + f);
+ Utils.cleanup();
}
}
}
--- a/jdk/test/tools/pack200/Utils.java Wed May 18 16:36:52 2016 -0700
+++ b/jdk/test/tools/pack200/Utils.java Wed May 18 11:31:23 2016 -0700
@@ -33,7 +33,6 @@
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.URI;
-import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.FileSystem;
@@ -483,9 +482,15 @@
}
return out;
}
+
+ static List<String> runExec(String... cmds) {
+ return runExec(Arrays.asList(cmds));
+ }
+
static List<String> runExec(List<String> cmdsList) {
return runExec(cmdsList, null);
}
+
static List<String> runExec(List<String> cmdsList, Map<String, String> penv) {
ArrayList<String> alist = new ArrayList<String>();
ProcessBuilder pb =