#!/usr/bin/python serverHost = "localhost" serverPort = 999 import sys, os import socket socket.setdefaulttimeout(300) sys.path.insert(0,'/usr/lib/entropy/libraries') sys.path.insert(0,'/usr/lib/entropy/client') sys.path.insert(0,'../libraries') sys.path.insert(0,'../client') from entropyConstants import * try: import cPickle as pickle except ImportError: import pickle try: import cStringIO as stringio except ImportError: import StringIO as stringio import dumpTools s = None def connect(): global s # connect s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((serverHost, serverPort)) except socket.error, e: if e[0] == 111: print "no daemon running" sys.exit(1) else: raise def spawn(cmd, silent = False, getobj = False): # send command s.sendall(cmd) data = '' end_of_tmt = False while 1: try: x = s.recv(8192) except socket.timeout, e: print 'interrupted, reason: %s' % (e,) sys.exit(3) if not x: break data += x eot = etpConst['socket_service']['answers']['eot'] if data.endswith(eot*2): # if we have two eot it means it's data = data[:-len(eot)] # been duplicated to avoid to be confused elif data.endswith(eot): end_of_tmt = True data = data[:-len(eot)] if not silent: sys.stdout.write(x) sys.stdout.flush() if end_of_tmt: break if getobj and data: f = stringio.StringIO(data) data = dumpTools.unserialize(f) f.close() return data connect() # 1st step, get session session = spawn("begin", silent = True) if session == "0": print "maximum number of sessions reached, server full" sys.exit(4) else: print "session is:",session # 2nd step, run the command #spawn_result = spawn("%s match 'x11-libs/qt'" % (session,), silent = True) spawn_result = spawn("%s reposync reponames=['sabayonlinux.org'] forceUpdate=True" % (session,))#, silent = True) #print "spawn result is:",repr(result) if spawn_result in [ etpConst['socket_service']['answers']['er'], etpConst['socket_service']['answers']['no'], etpConst['socket_service']['answers']['cl'] ]: rc = spawn("%s rc" % (session,), silent = True, getobj = True) print "cannot continue, error code:",repr(spawn_result),"error message:",rc s.close() sys.exit(2) # 3rd step, get rc rc = spawn("%s rc" % (session,), silent = True, getobj = True) print "REAL returned data:",repr(rc) # 4th step, end session rc = spawn("%s end" % (session,), silent = True) print "END session result",repr(rc) s.close() sys.exit(0)