/** * @param dependency */ public static String getCUDFName(PackageDependency dependency) { // NXP-9268: Workaround for nuxeo-content-browser if ("nuxeo-content-browser".equals(dependency.getName()) && dependency.getVersionRange().toString().contains("cmf")) { return dependency.getName() + "*cmf"; } else { return dependency.getName(); } }
/** * Parse request to compute the list of directly involved packages * * @since 1.4.18 */ protected void computeInvolvedPackages(PackageDependency[] packageDependencies, Map<String, PackageDependency> upgradesMap, Set<String> involvedPackages, List<String> installedOrRequiredSNAPSHOTPackages) { for (PackageDependency packageDependency : packageDependencies) { if (upgradesMap != null) { upgradesMap.put(packageDependency.getName(), packageDependency); } involvedPackages.add(packageDependency.getName()); addIfSNAPSHOT(installedOrRequiredSNAPSHOTPackages, packageDependency); } }
/** * If additional dependencies have already been set, check that we don't have ourselves in them. * * @since 8.3 */ public static PackageDependency[] fixDependencies(String name, PackageDependency[] dependencies) { if (dependencies == null) { return null; } for (PackageDependency dep : dependencies) { if (dep.getName().equals(name)) { // we have a dependency for ourselves. remove it. List<PackageDependency> list = new ArrayList<>(Arrays.asList(dependencies)); list.remove(dep); return list.toArray(new PackageDependency[0]); } } return dependencies; }
/** * Browse the given packages' "dependencies", "conflicts" and "provides" to populate the list of involved packages * * @since 1.4.18 */ protected void computeInvolvedReferences(Set<String> involvedPackages, List<String> installedOrRequiredSNAPSHOTPackages, PackageDependency[] pkgDeps, Map<String, List<DownloadablePackage>> allPackagesMap) { for (PackageDependency pkgDep : pkgDeps) { if (involvedPackages.add(pkgDep.getName())) { addIfSNAPSHOT(installedOrRequiredSNAPSHOTPackages, pkgDep); List<DownloadablePackage> downloadablePkgDeps = allPackagesMap.get(pkgDep.getName()); if (downloadablePkgDeps == null) { log.warn("Unknown dependency: " + pkgDep); continue; } for (DownloadablePackage downloadablePkgDep : downloadablePkgDeps) { computeInvolvedReferences(involvedPackages, installedOrRequiredSNAPSHOTPackages, downloadablePkgDep, allPackagesMap); } } } }
protected void recurseOnAvailableChoices(String pkgId, String targetPlatform, RecursiveDependencyResolver dc, String path) throws DependencyException { Package pkg = pm.findPackageById(pkgId); if (pkg == null) { throw new DependencyException("Unable to find package " + pkgId); } for (PackageDependency dep : pkg.getDependencies()) { List<Version> versions = pm.getAvailableVersion(dep.getName(), dep.getVersionRange(), targetPlatform); if (versions.size() == 0) { throw new DependencyException("Unable to find a compatible version for package " + dep.getName() + " (" + dep.getVersionRange().toString() + ")"); } if (path.contains("/" + dep.getName() + "/")) { throw new DependencyException(String.format("Detected loop in dependencies: pkg=%s,dep=%s,path=%s'", pkgId, dep.getName(), path)); } dc.addDep(dep.getName(), versions); for (Version v : versions) { recurseOnAvailableChoices(dep.getName() + "-" + v.toString(), targetPlatform, dc, path + dep.getName() + "/"); } } }
private boolean matchDependency(PackageDependency pkgDep, Package pkg) { boolean match = pkgDep.getName().equals(pkg.getName()) && pkgDep.getVersionRange().matchVersion(pkg.getVersion()); if (!match && pkg.getProvides() != null) { // Look at provides for (PackageDependency provide : pkg.getProvides()) { if (pkgDep.getName().equals(provide.getName()) && pkgDep.getVersionRange().matchVersionRange(provide.getVersionRange())) { match = true; break; } } } return match; }
if (!pkgNamesToRemove.contains(p.getName())) { for (PackageDependency dep : p.getDependencies()) { if (pkgNamesToRemove.contains(dep.getName())) { pkgNamesToRemove.add(p.getName()); break;
/** * Browse the given package's "dependencies", "conflicts" and "provides" to populate the list of involved packages * * @param installedOrRequiredSNAPSHOTPackages * @since 1.4.18 */ protected void computeInvolvedReferences(Set<String> involvedPackages, List<String> installedOrRequiredSNAPSHOTPackages, DownloadablePackage pkg, Map<String, List<DownloadablePackage>> allPackagesMap) { if (involvedPackages.contains(pkg.getName())) { computeInvolvedReferences(involvedPackages, installedOrRequiredSNAPSHOTPackages, pkg.getDependencies(), allPackagesMap); computeInvolvedReferences(involvedPackages, installedOrRequiredSNAPSHOTPackages, pkg.getConflicts(), allPackagesMap); for (PackageDependency pkgDep : pkg.getProvides()) { involvedPackages.add(pkgDep.getName()); } } }
protected void addIfSNAPSHOT(List<String> installedOrRequiredSNAPSHOTPackages, PackageDependency pd) { Version minVersion = pd.getVersionRange().getMinVersion(); Version maxVersion = pd.getVersionRange().getMaxVersion(); if (minVersion != null && minVersion.isSnapshot() || maxVersion != null && maxVersion.isSnapshot()) { installedOrRequiredSNAPSHOTPackages.add(pd.getName()); } }
protected void recurseResolve(Package pkg, DependencyResolution res, DependencySet depSet) { res.addPackage(pkg.getName(), pkg.getVersion()); for (PackageDependency dep : pkg.getDependencies()) { Version targetVersion = depSet.getTargetVersion(dep.getName()); if (!dep.getVersionRange().matchVersion(targetVersion)) { res.markAsFailed(dep.toString() + " doesn't match " + targetVersion); return; } else { if (!res.addPackage(dep.getName(), targetVersion)) { return; } } Package subPkg = pm.findPackageById(dep.getName() + "-" + targetVersion.toString()); recurseResolve(subPkg, res, depSet); } }
if (set.getTargetVersion(dep.getName()) != null) { if (!dep.getVersionRange().matchVersion( set.getTargetVersion(dep.getName()))) { for (DownloadablePackage pupdate : possibleUpdates) { for (PackageDependency newDep : pupdate.getDependencies()) { if (newDep.getName().equals(dep.getName())) { if (newDep.getVersionRange().matchVersion( set.getTargetVersion(dep.getName()))) { filtredPossibleUpdates.add(pupdate); if (set.getTargetVersion(dep.getName()) == null) { oneDependencyUpdates.put(dep.getName(), dep.getVersionRange()); } else { if (!dep.getVersionRange().matchVersion( set.getTargetVersion(dep.getName()))) { oneDependencyUpdates.put(dep.getName(), dep.getVersionRange()); } else {
PackageDependency[] provides = pkg.getProvides(); for (PackageDependency provide : provides) { if (involvedPackages.contains(provide.getName())) { involved = true; break;
for (PackageDependency pkgOptDep : optionalDependencies) { List<Version> installedVersions = findLocalPackageInstalledVersions(pkgOptDep.getName()); boolean hasAnInstalledMatch = false; for (Version version : installedVersions) {