List<String> installableMetaNames = getInstallableMetas(pm, packageNames);
PackageSet installableMetas = pm.getPackagesByNames(installableMetaNames);
PackageSet installablePackages = pm.getDependsPackagesFromRepository(installableMetas);
+ PackageSet skipPackages = pm.getPackagesByNames(Options.skipPackages);
+
+ if (!skipPackages.isEmpty()) {
+ Log.log("Installation skip packages : " + skipPackages);
+ installablePackages = pm.diff(installablePackages, skipPackages);
+ }
if (checkAvailableSize(installablePackages, targetDir)) {
return installPackages(installablePackages, targetDir);
controller.init();
PackageManager pm = PackageManager.getInstance();
-
+
// Uninstall whole SDK.
if (packageNames.contains("all")) {
if (controller.uninstall(pm.getInstalledMetaNames(), null)) {
} else {
return false;
}
- }
-
- // Uninstall specific installed packages.
- if (!vailidateRemovePkgs(pm, packageNames)) {
+ } else if (!vailidateRemoveMetaPkgs(pm, packageNames)) {
+ // Uninstall specific installed packages.
return false;
- }
+ }
if (controller.uninstall(packageNames, null)) {
// After uninstall packages, if installed meta package is "ESSENTIAL-COMPONENT",
* @return If Installmanager can find input package in installed package list, return true.
* otherwise, return false.
*/
- private static boolean vailidateRemovePkgs(PackageManager pm, Collection<String> pkgNames) {
+ private static boolean vailidateRemoveMetaPkgs(PackageManager pm, Collection<String> pkgNames) {
List<String> installedMetaNames = pm.getInstalledMetaNames();
for (String name : pkgNames) {
}
PackageSet pkgsToRemove = packageManager.getToRemovePackagesInRemove(metasToRemove);
+
Log.log("Remove packages: " + pkgsToRemove);
if (monitor != null) {
String command = ShellUtil.addInterpreter(scriptFile.getAbsolutePath());
- int exitCode = ShellUtil.execute(command, env, null,
+ String current = PathUtil.getCurrentDir();
+ Log.log("Current working directory. => " + current);
+ int exitCode = ShellUtil.execute(command, env, new File(current),
new LoggerShellParser());
// check exit code
public static boolean isNetwork = true;
public static List<String> packages = new ArrayList<String>();
+ public static List<String> skipPackages = new ArrayList<String>();
/**
* Use only download for making SDK image.
}
}
+ // set skip packages
+ argIter = argArray.iterator();
+ while (argIter.hasNext()) {
+ if (argIter.next().equalsIgnoreCase("-skip")) {
+ argIter.remove();
+ while (argIter.hasNext()) {
+ String pkg = argIter.next();
+ if (!pkg.startsWith("-")) {
+ skipPackages.add(pkg);
+ argIter.remove();
+ } else {
+ break;
+ }
+ }
+ }
+ }
+
// set proxy
argIter = argArray.iterator();
while (argIter.hasNext()) {
return installedMetaNames;
}
+ public List<String> getInstalledPkgNames() {
+ ArrayList<String> installedPkgNames = new ArrayList<String>();
+
+ for (Package pkg : getInstalledPackages()) {
+ installedPkgNames.add(pkg.getPackageName());
+ }
+
+ return installedPkgNames;
+ }
+
/**
* @return meta packages among all recent packages
*/
* @param pset2
* @return new package set that represents (pset1 - pset2).
*/
- private PackageSet diff(PackageSet pset1, PackageSet pset2) {
+ public PackageSet diff(PackageSet pset1, PackageSet pset2) {
PackageSet diff = new PackageSet();
for(Package p : pset1) {
if(!pset2.contains(p)) {