1f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com/* 2f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * Copyright (C) 2011 The Android Open Source Project 3f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * 4f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 5f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * you may not use this file except in compliance with the License. 6f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * You may obtain a copy of the License at 7f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * 8f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * http://www.apache.org/licenses/LICENSE-2.0 9f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * 10f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * Unless required by applicable law or agreed to in writing, software 11f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * distributed under the License is distributed on an "AS IS" BASIS, 12f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * See the License for the specific language governing permissions and 14f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com * limitations under the License. 15f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com */ 16f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 170eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.compackage vogar.tasks; 18f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 19f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport java.io.File; 20f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport vogar.Result; 21f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport vogar.Run; 220eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.comimport vogar.Target; 23f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport vogar.Vogar; 24f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 250eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.compublic final class PrepareTarget extends Task { 26f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com private final Run run; 270eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com private final Target target; 28f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 290eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com public PrepareTarget(Run run, Target target) { 300eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com super("prepare target"); 31f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com this.run = run; 320eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com this.target = target; 33f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 34f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 35f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com @Override protected Result execute() throws Exception { 36f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com // Even if runner dir is /vogar/run, the grandparent will be / (and non-null) 370eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.await(run.runnerDir.getParentFile().getParentFile()); 38f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com if (run.cleanBefore) { 390eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.rm(run.runnerDir); 40f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 410eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.mkdirs(run.runnerDir); 420eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.mkdirs(run.vogarTemp()); 430eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.mkdirs(run.dalvikCache()); 443b3cf36f62d25eb950f0bf95071a82b83e730a58jessewilson@google.com for (int i = 0; i < Vogar.NUM_PROCESSORS; i++) { 450eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.forwardTcp(run.firstMonitorPort + i); 46f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 47f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com if (run.debugPort != null) { 480eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.forwardTcp(run.debugPort); 49f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 500eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.mkdirs(run.deviceUserHome); 51f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com 52f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com // push ~/.caliperrc to device if found 53f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com File hostCaliperRc = Vogar.dotFile(".caliperrc"); 54f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com if (hostCaliperRc.exists()) { 550eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com target.push(hostCaliperRc, new File(run.deviceUserHome, ".caliperrc")); 56f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 57f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com return Result.SUCCESS; 58f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com } 59f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com} 60