fixup linkage
This commit is contained in:
parent
7b7a9db050
commit
b2cfaa6ccb
|
@ -38,7 +38,7 @@ public class VMControlLibrary {
|
||||||
"vmcontrol.shlib";
|
"vmcontrol.shlib";
|
||||||
|
|
||||||
private static final String VMWARE_LIB =
|
private static final String VMWARE_LIB =
|
||||||
getProperty("lib.vmware", "/usr/lib/vmware");
|
getProperty("lib.vmware", getVMwareLib().getPath());
|
||||||
|
|
||||||
private static final String VMCONTROL_TAR =
|
private static final String VMCONTROL_TAR =
|
||||||
getProperty("control.tar", VMWARE_LIB + "/perl/control.tar");
|
getProperty("control.tar", VMWARE_LIB + "/perl/control.tar");
|
||||||
|
@ -63,16 +63,42 @@ public class VMControlLibrary {
|
||||||
private static final String LIBSSL =
|
private static final String LIBSSL =
|
||||||
getProperty("libssl", "libssl.so.0.9.7");
|
getProperty("libssl", "libssl.so.0.9.7");
|
||||||
|
|
||||||
|
private static final String LIBCRYPTO =
|
||||||
|
getProperty("libcrypto", "libcrypto.so.0.9.7");
|
||||||
|
|
||||||
|
private static boolean isDebug = false;
|
||||||
|
|
||||||
private static String getProperty(String key, String defval) {
|
private static String getProperty(String key, String defval) {
|
||||||
return System.getProperty("vmcontrol." + key, defval);
|
return System.getProperty("vmcontrol." + key, defval);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static File getLibSSL() {
|
private static File getVMwareLib() {
|
||||||
File libssl = new File(VMWARE_LIB, "lib/" + LIBSSL);
|
String location = "/usr/lib/vmware";
|
||||||
if (libssl.isDirectory()) {
|
File lib = new File(location);
|
||||||
libssl = new File(libssl, LIBSSL);
|
if (lib.exists()) {
|
||||||
|
//running on a VMware host
|
||||||
|
return lib;
|
||||||
}
|
}
|
||||||
return libssl;
|
else {
|
||||||
|
//remote w/ api installed
|
||||||
|
return new File(location + "-api");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static File getLib(String name) {
|
||||||
|
File lib = new File(VMWARE_LIB, "lib/" + name);
|
||||||
|
if (lib.isDirectory()) {
|
||||||
|
lib = new File(lib, name);
|
||||||
|
}
|
||||||
|
return lib;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static File getLibSSL() {
|
||||||
|
return getLib(LIBSSL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static File getLibCrypto() {
|
||||||
|
return getLib(LIBCRYPTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void exec(String[] args)
|
private static void exec(String[] args)
|
||||||
|
@ -89,6 +115,9 @@ public class VMControlLibrary {
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
}
|
}
|
||||||
|
if (isDebug) {
|
||||||
|
System.out.println("exec" + Arrays.asList(args) + " OK");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getSharedLibrary() {
|
public static String getSharedLibrary() {
|
||||||
|
@ -192,6 +221,7 @@ public class VMControlLibrary {
|
||||||
}
|
}
|
||||||
|
|
||||||
File libssl = getLibSSL();
|
File libssl = getLibSSL();
|
||||||
|
File libcrypto = getLibCrypto();
|
||||||
|
|
||||||
if (!libssl.exists()) {
|
if (!libssl.exists()) {
|
||||||
throw new FileNotFoundException(libssl.toString());
|
throw new FileNotFoundException(libssl.toString());
|
||||||
|
@ -217,7 +247,10 @@ public class VMControlLibrary {
|
||||||
"-shared",
|
"-shared",
|
||||||
"-o", out.getPath(),
|
"-o", out.getPath(),
|
||||||
obj.getPath(),
|
obj.getPath(),
|
||||||
libssl.getPath()
|
"-Wl,-rpath", libssl.getParent(),
|
||||||
|
libssl.getPath(),
|
||||||
|
"-Wl,-rpath", libcrypto.getParent(),
|
||||||
|
libcrypto.getPath()
|
||||||
};
|
};
|
||||||
|
|
||||||
exec(link_args);
|
exec(link_args);
|
||||||
|
@ -230,6 +263,7 @@ public class VMControlLibrary {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
isDebug = true;
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
link();
|
link();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue