Change-Id: I110b22c48032bbe3f46d105abe08d3aec750c42a
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
#
SET(LIBZYPP_MAJOR "14")
SET(LIBZYPP_COMPATMINOR "39")
#
SET(LIBZYPP_MAJOR "14")
SET(LIBZYPP_COMPATMINOR "39")
-SET(LIBZYPP_MINOR "41")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_MINOR "42")
+SET(LIBZYPP_PATCH "0")
-# LAST RELEASED: 14.41.1 (39)
+# LAST RELEASED: 14.42.0 (39)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
export LC_ALL=""
export LANG="en"
export LC_ALL=""
export LANG="en"
+
+function Edit()
+{
+ local FILE="$1"
+ vi "$FILE"
+ sed -i 's/ \+$//' "$FILE"
+}
EMAIL="$(git config --get user.email)"
EMAIL="$(git config --get user.email)"
echo
case "${RES:-e}" in
[eE]*)
echo
case "${RES:-e}" in
[eE]*)
eval $(getversion)
continue
;;
eval $(getversion)
continue
;;
RES=e
while [ "$RES" == "e" ]; do
RES=e
while [ "$RES" == "e" ]; do
echo
awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE
read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit [e]: ")" RES
echo
awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE
read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit [e]: ")" RES
-------------------------------------------------------------------
-------------------------------------------------------------------
+Tue Sep 29 18:40:05 CEST 2015 - ma@suse.de
+
+- ZYppCommitResult: add attemptToModify to indicate an attempt to
+ actually install/remove was made (bsc#946750, FATE#319467)
+- version 14.42.0 (39)
+
+-------------------------------------------------------------------
Fri Sep 25 10:54:20 CEST 2015 - ma@suse.de
- Avoid URL rewrite if probing local cache directories (bsc#946129)
Fri Sep 25 10:54:20 CEST 2015 - ma@suse.de
- Avoid URL rewrite if probing local cache directories (bsc#946129)
-------------------------------------------------------------------
Fri Jun 12 12:40:36 CEST 2015 - ma@suse.de
-------------------------------------------------------------------
Fri Jun 12 12:40:36 CEST 2015 - ma@suse.de
-- zypp.conf: Add config values for gpgcheck, repo_gpgcheck
+- zypp.conf: Add config values for gpgcheck, repo_gpgcheck
and pkg_gpgcheck. The default behavior 'gpgcheck=On' will
and pkg_gpgcheck. The default behavior 'gpgcheck=On' will
- automatically turn on the gpg signature check for packages
+ automatically turn on the gpg signature check for packages
downloaded from repository with unsigned metadata. If the
repo metadata are signed, a faster comparison via checksums
is done. By explicitly setting repo_gpgcheck or pkg_gpgcheck
you can enforce the signature check of repository metadata
downloaded from repository with unsigned metadata. If the
repo metadata are signed, a faster comparison via checksums
is done. By explicitly setting repo_gpgcheck or pkg_gpgcheck
you can enforce the signature check of repository metadata
- or downloaded packages to be always performed. Those defaults
- can be overwritten per repository. (FATE#314603)
+ or downloaded packages to be always performed. Those defaults
+ can be overwritten per repository. (FATE#314603)
- Downloader: Accept unsigned repository if pkgGpgCheck is ON.
- version 14.39.0 (39)
-------------------------------------------------------------------
Tue Jun 2 16:56:13 CEST 2015 - ma@suse.de
- Downloader: Accept unsigned repository if pkgGpgCheck is ON.
- version 14.39.0 (39)
-------------------------------------------------------------------
Tue Jun 2 16:56:13 CEST 2015 - ma@suse.de
-- Fix SSL client certificate authentication via URL option
+- Fix SSL client certificate authentication via URL option
ssl_clientcert/ssl_clientkey (bnc#932393)
- version 14.38.6 (30)
ssl_clientcert/ssl_clientkey (bnc#932393)
- version 14.38.6 (30)
-------------------------------------------------------------------
Wed Mar 11 09:22:46 CET 2015 - ma@suse.de
-------------------------------------------------------------------
Wed Mar 11 09:22:46 CET 2015 - ma@suse.de
-- New RepoVarExpand: Functor expanding repo variables in a
+- New RepoVarExpand: Functor expanding repo variables in a
string . Supports bash style default ${v:-w}' and alternate ${v:+w}
values (FATE#318354)
- Easy.h: Use __typeof__ rather than typeof in header
- Support repo variable replacement in service url
- Support repo variable replacement in gpg url
string . Supports bash style default ${v:-w}' and alternate ${v:+w}
values (FATE#318354)
- Easy.h: Use __typeof__ rather than typeof in header
- Support repo variable replacement in service url
- Support repo variable replacement in gpg url
-- Gettext.h: Fallback to ::gettext if accidentally included
+- Gettext.h: Fallback to ::gettext if accidentally included
outside libzypp
- version 14.37.0 (30)
outside libzypp
- version 14.37.0 (30)
-------------------------------------------------------------------
Mon Feb 9 16:05:38 CET 2015 - ma@suse.de
-------------------------------------------------------------------
Mon Feb 9 16:05:38 CET 2015 - ma@suse.de
-- Don't execute scripts in /tmp or /var/tmp, as they could be
+- Don't execute scripts in /tmp or /var/tmp, as they could be
mounted noexec for security reasons (bnc#915928)
- zypp/PublicKey.cc: Use GPG_BINARY from KeyRing
mounted noexec for security reasons (bnc#915928)
- zypp/PublicKey.cc: Use GPG_BINARY from KeyRing
-- Support $releasever_major/$releasever_minor repo variables
+- Support $releasever_major/$releasever_minor repo variables
(FATE#318354)
- version 14.36.0 (30)
(FATE#318354)
- version 14.36.0 (30)
Mon Jan 12 15:04:17 CET 2015 - ma@suse.de
- Properly propagate repo variables in service refresh.
Mon Jan 12 15:04:17 CET 2015 - ma@suse.de
- Properly propagate repo variables in service refresh.
-- Let $ZYPP_REPO_RELEASEVER overwrite $releasever in .repo files
+- Let $ZYPP_REPO_RELEASEVER overwrite $releasever in .repo files
(bnc#911658)
- Call pool_set_rootdir to properly check for file conflicts.
- Use xgettext --boost to support boost-format (%N%)
(bnc#911658)
- Call pool_set_rootdir to properly check for file conflicts.
- Use xgettext --boost to support boost-format (%N%)
+ FalseBool _attemptToModify;
sat::Transaction _transaction;
TransactionStepList _transactionStepList;
UpdateNotifications _updateMessages;
sat::Transaction _transaction;
TransactionStepList _transactionStepList;
UpdateNotifications _updateMessages;
const Pathname & ZYppCommitResult::root() const
{ return _pimpl->_root; }
const Pathname & ZYppCommitResult::root() const
{ return _pimpl->_root; }
+ bool ZYppCommitResult::attemptToModify() const
+ { return _pimpl->_attemptToModify; }
+
+ void ZYppCommitResult::attemptToModify( bool yesno_r )
+ { _pimpl->_attemptToModify = yesno_r; }
+
const sat::Transaction & ZYppCommitResult::transaction() const
{ return _pimpl->_transaction; }
const sat::Transaction & ZYppCommitResult::transaction() const
{ return _pimpl->_transaction; }
*/
const Pathname & root() const;
*/
const Pathname & root() const;
+ /** \c True if at least one attempt to actually install/remove packages was made.
+ * While this is false there should have been no serious modifications to the system.
+ * Mainly used to detect whether commit failed while preloading the caches or within
+ * the real action.
+ */
+ bool attemptToModify() const;
+
+ /** Set \ref attemptToModify */
+ void attemptToModify( bool yesno_r );
+
/** The full transaction list.
* The complete list including transaction steps that do not require
* any action (like obsoletes or non-package actions). Depending on
/** The full transaction list.
* The complete list including transaction steps that do not require
* any action (like obsoletes or non-package actions). Depending on
+ /** \relates DefaultIntegral \c true initialized \c bool */
+ typedef DefaultIntegral<bool,true> TrueBool;
+
+ /** \relates DefaultIntegral \c false initialized \c bool */
+ typedef DefaultIntegral<bool,false> FalseBool;
+
+ /** \relates DefaultIntegral \c zero initialized \c integral */
+ template<typename TIntegral>
+ using ZeroInit = DefaultIntegral<TIntegral,TIntegral(0)>;
+
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
// COMMIT internal
//
///////////////////////////////////////////////////////////////////
// COMMIT internal
//
///////////////////////////////////////////////////////////////////
+ namespace
+ {
+ struct NotifyAttemptToModify
+ {
+ NotifyAttemptToModify( ZYppCommitResult & result_r ) : _result( result_r ) {}
+
+ void operator()()
+ { if ( _guard ) { _result.attemptToModify( true ); _guard = false; } }
+
+ TrueBool _guard;
+ ZYppCommitResult & _result;
+ };
+ } // namespace
+
void TargetImpl::commit( const ZYppCommitPolicy & policy_r,
CommitPackageCache & packageCache_r,
ZYppCommitResult & result_r )
void TargetImpl::commit( const ZYppCommitPolicy & policy_r,
CommitPackageCache & packageCache_r,
ZYppCommitResult & result_r )
ZYppCommitResult::TransactionStepList & steps( result_r.rTransactionStepList() );
MIL << "TargetImpl::commit(<list>" << policy_r << ")" << steps.size() << endl;
ZYppCommitResult::TransactionStepList & steps( result_r.rTransactionStepList() );
MIL << "TargetImpl::commit(<list>" << policy_r << ")" << steps.size() << endl;
+ // Send notification once upon 1st call to rpm
+ NotifyAttemptToModify attemptToModify( result_r );
+
RpmPostTransCollector postTransCollector( _root );
std::vector<sat::Solvable> successfullyInstalledPackages;
TargetImpl::PoolItemList remaining;
RpmPostTransCollector postTransCollector( _root );
std::vector<sat::Solvable> successfullyInstalledPackages;
TargetImpl::PoolItemList remaining;
if (policy_r.rpmExcludeDocs()) flags |= rpm::RPMINST_EXCLUDEDOCS;
if (policy_r.rpmNoSignature()) flags |= rpm::RPMINST_NOSIGNATURE;
if (policy_r.rpmExcludeDocs()) flags |= rpm::RPMINST_EXCLUDEDOCS;
if (policy_r.rpmNoSignature()) flags |= rpm::RPMINST_NOSIGNATURE;
try
{
progress.tryLevel( target::rpm::InstallResolvableReport::RPM_NODEPS_FORCE );
try
{
progress.tryLevel( target::rpm::InstallResolvableReport::RPM_NODEPS_FORCE );
rpm::RpmInstFlags flags( policy_r.rpmInstFlags() & rpm::RPMINST_JUSTDB );
flags |= rpm::RPMINST_NODEPS;
if (policy_r.dryRun()) flags |= rpm::RPMINST_TEST;
rpm::RpmInstFlags flags( policy_r.rpmInstFlags() & rpm::RPMINST_JUSTDB );
flags |= rpm::RPMINST_NODEPS;
if (policy_r.dryRun()) flags |= rpm::RPMINST_TEST;
try
{
rpm().removePackage( p, flags );
try
{
rpm().removePackage( p, flags );