mirror of
https://github.com/openSUSE/osc.git
synced 2024-11-14 08:16:15 +01:00
13a13a87c4
Importing `cElementTree` has been deprecated since Python 3.3 - importing `ElementTree` automatically uses the fastest implementation available - and is finally removed in Python 3.9. Importing cElementTree directly (not as part of xml) is an even older relic, it's for Ye Time Before ElementTree Was Added To Python and it was instead an external module...which was before Python 2.5. We still need to work with Python 2.7 for now, so we use a try/ except to handle both 2.7 and 3.9 cases. Also, let's not repeat this import 12 times in one file for some reason. Signed-off-by: Adam Williamson <awilliam@redhat.com>
264 lines
7.6 KiB
Plaintext
264 lines
7.6 KiB
Plaintext
osc -- opensuse-commander with svn like handling
|
|
|
|
|
|
Patches can be submitted via
|
|
* mail to opensuse-buildservice@opensuse.org
|
|
* Bugzilla: https://bugzilla.novell.com/enter_bug.cgi?product=openSUSE.org&component=BuildService
|
|
* or the official Git repository on Github:
|
|
https://github.com/openSUSE/osc
|
|
|
|
|
|
INSTALLATION:
|
|
|
|
RPM packages are here (rpm-md repository):
|
|
http://download.opensuse.org/repositories/openSUSE:/Tools/
|
|
|
|
To install from git, do
|
|
|
|
python setup.py build
|
|
python setup.py install
|
|
# create a symlink 'osc' in your path pointing to osc.py.
|
|
ln -s osc-wrapper.py /usr/bin/osc
|
|
|
|
Alternatively, you can directly use osc-wrapper.py from the source dir
|
|
(which is easier if you develop on osc).
|
|
|
|
|
|
|
|
CONFIGURATION:
|
|
|
|
When you use it for the first time, it will ask you for your username and
|
|
password, and store it in ~/.oscrc.
|
|
|
|
|
|
CONFIGURATION MIGRATION (only affects versions >= 0.114):
|
|
|
|
Version 0.114 got some cleanups for the configfile handling and therefore some
|
|
options are now deprecated, namely:
|
|
* apisrv
|
|
* scheme
|
|
|
|
One new option was added:
|
|
* apiurl = <protocol>://<somehost> # use this as the default apiurl. If this
|
|
option isn't specified the default (https://api.opensuse.org) is used.
|
|
|
|
So far osc still has some backward compatibility for these options but it might
|
|
get removed in the future that's why it issues a deprecation warning in case
|
|
one of those options is still in use.
|
|
|
|
The new configuration scheme looks like the following:
|
|
# entry for an apiurl
|
|
[<protocol>://<apiurl>]
|
|
user = <username>
|
|
password = <password>
|
|
...
|
|
|
|
'''Before starting the migration please save your ~/.oscrc file!'''
|
|
|
|
If the migration doesn't work for whatever reason feel free to send me an email
|
|
or ask on the opensuse-buildservice mailinglist or in the #opensuse-buildservice
|
|
irc channel.
|
|
|
|
=== Migration case I (apisrv only) ===
|
|
The apisrv option is used to specify the default apihost. If apisrv isn't
|
|
specified at all the default ("api.opensuse.org") is used.
|
|
The current [general] section looks like this:
|
|
[general]
|
|
...
|
|
apisrv = <somehost>
|
|
# or
|
|
apisrv = <protocol>://<somehost>
|
|
|
|
apisrv got superseded by the new apiurl option which looks like this:
|
|
[general]
|
|
...
|
|
apiurl = <protocol>://<somehost>
|
|
|
|
If apisrv has no "<protocol>" https is used. Make sure all apiurl sections have
|
|
the new format which is described above. Afterwards apisrv can be removed.
|
|
|
|
=== Migration case II (scheme only) ===
|
|
The current [general] section looks like this:
|
|
[general]
|
|
...
|
|
scheme = <protocol>
|
|
|
|
This means every apiurl section which don't have the new format which is
|
|
described above for instance
|
|
[<somehost>]
|
|
user = <username>
|
|
password = <password>
|
|
...
|
|
|
|
has to be converted to
|
|
[<protocol>://<somehost>]
|
|
user = <username>
|
|
password = <password>
|
|
...
|
|
|
|
Afterwards the scheme option can be removed from the [general] section (it
|
|
might be the case that some sections already have the correct format).
|
|
|
|
=== Migration case III (apisrv and scheme) ===
|
|
The current [general] section looks like this:
|
|
[general]
|
|
...
|
|
apisrv = <somehost>
|
|
scheme = <protocol>
|
|
|
|
Both options can be removed if all apiurl sections have the new format which is
|
|
described above. So basically just adjust all apiurl sections (it might be the
|
|
case that some sections already have the correct format).
|
|
|
|
|
|
KEYRING USAGE
|
|
|
|
Osc now can store passwords in keyrings instead of ~/.oscrc. To use it,
|
|
you need python-keyring and either python-keyring-kde or -gnome.
|
|
|
|
If you want to switch to using a keyring you need to delete apiurl section
|
|
from ~/.oscrc and you will be asked for credentials again, which will be then
|
|
stored in the keyring application.
|
|
|
|
|
|
WORKING COPY INCONSISTENT (only affects version >= 0.130)
|
|
|
|
osc's working copy handling was rewritten in 0.130. Thus some
|
|
consistency checks were added. As a result osc might complain
|
|
that some old working copies are in an inconsistent state:
|
|
Your working copy '.' is in an inconsistent state.
|
|
Please run 'osc repairwc .' (Note this might _remove_
|
|
files from the .osc/ dir). Please check the state
|
|
of the working copy afterwards (via 'osc status .')
|
|
To fix this simply run "osc repairwc ." as suggested in the
|
|
error message. Note that "osc repairwc ." might need to contact
|
|
the api in order to fetch some missing files. Also it might remove
|
|
some files from the storedir (.osc/) but it won't touch any locally
|
|
modified files.
|
|
If it DOES NOT fix the problem please create a bug report and attach
|
|
your working copy to the bug (if possible).
|
|
|
|
|
|
USAGE EXAMPLES:
|
|
(online at http://en.opensuse.org/openSUSE:OSC )
|
|
|
|
To list existing content on the server
|
|
osc ls # list projects
|
|
osc ls Apache # list packages in a project
|
|
osc ls Apache subversion # list files of package of a project
|
|
|
|
Check out content
|
|
osc co Apache # entire project
|
|
osc co Apache subversion # a package
|
|
osc co Apache subversion foo # single file
|
|
|
|
Update a working copy
|
|
osc up
|
|
osc up [pac_dir] # update a single package by its path
|
|
osc up * # from within a project dir, update all packages
|
|
osc up # from within a project dir, update all packages
|
|
# AND check out all newly added packages
|
|
|
|
If an update can't be merged automatically, a file is in 'C' (conflict)
|
|
state, and conflicts are marked with special <<<<<<< and >>>>>>> lines.
|
|
After manually resolving the problem, use
|
|
osc resolved foo
|
|
|
|
Upload change content
|
|
osc ci # current dir
|
|
osc ci <dir>
|
|
osc ci file1 file2 ...
|
|
|
|
Show the status (which files have been changed locally)
|
|
osc st
|
|
osc st <directory>
|
|
osc st file1 file2 ...
|
|
|
|
Mark files to be added or removed on the next 'checkin'
|
|
osc add file1 file2 ...
|
|
osc rm file1 file2 ...
|
|
|
|
Adds all new files in local copy and removes all disappeared files.
|
|
osc addremove
|
|
|
|
Generates a diff, to view the changes
|
|
osc diff # current dir
|
|
osc diff file1 file2 ...
|
|
|
|
Shows the build results of the package
|
|
osc results
|
|
osc results [repository]
|
|
|
|
Shows the log file of a package (you need to be inside a package directory)
|
|
osc log <repository> <arch>
|
|
|
|
Shows the URLs of .repo files which are packages sources for Yum/YaST/smart
|
|
osc repourls [dir]
|
|
|
|
Triggers a package rebuild for all repositories/architectures of a package
|
|
osc rebuildpac [dir]
|
|
|
|
Shows available repository/build targets
|
|
osc repository
|
|
|
|
Shows the configured repository/build targets of a project
|
|
osc repository <project>
|
|
|
|
Shows meta information
|
|
osc meta Apache
|
|
osc meta Apache subversion
|
|
osc id username
|
|
|
|
Edit meta information
|
|
(Creates new package/project if it doesn't exist)
|
|
osc editmeta Apache
|
|
osc editmeta Apache subversion
|
|
|
|
Update package meta data with metadata taken from spec file
|
|
osc updatepacmetafromspec <dir>
|
|
|
|
|
|
There are other commands, which you may not need (they may be useful in scripts):
|
|
osc repos
|
|
osc buildconfig
|
|
osc buildinfo
|
|
|
|
|
|
Locally build a package (see 'osc help build' for more info):
|
|
osc build <repo> <arch> specfile [--clean|--noinit]
|
|
|
|
|
|
Update a package to a different sources (directory foo_package_source):
|
|
cp -a foo_package_source foo; cd foo; osc init <prj> <pac>; osc addremove; osc ci; cd $OLDPWD; rm -r foo
|
|
|
|
|
|
|
|
HINT FOR W3M USERS
|
|
|
|
Putting the following in the file ~/.w3m/passwd will make
|
|
w3m know the credentials for the buildservice servers:
|
|
|
|
"""
|
|
host api.opensuse.org
|
|
port 80
|
|
realm Authentication required
|
|
login foo
|
|
password bar
|
|
|
|
host build.opensuse.org
|
|
port 80
|
|
realm openSUSE Build Service
|
|
login foo
|
|
password bar
|
|
"""
|
|
|
|
chmod 0600 ~/.w3m/passwd
|
|
|
|
|
|
NOTES about the testsuite
|
|
|
|
A new test suite has been created and should run via doing
|
|
# cd tests
|
|
# python suite.py
|
|
|