Skip to content

Commit

Permalink
Remove IBM-1047 export option and generate makefiles on JDK21+ z/OS i…
Browse files Browse the repository at this point in the history
…n IBM-1047 encoding

Signed-off-by: Pasam Soujanya <[email protected]>
  • Loading branch information
psoujany committed Dec 4, 2024
1 parent 751ecc8 commit 3ed7f0a
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 12 deletions.
9 changes: 4 additions & 5 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,10 @@ $(info UNAME_OS is $(UNAME_OS))
ifeq ($(findstring CYGWIN,$(UNAME_OS)), CYGWIN)
LIB_DIR:=$(shell cygpath -w $(LIB_DIR))
else ifeq ($(UNAME_OS),OS/390)
# The issue is still being investigated. See backlog/issues/1424
# set -Dfile.encoding=IBM-1047 for JDK21+ zOS for now
ifeq ($(shell test $(JDK_VERSION) -ge 21; echo $$?),0)
export IBM_JAVA_OPTIONS="-Dfile.encoding=IBM-1047"
$(info export IBM_JAVA_OPTIONS="-Dfile.encoding=IBM-1047")
# Pass -Dfile.encoding=IBM-1047 to create autoGen.mk contents readable on z/OS for JDK21+
JVM_OPTIONS=-Dfile.encoding=IBM-1047
$(info JVM_OPTIONS is "-Dfile.encoding=IBM-1047")
endif
endif

Expand Down Expand Up @@ -90,7 +89,7 @@ compile: buildListGen
# If AUTO_DETECT is turned on, compile and execute envDetector in build_envInfo.xml.
#######################################
envDetect: compileTools
${TEST_JDK_HOME}$(D)bin$(D)java -cp .$(D)bin$(D)TestKitGen.jar org.openj9.envInfo.EnvDetector
${TEST_JDK_HOME}$(D)bin$(D)java $(JVM_OPTIONS) -cp .$(D)bin$(D)TestKitGen.jar org.openj9.envInfo.EnvDetector

#######################################
# Generate refined BUILD_LIST.
Expand Down
25 changes: 22 additions & 3 deletions src/org/testKitGen/MkGen.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@

package org.testKitGen;

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -27,6 +31,7 @@ public class MkGen {
private List<String> subdirs;
private String makeFile;
private PlaylistInfo pli;
private Writer writer;

public MkGen(Arguments arg, TestTarget tt, PlaylistInfo pli, String makeFile, List<String> dirList, List<String> subdirs) {
this.arg = arg;
Expand All @@ -46,7 +51,7 @@ public void start() {
}

private void writeVars() {
try (FileWriter f = new FileWriter(makeFile)) {
try (Writer f = getWriterObject(makeFile)) {
String realtiveRoot = "";
int subdirlevel = dirList.size();
if (subdirlevel == 0) {
Expand All @@ -72,7 +77,7 @@ private void writeVars() {
}
}

private void writeSingleTest(List<String> testsInPlaylist, TestInfo testInfo, FileWriter f) throws IOException {
private void writeSingleTest(List<String> testsInPlaylist, TestInfo testInfo, Writer f) throws IOException {
for (Variation var : testInfo.getVars()) {
// Generate make target
String testTargetName = var.getSubTestName();
Expand Down Expand Up @@ -227,7 +232,7 @@ private void writeSingleTest(List<String> testsInPlaylist, TestInfo testInfo, Fi
}

private void writeTargets() {
try (FileWriter f = new FileWriter(makeFile, true)) {
try (Writer f = getWriterObject(makeFile)) {
if (!pli.getIncludeList().isEmpty()) {
for (String include : pli.getIncludeList()) {
f.write("-include " + include + "\n\n");
Expand All @@ -251,4 +256,18 @@ private void writeTargets() {
System.exit(1);
}
}

public Writer getWriterObject(String filetype) {
try {
if (arg.getSpec().toLowerCase().contains("zos") && (arg.getJdkVersion().matches("2\\d"))) {
writer = new OutputStreamWriter(new FileOutputStream(filetype, true), Charset.forName("IBM-1047"));
} else {
writer = new FileWriter(filetype, true);
}
} catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
return writer;
}
}
2 changes: 1 addition & 1 deletion src/org/testKitGen/ModesDictionary.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ private void parseInvalidSpec(Element modes) throws IOException {
ArrayList<String> specs = new ArrayList<String>();
int lineNum = 0;
BufferedReader reader = null;
if (arg.getSpec().toLowerCase().contains("zos")) {
if (arg.getSpec().toLowerCase().contains("zos") && !(arg.getJdkVersion().matches("2\\d"))) {
reader = Files.newBufferedReader(Paths.get(ottawaCsv), Charset.forName("IBM-1047"));
} else {
reader = Files.newBufferedReader(Paths.get(ottawaCsv));
Expand Down
8 changes: 5 additions & 3 deletions src/org/testKitGen/UtilsGen.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,22 @@
package org.testKitGen;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.List;

public class UtilsGen {
private Arguments arg;
private ModesDictionary md;
private MkGen mg;
private String utilsMk;
private String rerunMk;
private List<String> ignoreOnRerunList;

public UtilsGen(Arguments arg, ModesDictionary md, List<String> ignoreOnRerunList) {
this.arg = arg;
this.md = md;
this.mg = new MkGen(arg, null, null, rerunMk, ignoreOnRerunList, ignoreOnRerunList);
this.utilsMk = arg.getProjectRootDir() + "/TKG/" + Constants.UTILSMK;
this.rerunMk = arg.getProjectRootDir() + "/TKG/" + Constants.RERUNMK;
this.ignoreOnRerunList = ignoreOnRerunList;
Expand All @@ -40,7 +42,7 @@ public void generateFiles() {
}

private void generateUtil() {
try (FileWriter f = new FileWriter(utilsMk)) {
try (Writer f = mg.getWriterObject(utilsMk)) {
f.write(Constants.HEADERCOMMENTS);
f.write("TOTALCOUNT := " + TestInfo.numOfTests() + "\n");
f.write("PLATFORM=\n");
Expand All @@ -56,7 +58,7 @@ private void generateUtil() {
}

private void generateRerun() {
try (FileWriter f = new FileWriter(rerunMk)) {
try (Writer f = mg.getWriterObject(rerunMk)) {
f.write(Constants.HEADERCOMMENTS);
String ignoreOnRerunStr = String.join(",", ignoreOnRerunList);
f.write("IGNORE_ON_RERUN=");
Expand Down

0 comments on commit 3ed7f0a

Please sign in to comment.