the BUILD_DIST environment variable will be ignored by osc
- the following environment variables can still be used:
# OSC_SU_WRAPPER overrides the setting of su-wrapper.
# OSC_BUILD_ROOT overrides the setting of build-root.
# OSC_PACKAGECACHEDIR overrides the setting of packagecachedir.
(now they're documented in the helptext)
* make_dir() and checkout_package() got a new optionally 'prj_dir' parameter. This parameter specifies in which dir we want to create new project/package dirs.
Add support for handling linked packages in expanded form. They can be checked
out, updated (expanding or unexpanding them), and built locally.
Missing: commit support.
Newly introduced options are:
- osc checkout: --expand-link
- osc update: --expand-link and --unexpand-link
Other changes:
- osc core: add show_upstream_xsrcmd5() method which returns the xsrcmd5 (if a
linkinfo element exists only, of course)
- made updating of expanded sources work with package tracking, too.
- add isexpanded() method to Linkinfo class
- add isexpandedlink() method to Package class
- read lsrcmd5 and srcmd5 from the linkinfo element, which are present in
expanded links.
osc info:
- make it show info about expanded and non-expanded links
a list. The query can now also be given as a dictionary, and in that case it
will be automatically urlencoded. The behaviour for a list is unchanged for
the reason of backward compatibility.
* createPackageDir(): create and initialize a new package dir in
the given project.
* get_apiurl_usr(): returns the username for a certain apiurl
* get_configParser(): returns an ConfigParser() object which can be
used for parsing the ~/.oscrc file
- fixed username issues when creating a new package (the problem was
that the username for the default host was used and not the one for
that specific apiurl)
- some small fixes in the do_importsrcpkg() method
- when requesting a submit, save the source package's revision id (looking up
what it currently is)
- give the user a way to override it, to submit an older revision
- when using show --diff, take the actual old revision into account. Thus, the
diff is against the source revision of the time of request creation.
- rename 'refuse' -> 'decline', which is more polite.
- show: make the diff optional
- add RequestState class
- handle state history
- implement 'decline' action
meta_exists, make_meta_url, checkRevision
if no apiurl parameter is specified the global value (conf.config['apiurl'])
will be used. This should fix bug #361764
- some small apiurl fixes in the make_diff method (the package_tracking branch already has this fix)
* --local-package: use this option if you're trying to build a
package which doesn't exist on the server
* --alternative-project <project>: use this option to specify an
alternative project if the current project doesn't exist on the
server, e.g.: osc build [OPTS] --alternative-project openSUSE:10.3 standard i586 BUILD_DESCR
- some other minor cleanups in build.py
- get_repos_of_project() is now a generator function
(you don't have to checkout the package to view the buildlog)
- renamed "get_log()" to "get_buildlog" to avoid any confusion with
"get_commitlog()"
- added new method "print_buildlog()" which prints out the buildlog on the
standard output
* some new things like showing newly added files
* moved the whole code into a new methode (make_diff())
* behave more like svn when doing a diff against a certain revision
- changed the storedir attribut of the Package() class to an absolute
filename - normally this shouldn't have any impact on existing methods, functionality etc.
get_config(override_conffile = None,
override_http_debug = None,
override_apisrv = None)
Thus, it should be possible to use the osc module with one simple
conf.get_config() call. It is no longer required to set up the api url in the
config dict, and call conf.init_basicauth().
* by default the new files will be comitted
(if it is a new package or if there are no
source files on the server)
* added --disable-commit option switch to
import the package only locally
* added --delete-old-files option switch to
delete old files from the server.
- some changes in the Package class:
* extended existing commit() method to do
all the commit work (before it was done
in the do_commit() method).
* moved stuff from the constructor into a
new method (update_datastructs()).
* now a package can be imported from a
src.rpm
* thanks to Peter for his is_rpm() and is_srcrpm()
methods
- split out some methods into smaller ones (so they
can be reused for other tasks)
- added some new methods for unpacking a src.rpm
- changed read_meta_from_spec() method to be more
flexible (it is possible to specify the tags and
sections).
- rework editmeta class, because it was programmed to pull content from the
server first
- add a catch-all for the depracated commands which refers to the new meta command
- if PUT on metadata fails with a 500, and http_debug is True, print out the
body of the server reply
- rename update_pacmeta() to update_local_pacmeta() for clarity
- rename update_filesmeta() to update_local_filesmeta() for clarity
* when searching a package/project it
is also possible to search for the search term
in the <title /> and <description /> elements of
a package/project.
* show only exact matches
* etc.
- please tell me if the usability is too "complex"
or if the output of the results is too weird.
edituser. TODO:
- write usage info
- implement -c|--create
- implement -F|--file
- check whether I broke usage of metadata copying/creation from withing
linkpac or copypac
- re-implement createpac and friends as aliasses to the new meta command -- I
just commented them out for now
- fix metadata change detection, which no longer relies on the timestamp of the
temporary file
- add close() in dgst(), which seemed to miss (I can't see a reason why it
should not be there0
- commit: new option -F/--file to read commit message from file
- commit: print committed revision number
- Package.commit(): return the new revision number
- implementing a provisionary log command for the commit log
- commit: implemented -m option for the commit message
- commit files together, if (and only if) do_commits = 1 is set in the
[general] section of .oscrc
- extended "osc co prj pac" to checkout a specific revision of pac
- extended "osc up" to update to a specific revision
- extended "osc diff" to diff the working copy against a
specific revision on the server. NOTE: comparing two
server-side revisions (osc diff -r 11:12) is currently
not supported!
called with change_is_required=False.
- linkpac: correctly set the destination project in the template used for the
new package, although the api didn't seem to notice the mistake so far.
related to points that were raised during employment in osc:
# v0.8.3
- Fix a bug where errors with passing an incorrect number of args to
functions in do_foo() implementations would be masked.
# v1.0.0
- [backward incompat] `Cmdln.main()` no longer takes an `optparser`
argument. Top-level option parsing has been changed so that top-level
options for a `Cmdln` subclass can more naturally be defined and
handled on the class definition. Changes:
- `Cmdln.main()` calls `self.get_optparser` to get an option handler.
Subclasses should overload this method for custom top-level options.
- After option parsing, but before sub-command handling, the
`self.postoptparse()` hook is called.
- Add a `version` attribute on `Cmdln` subclasses. If set, the default
top-level option parser will have a `--version` attribute.
- [backward incompat] Simplify the StopProcessing/opts.stop handling for
option handling in subcommands. The "opts" argument to "do_*"
sub-command functions will no longer have a "stop" value.
StopProcessing is now called StopOptionProcessing. This shouldn't
affect simple usage of cmdln.py.
- adjust osc.commandline for these changes.
- implement --extra-pkgs option
- pass the list of extra packages to the backend, as "add=pkg" query parameters
- use osc.core.get_buildinfo(), instead of os.system('osc buildinfo ...')
- implement adding query parameters to constructed URLs in a more generic way
- save api server url to .osc/_apiurl. This requires changing makeurl() and all
calls to it.
- implement 'info' subcommand, essential for debugging these changes.
- use new api routes in all places
- buildhistory works again
- copypac: implement package copy from one buildservice instance to another
(--to-apiurl option)
- the results subcommand handles <working copy> arguments now
which was still using sys.argv
- build: use own api server as upstream URL in urllist. So far,
api.opensuse.org was hardcoded in the download URL [#265211].
a URL now, so the variable "scheme" which was needed in addition before
becomes obsolete. For backward compatibility, a hostname (and scheme
variable) are still accepted. Likewise, the auth sections in the config take
a URL now, and a hostname:port to keep old config working.
Furthermore, apisrv can be overridden by -A on the commandline. HTTP or HTTPS
scheme is determined from the URL. Credentials must be configured in .oscrc.
Bump version to 0.95.
New features:
- implement "rebuild all failed packages", via --failed option in rebuildpac
subcommand (new api route)
- status -v shows all files, including unmodified ones
- suppress the legend in prjresults by default (show with -l)
- add global options to override config
- can use arbitrary api server via global -A option
- -H enables HTTP traffic debugging
- --version
Bugfixes:
- fix typo in delete_project() (the line building up the URL got lost)
- fix the commit subcommand's arguments. This works correctly now:
osc ci ../test/onlyinwc `pwd` fstab ../test/f2
- fix buildinfo subcommand, if no specfile is posted. Broke with the recent URL
handling rewrite, but didn't seem to bother because the build subcommand
always sends the specfile.
- try to fix buildhistory route, but it might be gone actually (need to pursue)
- add --clean/--noinit to osc build help output
- adding http_GET/POST/PUT/DELETE() functions, which dispatch to
http_request(), and use them everywhere
- removing othermethods.py
- keeping urlopen(), in case it is used from externally, but have it print out
a "depracated" message
- finally, implementing a global HTTP debug mode
* I moved edit_meta into an own class representing metadata. that
metadata is retrieved in the constructor, can be accessed as an
elementree and can be synced back to the filesystem.
I'm using that myself to update metadata and I changed the use of
edit_meta to use that class.
to create a user if it doesn't exist yet. A new command 'usermeta' replaces
'id' respectively 'userid'.
- add preliminary support for doing uploads with a subsequent "commit" request
(not switched on now, since I want to do more testing on this, and there is
no way to pass on a commit message yet anyway.)
- add runtime check for build.rpm version, so the rpm package dependencies is
no longer required
- fix typo introduced last time in the editmeta, deletepac, deleteprj commands
- rewrite the PUT and DELETE request methods to
- transparently handle HTTPS
- handle path parameters (for commits)
- send user agent
- rename get_user_id() function to get_user_meta()
- change copyright notice from Peter Poeml to Peter Poeml / Novell Inc.
- fix testsuite
- add CREDITS file
- move all configuration code into module osc/conf.py
- now, the API server can be configured in .oscrc with
apisrv = ...
- also, 'scheme' (http/https) is no longer a module variable but can be
configured
- all config is in DEFAULT
- ignore vim swap files
- use urllib() convenience wrapper in some functions that used
urllib2.urlopen() and had their own error handling. Instead, it seems to make
sense -- in the future-- to create our own errors and propagate them up, in
cases where the error handling of urlopen() is too generic
- rename get_slash_source() to meta_get_project_list() for consistency
- show local time in get_buildhistory(), not UTC
- rewrite help text of 'rebuildpac' command
- allow to run commandline.py from the commandline (without the wrapper)
- don't send a space when doing a POST request without body
- fix testsuite, and add test for relative directories with 'status'
- add is_package_dir() method
- add pathjoin() method, similar to os.path.join but it removes a leading ./
- add 'deleteprj' command and delete_project() method. Note: the API server
doesn't seem to support it yet.
- add 'prjresults' command to display aggregated build status over the entire
project
- 'rebuildpac': accept additional repo and arch argument. Note: the syntax has
changed.
- 'log': print usage info if called with missing arguments
- extend urlopen() so it takes data for optional POST
- extend get_buildinfo() to take optional specfile argument
- osc.build.main: send specfile to server
- buildinfo(): accept specfile as third argument, and document it
'buildhistory', and make it work. It still gives out raw xml, which might be
changed
- add some help text to the linkpac documentation
- add '.git' to exclude_stuff
- extend edit_meta() with two arguments: template=new_package_templ, change_is_required=True
- increase BLOCKSIZE in othermethods.putfile() (1024 seemed a little small)
- extend othermethods.putfile() to serve a string buffer instead of a real file
- for filelists, don't read _meta file any longer (depracated). Read directly
from /source/<project>/
(now also in DELETE requests, where no quoting was done before at all)
- 'id': properly quote the query part of the URL
- fix up tests.py
- add to TODO
- remove requirement on pyxml package
- use list comprehensions in some places
- fix 'rebuildpac' command to not show raw xml
- fix updatepacmetafromspec to cope with subpackages during parsing
- add 'rebuildpac' command, which triggers a rebuild for all
repositories/architectures of the package
- fix merge on 'update', if osc is called from another directory
- escape '+' signs in filenames in GET requests as well (adds to [#153725,
181593])
- don't fail on 'resolve' when the working copy is in a newer rev already
requests [#153725, 181593]
- before committing, make sure that the working copy is up to date (added
show_rev() function)
- add 'commit' as subcommand alias for 'ci/checkin'
- use os.path.abspath() in Project and Package classes
- checkin: update local copy in store (fixes diff using obsolete old version)
- use shutil.copy2 instead of home-grown copy_file
- make put_source_file() and delete_source_file() methods of the Package class;
rename delfile method to delete_localfile
- make all subcommands functions -- so they can be used from outside (they
still print directly their output; they could become iterators later)
- deprecate 'init' subcommand
- 0.5
status:
- use new file metadata which provides checksum, size and mtime
- don't list unmodified files
- fix some conditions where status was too stupid so far
update:
- much faster now, since only new or changed files are downloaded
- print revision number
checkout:
- mark project directory as such (to be used later)
diff:
- faster, since 'status' is faster
- work against local copy
checkin:
- update package metadata from specfile
- fix argument handling
add:
- ignore .osc and other files
other changes:
- sanitize argument handling, so most commands can work with
arbitrary files/directories as arguments (work is always done per package)
- add history command (doesn't seem to be working yet)
- on first usage, ask for username password on first usage,
and store them in .oscrc (.netrc can still be used)
- add setup.py
- add osc-wrapper.py as a wrapper script, so the module can be used when
installed in the system as well as in the uninstalled source directory