Author: mlandres Date: Mon Nov 5 16:47:18 2007 New Revision: 7744 URL: http://svn.opensuse.org/viewcvs/zypp?rev=7744&view=rev Log: Dont mark failed patch scripts as installed. Modified: trunk/libzypp/VERSION.cmake trunk/libzypp/package/libzypp.changes trunk/libzypp/zypp/target/TargetImpl.cc trunk/libzypp/zypp/target/store/XMLFilesBackend.cc Modified: trunk/libzypp/VERSION.cmake URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/VERSION.cmake?rev=7744&r1=7743&r2=7744&view=diff ============================================================================== --- trunk/libzypp/VERSION.cmake (original) +++ trunk/libzypp/VERSION.cmake Mon Nov 5 16:47:18 2007 @@ -47,4 +47,4 @@ SET(LIBZYPP_MAJOR "4") SET(LIBZYPP_MINOR "1") SET(LIBZYPP_COMPATMINOR "1") -SET(LIBZYPP_PATCH "1") +SET(LIBZYPP_PATCH "2") Modified: trunk/libzypp/package/libzypp.changes URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/package/libzypp.changes?rev=7744&r1=7743&r2=7744&view=diff ============================================================================== --- trunk/libzypp/package/libzypp.changes (original) +++ trunk/libzypp/package/libzypp.changes Mon Nov 5 16:47:18 2007 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Mon Nov 5 15:22:33 CET 2007 - ma@suse.de + +- Don't mark failed patch scripts as installed. (#327523) +- version 4.1.2 +- revision 7744 + +------------------------------------------------------------------- Fri Oct 26 15:12:24 CEST 2007 - aschnell@suse.de - fixed retrieval of epoch from rpmdb (bug #246680) Modified: trunk/libzypp/zypp/target/TargetImpl.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/target/TargetImpl.cc?rev=7744&r1=7743&r2=7744&view=diff ============================================================================== --- trunk/libzypp/zypp/target/TargetImpl.cc (original) +++ trunk/libzypp/zypp/target/TargetImpl.cc Mon Nov 5 16:47:18 2007 @@ -65,7 +65,8 @@ { ///////////////////////////////////////////////////////////////// void ExecuteScriptHelper( repo::RepoMediaAccess & access_r, Script::constPtr script_r, - bool do_r ) + bool do_r, + storage::PersistentStorage & storage_r ) { MIL << "Execute script " << script_r << endl; if ( ! script_r ) @@ -98,7 +99,7 @@ ZYPP_THROW(Exception(err.str())); } - filesystem::chmod( localfile, S_IRUSR|S_IXUSR ); // "r-x------" + filesystem::chmod( localfile, S_IRUSR|S_IWUSR|S_IXUSR ); // "rwx------" ExternalProgram prog( localfile->asString(), ExternalProgram::Stderr_To_Stdout, false, -1, true ); for ( std::string output = prog.receiveLine(); output.length(); output = prog.receiveLine() ) { @@ -112,24 +113,31 @@ int exitCode = prog.close(); if ( exitCode != 0 ) { + storage_r.setObjectFlag( script_r, "SCRIPT_EXEC_FAILED" ); std::ostringstream err; err << "Script failed with exit code " << exitCode; report->problem( err.str() ); ZYPP_THROW(Exception(err.str())); } + else if ( storage_r.doesObjectHasFlag( script_r, "SCRIPT_EXEC_FAILED" ) ) + { + storage_r.removeObjectFlag( script_r, "SCRIPT_EXEC_FAILED" ); + } report->finish(); return; } - inline void ExecuteDoScript( repo::RepoMediaAccess & access_r, const Script::constPtr & script_r ) + inline void ExecuteDoScript( repo::RepoMediaAccess & access_r, const Script::constPtr & script_r, + storage::PersistentStorage & storage_r ) { - ExecuteScriptHelper( access_r, script_r, true ); + ExecuteScriptHelper( access_r, script_r, true, storage_r ); } - inline void ExecuteUndoScript( repo::RepoMediaAccess & access_r, const Script::constPtr & script_r ) + inline void ExecuteUndoScript( repo::RepoMediaAccess & access_r, const Script::constPtr & script_r, + storage::PersistentStorage & storage_r ) { - ExecuteScriptHelper( access_r, script_r, false ); + ExecuteScriptHelper( access_r, script_r, false, storage_r ); } ///////////////////////////////////////////////////////////////// } // namespace @@ -619,7 +627,7 @@ } else if (isKind<Script>(it->resolvable())) { - ExecuteDoScript( access, asKind<Script>(it->resolvable()) ); + ExecuteDoScript( access, asKind<Script>(it->resolvable()), _storage ); } else if (!isKind<Atom>(it->resolvable())) // atoms are re-created from the patch data, no need to save them { @@ -662,7 +670,7 @@ } else if (isKind<Script>(it->resolvable())) { - ExecuteUndoScript( access, asKind<Script>(it->resolvable()) ); + ExecuteUndoScript( access, asKind<Script>(it->resolvable()), _storage ); } else { Modified: trunk/libzypp/zypp/target/store/XMLFilesBackend.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/target/store/XMLFilesBackend.cc?rev=7744&r1=7743&r2=7744&view=diff ============================================================================== --- trunk/libzypp/zypp/target/store/XMLFilesBackend.cc (original) +++ trunk/libzypp/zypp/target/store/XMLFilesBackend.cc Mon Nov 5 16:47:18 2007 @@ -174,7 +174,7 @@ d->kinds_flags.insert(ResTraitszypp::Package::kind); d->kinds_flags.insert(ResTraitszypp::Patch::kind); //d->kinds.insert(ResTraitszypp::Message::kind); - //d->kinds.insert(ResTraitszypp::Script::kind); + d->kinds_flags.insert(ResTraitszypp::Script::kind); d->kinds_flags.insert(ResTraitszypp::Selection::kind); d->kinds_flags.insert(ResTraitszypp::Product::kind); d->kinds_flags.insert(ResTraitszypp::Pattern::kind); @@ -832,7 +832,12 @@ { XMLPatchScriptData_Ptr script_data = dynamic_pointer_cast<XMLPatchScriptData>(*it); atom = createScript(*script_data); - impl->_atoms.push_back(atom); + if ( doesObjectHasFlag( atom, "SCRIPT_EXEC_FAILED" ) ) + { + WAR << "Patch script not yet successfully executed: " << atom << endl; + } else { + impl->_atoms.push_back(atom); + } break; } default: -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org