X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a1fcc0c0597c993b03448f6244bbdfef3c6850e4..ac080087b39ef79ff497d3992ff04b3e20fe40b2:/src/bindings/java/org/simgrid/NativeLib.java diff --git a/src/bindings/java/org/simgrid/NativeLib.java b/src/bindings/java/org/simgrid/NativeLib.java index 660158a75f..a338cc3e93 100644 --- a/src/bindings/java/org/simgrid/NativeLib.java +++ b/src/bindings/java/org/simgrid/NativeLib.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2014-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -12,6 +12,7 @@ import java.io.OutputStream; import java.io.File; import java.nio.file.Files; import java.nio.file.Path; +import java.util.stream.Stream; /** Helper class loading the native functions of SimGrid that we use for downcalls * @@ -69,9 +70,9 @@ public final class NativeLib { System.err.println("\nCannot load the bindings to the "+name+" library in path "+getPath()+" and no usable SimGrid installation found on disk."); if (cause != null) { - if (cause.getMessage().matches(".*libcgraph.so.*")) + if (cause.getMessage().contains("libcgraph.so")) System.err.println("HINT: Try to install the libcgraph package (sudo apt-get install libcgraph)."); - else if (cause.getMessage().matches(".*libboost_context.so.*")) + else if (cause.getMessage().contains("libboost_context.so")) System.err.println("HINT: Try to install the boost-context package (sudo apt-get install libboost-context-dev)."); else System.err.println("Try to install the missing dependencies, if any. Read carefully the following error message."); @@ -79,7 +80,7 @@ public final class NativeLib { System.err.println(); cause.printStackTrace(); } else { - System.err.println("This jar file does not seem to fit your system, and no usable SimGrid installation found on disk."); + System.err.println("This jar file does not seem to fit your system, and no usable SimGrid installation found on disk for "+name+"."); } System.exit(1); } @@ -100,7 +101,7 @@ public final class NativeLib { { name, "lib"+name+".so", /* linux */ name+".dll", "lib"+name+".dll", /* windows (pure and mingw) */ - "lib"+name+".dylib" /* mac osx */}) { + "lib"+name+".dylib" /* macOS */}) { File fileOut = new File(tempDir.toFile().getAbsolutePath() + File.separator + filename); boolean done = false; @@ -142,11 +143,11 @@ public final class NativeLib { else if ("x86_64".equalsIgnoreCase(arch) || "AMD64".equalsIgnoreCase(arch)) arch = "amd64"; - if (os.toLowerCase().startsWith("win")){ + if (os.toLowerCase().startsWith("win")) { os = "Windows"; - } else if (os.contains("OS X")) + } else if (os.contains("OS X")) { os = "Darwin"; - + } os = os.replace(' ', '_'); arch = arch.replace(' ', '_'); @@ -161,16 +162,15 @@ public final class NativeLib { } @Override public void run() { - try { - for (File f : dir.listFiles()) - if (! f.delete() && !f.getAbsolutePath().contains("appveyor")) // Be silent on AppVeyor to not break the tests. Ugly trick :) - System.out.println("Unable to clean temporary file "+f.getAbsolutePath()+" during shutdown."); - if (! dir.delete() && !dir.getAbsolutePath().contains("appveyor") ) - System.out.println("Unable to clean temporary file "+dir.getAbsolutePath()+" during shutdown."); + try (Stream paths = Files.walk(dir.toPath())) { + paths.sorted(java.util.Comparator.reverseOrder()) + .map(java.nio.file.Path::toFile) + //.peek(System.out::println) // Prints what gets removed + .forEach(java.io.File::delete); } catch(Exception e) { System.out.println("Error while cleaning temporary file "+dir.getAbsolutePath()+" during shutdown: "+e.getCause()); e.printStackTrace(); - } + } } } }