Resurrected /usr/bin/installation_sources, as a shell wrapper for
authorMartin Vidner <mvidner@suse.cz>
Wed, 15 Nov 2006 15:48:32 +0000 (15:48 +0000)
committerMartin Vidner <mvidner@suse.cz>
Wed, 15 Nov 2006 15:48:32 +0000 (15:48 +0000)
zypper (#163737).

VERSION
package/zypper.changes
src/Makefile.am
src/installation_sources [new file with mode: 0644]
src/installation_sources.cc [deleted file]
zypper.spec.in

diff --git a/VERSION b/VERSION
index 8e987c0..600294e 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -10,5 +10,5 @@ dnl   phase)
 dnl ==================================================
 m4_define([ZYPPER_MAJOR],       [0])
 m4_define([ZYPPER_MINOR],       [6])
-m4_define([ZYPPER_PATCH],       [10])
+m4_define([ZYPPER_PATCH],       [11])
 dnl ==================================================
index 72ac4df..2fdea93 100644 (file)
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Wed Nov 15 16:48:13 CET 2006 - mvidner@suse.cz
+
+- Resurrected /usr/bin/installation_sources, as a shell wrapper for
+  zypper (#163737).
+- 0.6.11
+
+-------------------------------------------------------------------
 Wed Nov 15 14:40:11 CET 2006 - mvidner@suse.cz
 
 - service-add: added options --type (especially for Plaindir,
index 62d741f..43b79b8 100644 (file)
@@ -2,6 +2,8 @@
 ## ##################################################
 
 bin_PROGRAMS = zypper
+bin_SCRIPTS = installation_sources
+
 if BUILD_CHECKPATCHES
 sbin_PROGRAMS = zypp-checkpatches zypp-checkpatches-wrapper
 endif
diff --git a/src/installation_sources b/src/installation_sources
new file mode 100644 (file)
index 0000000..254ec39
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# this is a compatibility replacement for a C++ program
+# that was in yast2-packagemanager.rpm
+
+ZYPPER=zypper
+if [ "x$1" = "x-s" ]; then
+   exec $ZYPPER service-list
+fi
+
+if [ "x$1" = "x-e" ]; then
+   shift # do nothing, enabled is default
+elif [ "x$1" = "x-d" ]; then
+   ENABLED=--disable
+   shift
+fi
+
+if [ "x$1" = "x-a" -a -n "$2" ]; then
+   exec $ZYPPER service-add $ENABLED "$2"
+fi
+
+cat >&2 <<EOF
+Usage:
+  installation_sources [-e|-d] -a url   Add source at given URL.
+    -e  Enable source. This is the default.
+    -d  Disable source.
+  installation_sources -s       Show all available sources.
+EOF
+exit 1
diff --git a/src/installation_sources.cc b/src/installation_sources.cc
deleted file mode 100644 (file)
index eb16a87..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-/**
- * installation_sources
- */
-
-#include <getopt.h>
-#include <time.h>
-
-#include <iomanip>
-#include <list>
-#include <string>
-
-#include <boost/format.hpp>
-
-#include <zypp/ZYpp.h>
-#include <zypp/ZYppFactory.h>
-#include <zypp/SourceFactory.h>
-#include <zypp/SourceManager.h>
-#include <zypp/KeyRing.h>
-#include <zypp/Digest.h>
-#include <zypp/base/LogControl.h>
-#include <zypp/base/Logger.h>
-#include <zypp/base/Exception.h>
-
-#undef ZYPP_BASE_LOGGER_LOGGROUP
-#define ZYPP_BASE_LOGGER_LOGGROUP "installation_sources"
-
-using namespace std;
-using namespace zypp;
-using boost::format;
-
-bool callbackAnswer = false;
-
-static
-bool readCallbackAnswer()
-{
-  cerr << "> " << (callbackAnswer? "yes": "no") << endl;
-  return callbackAnswer;
-}
-
-static
-bool askIt (const boost::format & msg)
-{
-  MIL << msg << endl;
-  cerr << msg << endl;
-  return readCallbackAnswer ();
-}
-
-///////////////////////////////////////////////////////////////////
-// KeyRingReceive
-///////////////////////////////////////////////////////////////////
-struct KeyRingReceive : public zypp::callback::ReceiveReport<zypp::KeyRingReport>
-{
-  virtual bool askUserToAcceptUnsignedFile( const std::string &file )
-    {
-      return askIt (
-       format(_("File %s is not signed.\n"
-                "Use it anyway?"))
-       % file
-       );
-    }
-
-  virtual bool askUserToAcceptUnknownKey( const std::string &file, const std::string &keyid, const std::string &keyname, const std::string &fingerprint )
-    {
-      return askIt (
-       format(_("File %s is signed with an unknown key:\n"
-                "%s|%s|%s\n"
-                "Use the file anyway?"))
-       % file % keyid % keyname % fingerprint
-       );
-    }
-
-  virtual bool askUserToTrustKey( const std::string &keyid, const std::string &keyname, const std::string &fingerprint )
-    {
-      return askIt (
-       format(_("Untrusted key found:\n"
-                "%s|%s|%s\n"
-                "Trust key?"))
-       % keyid % keyname % fingerprint
-       );
-    }
-
-  virtual bool askUserToAcceptVerificationFailed( const std::string &file, const std::string &keyid, const std::string &keyname, const std::string &fingerprint )
-    {
-      return askIt (
-       format(_("File %s failed integrity check with the folowing key:\n"
-                "%s|%s|%s\n"
-                "Use the file anyway?"))
-       % file % keyid % keyname % fingerprint
-       );
-    }
-};
-
-
-struct DigestReceive : public zypp::callback::ReceiveReport<zypp::DigestReport>
-{
-  virtual bool askUserToAcceptNoDigest( const zypp::Pathname &file )
-    {
-      return askIt (
-       format(_("File %s does not have a checksum.\n"
-                "Use the file anyway?"))
-       % file
-       );
-    }
-
-  virtual bool askUserToAccepUnknownDigest( const Pathname &file, const std::string &name )
-    {
-      return askIt (
-       format(_("File %s has an unknown checksum %s.\n"
-                "Use the file anyway?"))
-       % file % name
-       );
-    }
-
-  virtual bool askUserToAcceptWrongDigest( const Pathname &file, const std::string &requested, const std::string &found )
-    {
-      return askIt (
-       format(_("File %s has an invalid checksum.\n"
-                "Expected %s, found %s\n"
-                "Use the file anyway?"))
-       % file % requested % found
-       );
-    }
-};
-
-static
-std::string timestamp ()
-{
-    time_t t = time(NULL);
-    struct tm * tmp = localtime(&t);
-
-    if (tmp == NULL) {
-       return "";
-    }
-
-    char outstr[50];
-    if (strftime(outstr, sizeof(outstr), "%Y%m%d-%H%M%S", tmp) == 0) {
-       return "";
-    }
-    return outstr;
-}
-
-void usage()
-{
-  // TODO: -r remove
-  cout << "Usage:" << endl
-       << "  installation_sources [options] -a url   Add source at given URL." << endl
-       << "    -n name Name the source." << endl
-       << "    -e  Enable source. This is the default." << endl
-       << "    -d  Disable source." << endl
-       << "    -f  Autorefresh source." << endl
-       << "    -Y  Answer Yes to all checksum and signature questions." << endl
-       << "  installation_sources -s       Show all available sources." << endl;
-  exit( 1 );
-}
-
-/******************************************************************
- **
- **
- **    FUNCTION NAME : main
- **    FUNCTION TYPE : int
- **
- **    DESCRIPTION :
- */
-int main( int argc, char **argv )
-{
-  const char *logfile = getenv("ZYPP_LOGFILE");
-  if (logfile == NULL)
-    logfile = "/var/log/YaST2/y2log";
-  zypp::base::LogControl::instance().logfile( logfile );
-
-  MIL << "START" << endl;
-
-  const char *urlStr = 0;
-  string alias;
-
-  bool showSources  = false;
-  bool addSource    = false;
-  bool enableSource = true; // -e per default
-  bool autoRefresh  = false;
-
-  int c;
-  while( 1 ) {
-    c = getopt( argc, argv, "desa:fYn:" );
-    if ( c < 0 ) break;
-
-    switch ( c ) {
-       case 's':
-         showSources = true;
-         break;
-       case 'a':
-         addSource = true;
-         urlStr = optarg;
-         break;
-       case 'n':
-         alias = optarg;
-         break;
-       case 'd':
-         enableSource = false;
-         break;
-       case 'e':
-         enableSource = true;
-         break;
-       case 'f':
-         autoRefresh = true;
-         break;
-       case 'Y':
-         callbackAnswer = true;
-         break;
-       default:
-         cerr << "Error parsing command line." << endl;
-       case '?':
-       case 'h':
-         usage();
-    }
-  }
-
-  if ( showSources && addSource ) usage();
-  if ( !showSources && !addSource ) usage();
-
-  try {
-
-
-    ZYpp::Ptr Z = NULL;
-    try {
-      Z = getZYpp();
-    }
-    catch ( const Exception & excpt_r ) {
-      ZYPP_CAUGHT (excpt_r);
-      cerr << "A transaction is already in progress." << endl;
-      exit(1);
-    }
-
-    KeyRingReceive keyring_rcv;
-    keyring_rcv.connect ();
-    DigestReceive digest_rcv;
-    digest_rcv.connect ();
-
-    SourceManager_Ptr manager = SourceManager::sourceManager();
-    manager->restore ("/", true /*use_cache*/);
-
-    list<SourceManager::SourceId> sourceIds;
-
-    if ( addSource ) {
-      Url url;
-      try {
-       url = Url( urlStr );
-      }
-      catch ( const Exception & excpt_r ) {
-       ZYPP_CAUGHT( excpt_r );
-       cerr << "URL is invalid." << endl;
-       cerr << excpt_r.asUserString() << endl;
-       exit( 1 );
-      }
-
-      Pathname path;
-      Pathname cache;
-      bool is_base = false;
-      if (alias.empty ())
-       alias = timestamp ();
-      // more products?
-      // try
-      Source_Ref source = SourceFactory().createFrom( url, path, alias, cache, is_base );
-      SourceManager::SourceId sourceId = manager->addSource( source );
-
-      if (enableSource)
-       source.enable();
-      else
-       source.disable();
-      source.setAutorefresh (autoRefresh);
-
-      sourceIds.push_back( sourceId );
-      cout << "Added Installation Sources:" << endl;
-    }
-
-    if ( showSources ) {
-      sourceIds = manager->allSources ();
-      cout << "Installation Sources:" << endl;
-    }
-
-    list<SourceManager::SourceId>::const_iterator it;
-    for( it = sourceIds.begin(); it != sourceIds.end(); ++it ) {
-      Source_Ref source = manager->findSource(*it);
-      cout << ( source.enabled() ? "[x]" : "[ ]" );
-      cout << ( source.autorefresh() ? "* " : "  " );
-      cout << source.alias() << " (" << source.url() << ")" << endl;
-    }
-    if ( addSource ) {
-      manager->store( "/", true /*metadata_cache*/ );
-    }
-
-    digest_rcv.disconnect ();
-    keyring_rcv.disconnect ();
-  }
-  catch ( const Exception & excpt_r ) {
-    ZYPP_CAUGHT( excpt_r );
-    cerr << excpt_r.asUserString() << endl;
-    exit( 1 );
-  }
-  catch ( const exception & excpt_r ) {
-    cerr << excpt_r.what() << endl;
-    exit( 1 );
-  }
-
-  MIL << "END" << endl;
-  return 0;
-}
index 61909eb..99e2db9 100644 (file)
@@ -78,6 +78,7 @@ make install DESTDIR=$RPM_BUILD_ROOT
 %defattr(-,root,root)
 %{_sysconfdir}/logrotate.d/zypper.lr
 %{_bindir}/zypper
+%{_bindir}/installation_sources
 %if %suse_version > 1010
 %{_sbindir}/zypp-checkpatches
 %verify(not mode) %attr (755,root,root) %{_sbindir}/zypp-checkpatches-wrapper