Some modules (httplib, StringIO, ...) were renamed in python3. This
patch try to import the proper symbols from python3 and then fallback to
python2 in a case ImportError will appear.
There is one exception, python 2.7 got the io module with StringIO, but
it allow unicode arguments only. Therefor the old module is poked before
new one.
this patch
1.) removes the iteritems/itervalues, which were dropped in py3
items/values are used instead
2.) add an extra list() in a cases the list-based access is needed
(included appending, indexing and so)
3.) changes a sorting idiom in few places
instead of
foo = dict.keys()
foo.sort()
for i in foo:
there is a recommended
for i in sorted(dict.keys()):
4.) in one occassion it removes a if dict.has_key() by simpler
dict.get(key, default)
With the current implementation it's possible to detect if the user saved
the message file or if he/she just quits the editor (e.g. to abort the commit).
Basically it's just a wrapper around subprocess.call which raises an ExtRuntimeError
exception if subprocess.call raised an OSError with errno set to ENOENT (unfortunately
the OSError's filename attribute is set to None therefore we cannot print a meaningful
error message (that's why an ExtRuntimeError is raised)).
Replaced all occurrences of subprocess.call with a corresponding run_external call.
If the user didn't change the default template it either means that
he wants to use the default message or that he wants to abort the process.
So if the template wasn't modified osc will prompt:
Commit template was not changed
a)bort, c)ontinue, e)dit:
The new argument for osc build --host will perform the build on a remote
host. It is a shortcut for
rsync -az -e ssh `pwd` user@hostname:/remote/dir
rsync -az -e ssh prefer-dir \
user@hotname:/remote/dir/__prefer-rpms__/prefer-dir
ssh -t user@hostname "cd /remote/dir/package; osc build *build-args"
rsync -az -e ssh user@hostname:/remote/dir/__keep-pkgs__ keep-pkgs
iow it copy the current directory to the /remote/directory on hostname
(if not specified, the ~/ is supplied) and then run the osc build on
hostname. All global and local arguments are supplied to the remote osc
build, but arguments points to local path (--host, --keep-pkgs, --prefer-pkgs,
--rsync-dest, --rsync-src and --overlay) are modified to match to remote
host.
It support the OSC_ variables, so running with
OSC_BUILD_ROOT=/somewhere osc build --host ... will push the variable to
the remove osc process