Skip to content
Snippets Groups Projects
Commit b88a4974 authored by Moritz Bergenthal's avatar Moritz Bergenthal
Browse files

Package the native vc_solver binary and extract it upon use if no local version is present

parent 465792d5
No related branches found
No related tags found
1 merge request!28Package the native vc_solver binary and extract it upon use if no local version is present
Pipeline #201622 failed
......@@ -4,10 +4,9 @@ import de.uni.bremen.grapa.library.graphs.api.DirectedEdge;
import de.uni.bremen.grapa.library.graphs.api.DirectedGraph;
import de.uni.bremen.grapa.library.graphs.api.Vertex;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
......@@ -30,7 +29,27 @@ public class NativeVcSolver {
throw new IllegalArgumentException("Contained a directed edge.");
}
final ProcessBuilder processBuilder = new ProcessBuilder("./vc_solver");
File solver = new File("vc_solver");
if (!solver.exists()) {
// Use packaged vc_solver instead
try (InputStream solverResource = (getClass().getResourceAsStream("/vc_solver"))){
solver = File.createTempFile("vc_solver", "");
assert solverResource != null;
Files.copy(solverResource, solver.toPath(), StandardCopyOption.REPLACE_EXISTING);
// Set executable flag on solver.
// Return value may be unused, cause failure to set this will result in appropriate error later
solver.setExecutable(true);
// Clear the temporary file upon JVM shutdown
solver.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
}
}
final ProcessBuilder processBuilder = new ProcessBuilder(solver.getAbsolutePath());
try {
final Process process = processBuilder.start();
......
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment