This way other python scripts can execute osc commands via the
babysitter. Example:
>>> from osc import babysitter, commandline
>>> cli = commandline.Osc()
>>> babysitter.run(cli, ['osc', 'ls', '<project>'])
this is left-over from 87d354e1a0
Addressing:
Traceback (most recent call last):
File "/usr/bin/osc", line 26, in <module>
r = babysitter.run(osccli)
File "/usr/lib/python2.7/site-packages/osc/babysitter.py", line 60, in run
return prg.main()
File "/usr/lib/python2.7/site-packages/osc/cmdln.py", line 335, in main
self.postoptparse()
File "/usr/lib/python2.7/site-packages/osc/commandline.py", line 136, in postoptparse
override_verbose = self.options.verbose)
File "/usr/lib/python2.7/site-packages/osc/conf.py", line 873, in get_config
add_section(conffile, url, user, passwordx)
File "/usr/lib/python2.7/site-packages/osc/conf.py", line 712, in add_section
except OscConfigParser.ConfigParser.DuplicateSectionError:
AttributeError: class OscConfigParser has no attribute 'ConfigParser'
If http_debug is set we redirect sys.stdout to an StringIO
instance in order to do some header filtering (see conf module)
so we have to use the "original" stdout for printing the certificate
information.
Using the "old" exec approach isn't possible anymore because it'll break all
plugins which aren't compatible with python3 (for instance the usage of
python2's "print" statement will lead to an error). In order to circumvent
this problem we do the following:
- import the plugin/module
- update the module's global symbol table with the "globals()" of the
commandline module
- bind the module's "do_*" functions to the "Osc" class
This basically mimics the old "exec" semantics.
Two issues:
- There is no _find() member in ConfigLineOrder. Use _find_section()
instead
- Use 'key' instead of 'line' as argument for _find_section() since
'line' is used before assignment.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
We still have to support older urlgrabber versions where the class
"URLGrabber" is an old-style class and therefore we cannot use a "super(...)"
call. This fixes issue #32
given urlgrabber version 3.9.1, MirrorGroup trys to access
grabber.opts, but the derived grabber OscFileGrabber hasn't
this attribute
Signed-off-by: Gui Chen <gui.chen@intel.com>
Unfortunately the class URLGrabError does not define constants for the
different error codes therefore we have to hardcode the errno (alternatively
we can define them in our fetch module).
There are many places can't be covered by 2to3, especially the
str/unicode -> str/bytes change done in python3. This is a big patch
incorporating all changes made in order to make python3 suite.py run
without any single failure.
It
* adapt the introspect_handler_3 for case there are no __defaults__
* adds the ET_ENCODING variable for ET.fromstring ("unicode" in py3,
"utf-8" in py2)
* (re)adds various builtins to both python versions
- memoryview to python 2.6
- bytes compatible with py3 to 2.6 and 2.7
and it changes few parts of tests/common.py in order to be compatible
with python3
* new urlcompare method compares all components or url + parsed query
string in a dictionary, so the ordering, neither quoting does not matter
* bytes builtin has been added to 2.x and used in assertEqualMultiline
reintroduce unicode function - despite the fact I am pretty sure the
usage is plain wrong, because code says - return a unicode string from
utf-8 encoded one, which is probably not what was intended. I bet
something like encode the input as utf-8 was wanted.
raw_input has been removed and equals to input in py3. Unfortunatelly no
__future__ statement exists for that. Ensure all modules uses
osc.core.raw_input except osc.cmdln, where there is NameError way
implemented.
The most visible change in python3 - removal of print statement and all
the crufty
print >> sys.stderr, foo,
The from __future__ import print_function makes it available in python
2.6
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
This is more useful and meaningful error message than M2Crypto's
"ValueError: cafile and capath can not both be None." when neither
of cafile and capath is defined for load_verify_locations call.
Prevents a crash in osc chroot when %(apihost)s is defined in the
"build-root" config option.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>