Author: mlandres Date: Tue Feb 5 22:48:30 2008 New Revision: 8483 URL: http://svn.opensuse.org/viewcvs/zypp?rev=8483&view=rev Log: avoid exception if missing cookiefile Modified: branches/tmp/ma/jump_sat/libzypp/zypp/RepoManager.cc branches/tmp/ma/jump_sat/libzypp/zypp/target/TargetImpl.cc Modified: branches/tmp/ma/jump_sat/libzypp/zypp/RepoManager.cc URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/RepoManager.cc?rev=8483&r1=8482&r2=8483&view=diff ============================================================================== --- branches/tmp/ma/jump_sat/libzypp/zypp/RepoManager.cc (original) +++ branches/tmp/ma/jump_sat/libzypp/zypp/RepoManager.cc Tue Feb 5 22:48:30 2008 @@ -745,7 +745,7 @@ // Take care we unlink the solvfile on exception ManagedFile guard( solvfile, filesystem::unlink ); - string cmd( str::form( "repo2solv.sh \"%s\" > '%s'", rawpath.c_str(), solvfile.c_str() ) ); + string cmd( str::form( "/usr/bin/repo2solv.sh \"%s\" > '%s'", rawpath.c_str(), solvfile.c_str() ) ); ExternalProgram prog( cmd, ExternalProgram::Stderr_To_Stdout ); for ( string output( prog.receiveLine() ); output.length(); output = prog.receiveLine() ) { MIL << " " << output; Modified: branches/tmp/ma/jump_sat/libzypp/zypp/target/TargetImpl.cc URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/target/TargetImpl.cc?rev=8483&r1=8482&r2=8483&view=diff ============================================================================== --- branches/tmp/ma/jump_sat/libzypp/zypp/target/TargetImpl.cc (original) +++ branches/tmp/ma/jump_sat/libzypp/zypp/target/TargetImpl.cc Tue Feb 5 22:48:30 2008 @@ -294,7 +294,7 @@ void TargetImpl::load() { Pathname rpmsolv = _root + ZConfig::instance().repoCachePath() + "_rpm.solv"; - Pathname rpmsolvcookie = rpmsolv.extend(".cookie"); + Pathname rpmsolvcookie = _root + ZConfig::instance().repoCachePath() + "_rpm.cookie"; bool build_rpm_solv = true; // lets see if the rpm solv cache exists @@ -302,19 +302,29 @@ if ( PathInfo(rpmsolv).isExist() ) { // see the status of the cache - MIL << "Read cookie: " << rpmsolvcookie << endl; - RepoStatus status = RepoStatus::fromCookieFile(rpmsolvcookie); - MIL << "Read cookie: " << rpmsolvcookie << " done" << endl; - // now compare it with the rpm database - if ( status.checksum() == rpmstatus.checksum() ) - build_rpm_solv = false; + PathInfo cookie( rpmsolvcookie ); + MIL << "Read cookie: " << cookie << endl; + if ( cookie.isExist() ) + { + RepoStatus status = RepoStatus::fromCookieFile(rpmsolvcookie); + // now compare it with the rpm database + if ( status.checksum() == rpmstatus.checksum() ) + build_rpm_solv = false; + MIL << "Read cookie: " << rpmsolvcookie << " says: " + << (build_rpm_solv ? "outdated" : "uptodate") << endl; + } } if ( build_rpm_solv ) { MIL << "Executing solv converter" << endl; + // Take care we unlink the solvfile on exception + ManagedFile guard( rpmsolv, filesystem::unlink ); + ManagedFile guardcookie( rpmsolvcookie, filesystem::unlink ); + +#warning FIXME add root to rpmdb2solv // FIXME add root to rpmdb2solv - string cmd( str::form( "/usr/bin/rpmdb2solv > %s", rpmsolv.asString().c_str() ) ); + string cmd( str::form( "/usr/bin/rpmdb2solv > '%s'", rpmsolv.c_str() ) ); ExternalProgram prog( cmd, ExternalProgram::Stderr_To_Stdout ); for ( string output( prog.receiveLine() ); output.length(); output = prog.receiveLine() ) { MIL << " " << output; @@ -322,7 +332,12 @@ int ret = prog.close(); if ( ret != 0 ) ZYPP_THROW(Exception("Failed to cache rpm database")); + rpmstatus.saveToCookieFile(rpmsolvcookie); + + // We keep it. + guard.resetDispose(); + guardcookie.resetDispose(); } //now add the repos to the pool -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org