Ejemplo n.º 1
0
bool
ResultWindow::_AddPackages(BGroupLayout* packagesGroup,
	const PackageList& packages, const PackageSet& ignorePackages, bool install)
{
	bool packagesAdded = false;

	for (int32 i = 0; BSolverPackage* package = packages.ItemAt(i);
		i++) {
		if (ignorePackages.find(package) != ignorePackages.end())
			continue;

		BString text;
		if (install) {
			text.SetToFormat("install package %s from repository %s\n",
				package->Info().FileName().String(),
				package->Repository()->Name().String());
		} else {
			text.SetToFormat("uninstall package %s\n",
				package->VersionedName().String());
		}

		BStringView* packageView = new BStringView(NULL, text);
		packagesGroup->AddView(packageView);
		packageView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));

		packagesAdded = true;
	}

	return packagesAdded;
}
Ejemplo n.º 2
0
static set<string> getSourceConfigNames(PackageSet& packages, Package* package)
{
    set<string> sources;
    
    if (package->getType() == FILE_ESSENCE_DESC_TYPE)
    {
        sources.insert(dynamic_cast<SourcePackage*>(package)->sourceConfigName);
        return sources;
    }
    
    vector<Track*>::const_iterator iter1;
    for (iter1 = package->tracks.begin(); iter1 != package->tracks.end(); iter1++)
    {
        Track* track = *iter1;

        SourcePackage dummy;
        dummy.uid = track->sourceClip->sourcePackageUID;
        PackageSet::iterator result = packages.find(&dummy);
        if (result != packages.end())
        {
            Package* referencedPackage = *result;
            
            set<string> refSources = getSourceConfigNames(packages, referencedPackage);
            sources.insert(refSources.begin(), refSources.end());
        }
    }
    
    return sources;
}
Ejemplo n.º 3
0
status_t
PackageManager::CommitTransaction(Transaction& transaction,
	BCommitTransactionResult& _result)
{
	Volume* volume = fRoot->GetVolume(transaction.Repository().Location());
	if (volume == NULL)
		return B_BAD_VALUE;

	// Get the packages that have already been added to/removed from the
	// packages directory and thus need to be handled specially by
	// Volume::CommitTransaction().
	PackageSet packagesAlreadyAdded;
	PackageSet packagesAlreadyRemoved;
	if (volume == fVolume) {
		const PackageSet& packagesToActivate = volume->PackagesToBeActivated();
		for (PackageSet::const_iterator it = packagesToActivate.begin();
			it != packagesToActivate.end(); ++it) {
			Package* package = *it;
			if (fPackagesAddedByUser.find(_SolverPackageFor(package))
					!= fPackagesAddedByUser.end()) {
				packagesAlreadyAdded.insert(package);
			}
		}

		const PackageSet& packagesToDeactivate
			= volume->PackagesToBeDeactivated();
		for (PackageSet::const_iterator it = packagesToDeactivate.begin();
			it != packagesToDeactivate.end(); ++it) {
			Package* package = *it;
			if (fPackagesRemovedByUser.find(_SolverPackageFor(package))
					!= fPackagesRemovedByUser.end()) {
				packagesAlreadyRemoved.insert(package);
			}
		}
	}

	volume->CommitTransaction(transaction.ActivationTransaction(),
		packagesAlreadyAdded, packagesAlreadyRemoved, _result);
	return B_OK;
}
Ejemplo n.º 4
0
bool BaseFileManager::registerPackage(Common::FSNode file, const Common::String &filename, bool searchSignature) {
	PackageSet *pack = new PackageSet(file, filename, searchSignature);
	_packages.add(file.getName(), pack, pack->getPriority() , true);

	return STATUS_OK;
}