plcsh is a python source file too
authorparmentelat <thierry.parmentelat@inria.fr>
Fri, 7 Dec 2018 19:48:58 +0000 (20:48 +0100)
committerparmentelat <thierry.parmentelat@inria.fr>
Fri, 7 Dec 2018 19:48:58 +0000 (20:48 +0100)
rpm requirements need to point at python3-*

plcapi.spec
plcsh

index 5d95e00..48d8ff7 100644 (file)
@@ -27,33 +27,24 @@ Requires: httpd mod_ssl
 # Requires: Django
 Requires: postgresql >= 8.2, postgresql-server >= 8.2
 # We use set everywhere
-Requires: python >= 2.7
-Requires: postgresql-python
-Requires: python-psycopg2
-Requires: python-pycurl
+Requires: python3
+Requires: python3-postgresql
+Requires: python3-psycopg2
+Requires: python3-pycurl
 # used in GPG.py as a replacement to PyXML's Canonicalize
-Requires: python-lxml
-# Fedora had support for SOAPpy up to fedora20
-# https://lists.fedoraproject.org/pipermail/devel/2014-June/199730.html
-# https://lists.fedoraproject.org/pipermail/devel/2014-June/200379.html
-%if ("%{distro}" == "Fedora" && %{distrorelease} <= 20) || ("%{distro}" != "Fedora")
-Requires: SOAPpy
-%endif
-#Requires: python-simplejson
+Requires: python3-lxml
+#Requires: python3-simplejson
 # for the RebootNodeWithPCU method
 Requires: pcucontrol >= 1.0-6
-# for OMF integration
+# for OMF integration - xxx aspects needs porting too
 Requires: pyaspects >= 0.4
 # again, these are no longer available in f29
 # Requires: python-twisted-words
 # Requires: python-twisted-web
 # ldap
-Requires: python-ldap
+Requires: python3-ldap
 # for memcache
-Requires: memcached python-memcached
-### avoid having yum complain about updates, as stuff is moving around
-# plc.d/api
-Conflicts: MyPLC <= 4.3
+Requires: memcached python3-memcached
 
 ####################
 # obsolete
@@ -91,8 +82,8 @@ through Apache mod_python.
 # python-pycurl and python-psycopg2 avail. from fedora 5
 # we used to ship our own version of psycopg2 and pycurl, for fedora4
 # starting with 4.3, support for these two modules is taken out
-# 
-# Build __init__.py metafiles and PHP API. 
+#
+# Build __init__.py metafiles and PHP API.
 %{__make} %{?_smp_mflags}
 %{__make} -C wsdl
 
@@ -604,18 +595,18 @@ rm -rf $RPM_BUILD_ROOT
 
 * Fri May 09 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-7
 - no more doc packaged outside of myplc-docs - doc/ cleaned up
-- enhancements in doc on filters 
+- enhancements in doc on filters
 - bootcd-aware GetBootMedium merged from onelab
 
 * Thu May 08 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-6
 - checkpoint while the new myplc-docs package is underway
 - bugfix: GetSlivers & conf files
-- doc: removed target files 
+- doc: removed target files
 
 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - PLCAPI-4.2-5
 - Removed conditions on the persons, site, and nodes indexes.  previsouly only
 - the non-deleted fields were index, resulting in massivly slow queries.
-- 
+-
 
 * Wed Mar 26 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-3 PLCAPI-4.2-4
 - plcsh: better handling of options when running as a shell script
@@ -623,7 +614,7 @@ rm -rf $RPM_BUILD_ROOT
 - tweaks for accepted args in GetPCUTypes and BootNotifyOwners
 
 * Thu Feb 14 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-2 PLCAPI-4.2-3
-- GetBootMedium support for build.sh full options, incl. serial & console_spec 
+- GetBootMedium support for build.sh full options, incl. serial & console_spec
 - GetBootMedium simpler, cleaner and safer use of tmpdirs in (dated from bootcustom.sh)
 
 * Fri Feb 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-1 PLCAPI-4.2-2
@@ -634,7 +625,7 @@ rm -rf $RPM_BUILD_ROOT
 - plcsh adds its own path to sys.path
 - fix so GetNodes can be called from a Node
 
-* Fri Oct 27 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 
+* Fri Oct 27 2006 Mark Huang <mlhuang@CS.Princeton.EDU> -
 - Initial build.
 
 %define module_current_branch 4.3
diff --git a/plcsh b/plcsh
index 7bc3abe..ef434ac 100755 (executable)
--- a/plcsh
+++ b/plcsh
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 #
 # Interactive shell for testing PLCAPI
 #
@@ -47,7 +47,7 @@ if options.user is not None and options.password is None:
     try:
         options.password = getpass()
     except (EOFError, KeyboardInterrupt):
-        print
+        print()
         sys.exit(0)
 
 # Initialize a single global instance (scripts may re-initialize
@@ -63,16 +63,16 @@ try:
     auth = shell.auth
     api = shell.api
     config = shell.config
-except Exception, err:
-    print "Error:", err
-    print
+except Exception as err:
+    print("Error:", err)
+    print()
     parser.print_help()
     sys.exit(1)
 
 # If called by a script 
 if args:
     if not os.path.exists(args[0]):
-        print 'File %s not found'%args[0]
+        print('File %s not found'%args[0])
         parser.print_help()
         sys.exit(1)
     else:
@@ -85,32 +85,32 @@ if args:
         # Add of script to sys.path 
         path = os.path.dirname(os.path.abspath(script))
         sys.path.append(path)
-        execfile(script)
+        exec(compile(open(script).read(), script, 'exec'))
 
 # Otherwise, run an interactive shell environment
 else:
     if shell.server is None:
-        print "PlanetLab Central Direct API Access"
+        print("PlanetLab Central Direct API Access")
         prompt = ""
     elif shell.auth['AuthMethod'] == "anonymous":
         prompt = "[anonymous]"
-        print "Connected anonymously"
+        print("Connected anonymously")
     elif shell.auth['AuthMethod'] == "session":
         # XXX No way to tell node and user sessions apart from the
         # client point of view.
         prompt = "[%s]" % gethostname()
-        print "%s connected using session authentication" % gethostname()
+        print("%s connected using session authentication" % gethostname())
     else:
         prompt = "[%s]" % shell.auth['Username']
-        print "%s connected using %s authentication" % \
-              (shell.auth['Username'], shell.auth['AuthMethod'])
+        print("%s connected using %s authentication" % \
+              (shell.auth['Username'], shell.auth['AuthMethod']))
 
     # Readline and tab completion support
     import atexit
     import readline
     import rlcompleter
 
-    print 'Type "system.listMethods()" or "help(method)" for more information.'
+    print('Type "system.listMethods()" or "help(method)" for more information.')
     # Load command history
     history_path = os.path.join(os.environ["HOME"], ".plcapi_history")
     try:
@@ -133,11 +133,11 @@ else:
                         sep = ">>> "
                     else:
                         sep = "... "
-                    line = raw_input(prompt + sep)
+                    line = input(prompt + sep)
                 # Ctrl-C
                 except KeyboardInterrupt:
                     command = ""
-                    print
+                    print()
                     break
 
                 # Build up multi-line command
@@ -161,13 +161,13 @@ else:
                     # Try evaluating as an expression and printing the result
                     result = eval(command)
                     if result is not None:
-                        print result
+                        print(result)
                 except SyntaxError:
                     # Fall back to executing as a statement
-                    exec command
-            except Exception, err:
+                    exec(command)
+            except Exception as err:
                 print_exc()
 
     except EOFError:
-        print
+        print()
         pass