0.6.5
-- ignore upgrades for pinned packages
-- warn when trying to do a system upgrade
+* ignore upgrades to pinned packages and warn about install/remove
+* warn when trying to do a system upgrade
- promote to extras-testing
}
readBlacklist();
+ readPinnedPackages();
communicateStatusToUi(true, "Operation finished", "Package data read");
iCanCancel = false;
return f.exists();
}
+void AAptInterface::readPinnedPackages()
+{
+ QFile f(KAptPreferencesFile);
+ if( !f.exists() )
+ return;
+
+ if( f.open(QIODevice::ReadOnly | QIODevice::Text ) )
+ {
+ qDebug() << "apt preferences exist: reading pinned packages";
+ int pinned_packages = 0;
+ while( !f.atEnd() )
+ {
+ QString line = f.readLine().trimmed();
+ if( line.startsWith("Package:") ) {
+ pinned_packages++;
+ QString pkg = line.mid(8).trimmed();
+ Package* pkg_i = iPackagesInstalled.value(pkg,0);
+ if( pkg_i ) {
+ pkg_i->setPinned(true);
+ }
+ Package* pkg_a = iPackagesAvailable.value(pkg,0);
+ if( pkg_a ) {
+ pkg_a->setPinned(true);
+ }
+ }
+ }
+ f.close();
+ qDebug() << "read" << pinned_packages << "pinned packages";
+ }
+}
+
bool AAptInterface::loadInstallFiles(QStringList files_)
{
qDebug() << files_;
void readBlacklist();
void writeDateCache();
void readDateCache();
+ void readPinnedPackages();
private slots:
void errorAptGetUpdate(QProcess::ProcessError error);
if( inst.count()>0 )
pkglist += QString("Total download size: %L1 kB<br>").arg(total_dl_size);
bool mismatch = false;
- bool warn_system_package = false;
+ bool warn_system_package_remove = false;
+ bool warn_system_package_install = false;
if( remv.count()>0 ) {
pkglist += "<br><b><u>REMOVE:</u></b><br><font size=\"-1\">";
}
#ifdef Q_WS_MAEMO_5
if( pkg && pkg->maemoDisplayName()=="Maemo 5" ) {
- warn_system_package = true;
+ warn_system_package_remove = true;
}
#endif
if( remvver.count()>i ) {
}
#ifdef Q_WS_MAEMO_5
if( pkg && pkg->maemoDisplayName()=="Maemo 5" ) {
- warn_system_package = true;
+ warn_system_package_install = true;
}
#endif
if( instver.count()>i ) {
b.setText("Warning","Blacklisted package(s) will be installed");
b.exec();
}
- if( warn_system_package ) {
+ if( warn_system_package_remove ) {
ConfirmDialog s(false, this);
- s.setText("Warning","You are trying to perform an operation on a critical system package. This is an operation which has not been tested and " \
- "it is unknown whether it will succeed or result in a horrible failure. You have been warned.");
+ s.setText("Warning","You are about to remove a critical system package.");
+ s.exec();
+ }
+ if( warn_system_package_install ) {
+ ConfirmDialog s(false, this);
+ s.setText("Warning","You are trying to perform an install/upgrade operation on a critical system package. Doing a system upgrade with " \
+ "Faster Application Manager has not been tested and it could result in a horrible failure. You have been warned.");
s.exec();
}
bool Package::isUpgradeable()
{
- if( iSection=="user/hidden" )
+ if( iSection=="user/hidden" || iPinned )
return false;
if( iIsInstalled )
op = Package::PkgOpNone;
}
+ if( pkg->isPinned() && op != Package::PkgOpNone ) {
+ ConfirmDialog d(true, this);
+ d.setText("Warning","Package has been pinned in apt preferences. Operation might not go as expected. Mark anyway?");
+ if( !d.exec() )
+ op = Package::PkgOpNone;
+ }
+
pkg->setMarkedForOperation( op );
item->setData( UserRoleMarked, (int)op );
updateLabel();