On Wed, 10 Apr 2024 16:46:30 GMT, Suchismith Roy <s...@openjdk.org> wrote:
>> Allow support for both .a and .so files in AIX. >> If .so file is not found, allow fallback to .a extension. >> JBS Issue: [JDK-8319516](https://bugs.openjdk.org/browse/JDK-8319516) > > Suchismith Roy has updated the pull request incrementally with one additional > commit since the last revision: > > Files copy method Hello Martin, > Maybe using that directory is easier. Does anybody else have a suggestion? Each jtreg test, when it is run, will be run in a "scratch" directory. Details about that are explained here https://openjdk.org/jtreg/faq.html#scratch-directory. That directory can be used to create test specific content. As for the test, I think what you will need is something like this (I don't know or have access to AIX, so this obviously isn't tested) import java.nio.file.Files; import java.nio.file.Path; import jdk.test.lib.process.ProcessTools; /** * @test * @bug 8319516 * @summary verify that System.loadLibrary on AIX is able to load libraries from ".a" (archive) file * @requires os.family == "aix" * @library /test/lib/ * @build jdk.test.lib.process.ProcessTools * @run driver AIXLoadLibraryDriver */ public class AIXLoadLibraryDriver { private static final String TEST_LIBRARY_NAME = "foobar"; // creates a ".a" archive file in a test specific directory and then // launches a java application passing this directory through "-Djava.library.path". // the java application then attempts to load the library using System.loadLibrary() public static void main(final String[] args) throws Exception { final String javaHome = System.getProperty("java.home"); final Path libawtSo = Path.of(javaHome).resolve("lib", "libawt.so"); if (!Files.exists(libawtSo)) { throw new AssertionError(libawtSo + " is missing"); } final String archiveFileName = "lib" + TEST_LIBRARY_NAME + ".a"; // copy over libawt.so as an archive file to test specific scratch dir final Path testNativeLibDir = Path.of("native").toAbsolutePath(); Files.createDirectories(testNativeLibDir); final Path libDummyArchive = testNativeLibDir.resolve(archiveFileName); Files.copy(libawtSo, libDummyArchive); // launch a java application which calls System.loadLibrary and is passed // the directory containing the native library archive file, through // -Djava.library.path System.out.println("Launching application with library path " + testNativeLibDir); final ProcessBuilder processBuilder = ProcessTools.createTestJavaProcessBuilder( "-Djava.library.path=" + testNativeLibDir, AIXLoadLibraryDriver.LoadLibraryApp.class.getName()); ProcessTools.executeCommand(processBuilder).shouldHaveExitValue(0); } static class LoadLibraryApp { public static void main(final String[] args) throws Exception { System.out.println("attempting to load library " + TEST_LIBRARY_NAME); System.loadLibrary(TEST_LIBRARY_NAME); System.out.println(TEST_LIBRARY_NAME + " successfully loaded"); } } } ------------- PR Comment: https://git.openjdk.org/jdk/pull/17945#issuecomment-2049416575