Skip to content

Commit

Permalink
[FIXED JENKINS-16720] Ensure SDK version check is done on the right n…
Browse files Browse the repository at this point in the history
…ode.

Previously, when automatically installing the SDK, we were instantiating
an SDK object on the master, meaning that we were inspecting the tools
version file on the master, rather than on the node in question.

Also removed the empty catch block which was masking this problem.
  • Loading branch information
orrc committed Apr 10, 2013
1 parent 25a2268 commit 0bee4d3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
12 changes: 11 additions & 1 deletion src/main/java/hudson/plugins/android_emulator/SdkInstaller.java
Expand Up @@ -80,7 +80,7 @@ private static AndroidSdk doInstall(Launcher launcher, BuildListener listener, S
if (!isSdkInstallComplete(node, androidHome)) {
PrintStream logger = listener.getLogger();
log(logger, Messages.INSTALLING_REQUIRED_COMPONENTS());
AndroidSdk sdk = new AndroidSdk(androidHome, androidSdkHome);
AndroidSdk sdk = getAndroidSdkForNode(node, androidHome, androidSdkHome);
installComponent(logger, launcher, sdk, "platform-tool", "tool");

// If we made it this far, confirm completion by writing our our metadata file
Expand All @@ -95,6 +95,16 @@ private static AndroidSdk doInstall(Launcher launcher, BuildListener listener, S
return Utils.getAndroidSdk(launcher, androidHome, androidSdkHome);
}

@SuppressWarnings("serial")
private static AndroidSdk getAndroidSdkForNode(Node node, final String androidHome,
final String androidSdkHome) throws IOException, InterruptedException {
return node.getChannel().call(new Callable<AndroidSdk, IOException>() {
public AndroidSdk call() throws IOException {
return new AndroidSdk(androidHome, androidSdkHome);
}
});
}

/**
* Downloads and extracts the basic Android SDK on a given Node, if it hasn't already been done.
*
Expand Down
16 changes: 6 additions & 10 deletions src/main/java/hudson/plugins/android_emulator/sdk/AndroidSdk.java
Expand Up @@ -28,30 +28,26 @@ public class AndroidSdk implements Serializable {
private boolean usesPlatformTools;
private int sdkToolsVersion;

public AndroidSdk(String root, String home) {
public AndroidSdk(String root, String home) throws IOException {
this.sdkRoot = root;
this.sdkHome = home;
if (hasKnownRoot()) {
determineVersion();
}
}

private void determineVersion() {
private void determineVersion() throws IOException {
// Determine whether SDK has platform tools installed
File toolsDirectory = new File(sdkRoot, "platform-tools");
setUsesPlatformTools(toolsDirectory.isDirectory());

// Determine SDK tools version
File toolsPropFile = new File(sdkRoot, "tools/source.properties");
Map<String, String> toolsProperties;
try {
toolsProperties = Utils.parseConfigFile(toolsPropFile);
String revisionStr = Util.fixEmptyAndTrim(toolsProperties.get("Pkg.Revision"));
if (revisionStr != null) {
setSdkToolsVersion(Utils.parseRevisionString(revisionStr));
}
} catch (IOException e) {
// TODO
toolsProperties = Utils.parseConfigFile(toolsPropFile);
String revisionStr = Util.fixEmptyAndTrim(toolsProperties.get("Pkg.Revision"));
if (revisionStr != null) {
setSdkToolsVersion(Utils.parseRevisionString(revisionStr));
}
}

Expand Down

0 comments on commit 0bee4d3

Please sign in to comment.