import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.tizen.nativecommon.build.SmartBuildInterface;
+import org.tizen.nativeplatform.pkg.commander.deb.DebCommanderHost;
import org.tizen.nativeplatform.pkg.commander.rpm.RpmCommanderDevice;
import org.tizen.nativeplatform.pkg.commander.rpm.RpmCommanderHost;
import org.tizen.nativeplatform.pkg.commander.rpm.RpmCommanderRootstrap;
if (type.equals(PkgTypes.RPM)) {
hsCommander = new RpmCommanderHost(useConsoleLog);
hsCommander.setHttpProxy(http_proxy);
+ } else if (type.equals(PkgTypes.DPKG)) {
+ hsCommander = new DebCommanderHost();
}
}
return hsCommander;
dvCommander = new RpmCommanderDevice(device);
dvCommander.setHttpProxy(http_proxy);
}
+ } else if (type.equals(PkgTypes.DPKG)) {
+ return null;
}
}
return dvCommander;
rtCommander = new RpmCommanderRootstrap(new Path(rootPath));
rtCommander.setHttpProxy(http_proxy);
}
+ } else if (type.equals(PkgTypes.DPKG)) {
+ return null;
}
}
return rtCommander;
--- /dev/null
+package org.tizen.nativeplatform.pkg.commander.deb;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.tizen.nativeplatform.pkg.commander.ICommandStatus;
+import org.tizen.nativeplatform.pkg.commander.IPkgCommander;
+import org.tizen.nativeplatform.pkg.model.PkgInfo;
+import org.tizen.nativeplatform.pkg.model.PkgStatus;
+import org.tizen.nativeplatform.pkg.tools.DpkgTool;
+import org.tizen.nativeplatform.pkgmgr.PackageManagerOuputReceiver;
+import org.tizen.nativeplatform.repo.model.Repository;
+import org.tizen.nativeplatform.types.CmdTargetTypes;
+import org.tizen.nativeplatform.types.PkgInstallTypes;
+import org.tizen.nativeplatform.util.CommandLauncher;
+
+public class DebCommanderHost implements IPkgCommander {
+
+ protected final String CMD_DELIMITER = ";";
+
+ public DebCommanderHost() {
+ }
+
+ @Override
+ public PackageManagerOuputReceiver getOutputReceiver() {
+ return null;
+ }
+
+ @Override
+ public void setHttpProxy(String proxy) {
+
+ }
+
+ @Override
+ public String getArchFromFile(String filePath) {
+ return null;
+ }
+
+ @Override
+ public String getNameFromFile(String filePath) {
+ return null;
+ }
+
+ @Override
+ public String getVerFromFile(String filePath) {
+ return null;
+ }
+
+ @Override
+ public String[] getArch(String pkg) {
+ return null;
+ }
+
+ @Override
+ public String[] getName(String pkg) {
+ return null;
+ }
+
+ @Override
+ public String[] getVer(String pkg) {
+ return null;
+ }
+
+ @Override
+ public String[] getVer(String pkg, TOOL tool) {
+ return null;
+ }
+
+ @Override
+ public boolean is80386File(String filePath) {
+ return false;
+ }
+
+ @Override
+ public boolean isArmFile(String filePath) {
+ return false;
+ }
+
+ @Override
+ public ICommandStatus installLocalPkg(String[] files, TOOL type, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus installLocalPkg(String[] files, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus installLocalPkg(String file, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus installRemotePkg(String[] pkgs, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus installRemotePkg(String pkg, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus uninstallPkg(String[] pkgs, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus uninstallPkg(String pkg, IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus copyFilesToTmpDir(String[] fileList) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus copyFile(String srcPath, String dstPath) {
+ return null;
+ }
+
+ @Override
+ public PkgInfo getPkgInfo(String pkg, TOOL type) {
+ return null;
+ }
+
+ @Override
+ public List<PkgStatus> getAllPkgList() {
+ return null;
+ }
+
+ @Override
+ public Map<String, PkgStatus> getAllPkgMap() {
+ return null;
+ }
+
+ @Override
+ public Map<String, PkgStatus> getRemotePkgList() {
+ return null;
+ }
+
+ @Override
+ public Map<String, PkgStatus> getLocalPkgList() {
+ return null;
+ }
+
+ @Override
+ public Map<String, PkgStatus> getWhatProvides(String capability) {
+ return null;
+ }
+
+ @Override
+ public List<Repository> getRepoList() {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus upgrade(IProgressMonitor monitor) {
+ return null;
+ }
+
+ @Override
+ public void resetRepo() {
+ }
+
+ @Override
+ public ICommandStatus refreshRepoList() {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus addRepo(String name, String url) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus addLocalRepo(String name, String path) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus removeRepo(String name) {
+ return null;
+ }
+
+ @Override
+ public boolean checkPkgInstalled(String pkg) {
+ String result = "";
+ String command = makeCommand(DpkgTool.statusCommand(pkg));
+ try {
+ result = CommandLauncher.executeOutput(command);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ for (String line : result.split("\n")) {
+ if (line.startsWith("Package:")) {
+ String[] splited = line.split(":");
+ if (splited.length > 1) {
+ if (splited[1].trim().equals(pkg)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean existsFile(String file) {
+ return false;
+ }
+
+ @Override
+ public ICommandStatus getMd5Checksum(String path) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus makeDir(String path) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus removeFile(String path) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus changeSmack(String path, String a_label, String e_label) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus getSmack(String paths) {
+ return null;
+ }
+
+ @Override
+ public CmdTargetTypes getCommandType() {
+ return null;
+ }
+
+ @Override
+ public boolean isRunningApp(String appId) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public ICommandStatus killApp(String appId) {
+ return null;
+ }
+
+ @Override
+ public ICommandStatus launchApp(String appId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public PkgInstallTypes searchPkg(String pkg) {
+ return null;
+ }
+
+ @Override
+ public String getSrcPkgName(String pkg) {
+ return null;
+ }
+
+ @Override
+ public String getLogs() {
+ return null;
+ }
+
+ protected String makeCommand(String... cmds) {
+ StringBuffer sbCommand = new StringBuffer();
+ int size = cmds.length;
+ for (int i = 0; i < size; i++) {
+ String cmd = cmds[i];
+ cmd = cmd.trim();
+ if (cmd.isEmpty()) {
+ continue;
+ }
+ if (i != size - 1) {
+ cmd = (cmd.endsWith(";")) ? cmd : cmd + CMD_DELIMITER;
+ }
+ sbCommand.append(cmd);
+ }
+ return sbCommand.toString();
+ }
+}
--- /dev/null
+/*
+ * Native Platform
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Donghyuk Yang <donghyuk.yang@samsung.com>
+ * DongHee Yang <donghee.yang@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.nativeplatform.pkg.tools;
+
+public class DpkgTool {
+
+ public static final String NAME = "dpkg";
+
+ private final static String TOOL = "dpkg";
+ private final static String WS = " ";
+ private final static String STATUS_OP = "--status";
+
+ public static String statusCommand(String pkg) {
+ return makeCommand(STATUS_OP, pkg);
+ }
+
+ private static String makeCommand(String... options) {
+ StringBuffer sbCommand = new StringBuffer(TOOL + WS);
+ for (String op : options) {
+ op = op.trim();
+ if (op.isEmpty()) {
+ continue;
+ }
+ sbCommand.append(op + WS);
+ }
+ return sbCommand.toString().trim();
+ }
+}
package org.tizen.nativeplatform.types;
public enum PkgTypes {
- RPM("rpm");
+ RPM("rpm"),
+ DPKG("deb");
final String ext;
GenRootDlg.Error.NoAnyRepos = There is no any repositories!
GenRootDlg.Error.Incorrect.Info = Failed to validate information for generating rootstrap.
GenRootDlg.Error.Empty.Arch = Architecture is empty
+GenRootDlg.Error.Miss.Prerequisite = \"%s\" package is not installed in your machine.\nTry to command \"sudo apt-get install %s\".
ChangeConfFileDlg.Title = Change (build) configuration file
import org.tizen.nativecommon.build.exception.SBIException;
import org.tizen.nativeplatform.Activator;
import org.tizen.nativeplatform.build.PlatformConfigurationManager;
+import org.tizen.nativeplatform.pkg.commander.IPkgCommander;
import org.tizen.nativeplatform.pkg.commander.PkgCommandTarget;
import org.tizen.nativeplatform.pkgmgr.PkgMgrInitializer;
import org.tizen.nativeplatform.pkgmgr.ui.RPMPackageDialog;
import org.tizen.nativeplatform.rootstrap.BaseFileSystemGenerator;
import org.tizen.nativeplatform.rootstrap.IRootstrapChangedListener;
import org.tizen.nativeplatform.rootstrap.RootstrapManager;
-import org.tizen.nativeplatform.util.CommandLauncher;
+import org.tizen.nativeplatform.types.PkgTypes;
import org.tizen.nativeplatform.util.GBSArchitectureChecker;
import org.tizen.nativeplatform.util.PlatformProjectUtil;
import org.tizen.nativeplatform.views.model.PlatformRootstrap;
private Map<String, Thread> threadMap = new HashMap<String, Thread>();
private static final String PLATFORM_PERSPECTIVE_ID = "org.tizen.nativeplatform.perspective";
+ private static final String PREREQUISITE_PKG = "ruby";
private final String BUNDLE_NAME = RootstrapView.class.getPackage().getName()
+ ".RootstrapUIMessages";//$NON-NLS-1$
}
private void showAddDialog() {
- RootstrapGenDialog dlg = new RootstrapGenDialog(shell);
- if (dlg.open() == RootstrapGenDialog.OK) {
- String rootstrapName = dlg.getRootstrapName();
- String arch = GBSArchitectureChecker.changeToSupportedArchitecture(dlg
- .getSelectionTab().getArchitecture());
- List<String> repositoryURLs = dlg.getSelectionTab().getRepositoryURLs();
- List<Repository> repoURLs = RepoManager.createRepoList(repositoryURLs);
-
- boolean immediateGen = dlg.getSelectionTab().isImmediateGenerateChecked();
- IPath buildConfFile = dlg.getSelectionTab().getBuildConfFile();
- genRootstrap(rootstrapName, arch, repoURLs, immediateGen, buildConfFile);
+ PkgCommandTarget target = new PkgCommandTarget(PkgTypes.DPKG);
+ IPkgCommander dpkgCommander = target.getHostCommander();
+
+ if (!dpkgCommander.checkPkgInstalled(PREREQUISITE_PKG)) {
+ String msg = String.format(resources.getString("GenRootDlg.Error.Miss.Prerequisite"),
+ PREREQUISITE_PKG, PREREQUISITE_PKG);
+ DialogUtil.openErrorDialog(msg);
+ } else {
+ RootstrapGenDialog dlg = new RootstrapGenDialog(shell);
+ if (dlg.open() == RootstrapGenDialog.OK) {
+ String rootstrapName = dlg.getRootstrapName();
+ String arch = GBSArchitectureChecker.changeToSupportedArchitecture(dlg
+ .getSelectionTab().getArchitecture());
+ List<String> repositoryURLs = dlg.getSelectionTab().getRepositoryURLs();
+ List<Repository> repoURLs = RepoManager.createRepoList(repositoryURLs);
+
+ boolean immediateGen = dlg.getSelectionTab().isImmediateGenerateChecked();
+ IPath buildConfFile = dlg.getSelectionTab().getBuildConfFile();
+ genRootstrap(rootstrapName, arch, repoURLs, immediateGen, buildConfFile);
+ }
}
}