|
> January 14, 2010 :: How to help fixing problems in openSUSE
If you found a problem in your openSUSE system, and know how to fix it, it is very easy now to contribute the fix back to the project.
For example a user had a problem with a boot script erroneously overwriting a file at each system boot. As he already found out how to fix it, I can demonstrate how easy it is to contribute this fix back to the project, so that every openSUSE user can benefit from it. At first I had to find out which package to fix. This can be done by asking the package management system which package owns the buggy file: > rpm -qf /etc/init.d/boot.clock aaa_base-11.2-43.45.1.i586 Now we create a branch of the package in the openSUSE buildservice: > osc branch openSUSE:Factory aaa_base Note: Please login to build.opensuse.org first to create your home project. The osc tool can be installed for openSUSE 11.2, 11.1. The server created a copy of the package in your home project now. You need to check it out to your local machine to do the changes: osc co home:digitaltomm:branches:Base:System/aaa_base You now have a directory 'home:digitaltomm:branches:Base:System/aaa_base' containing the package source files. You can now either directly change the sources of the package or create a patch file that gets included from the .spec file. Creating a patch file is preferred for source changes, so that the patch can easily be removed when the upstream project has included the fix. Changes to the .spec file can be done directly. Let's create a patch. This can be done manually with the patch command, or with the help of the quilt program. I have to extract the source tarball, create a copy where I fix the code, and create the patch file by using diff to compare the original and the patched sources: > cd home\:digitaltomm\:branches\:Base\:System/aaa_base > tar -xf aaa_base.tar.bz2 > cp -r aaa_base aaa_base.orig > vim aaa_base/etc/init.d/boot.clock > diff -uNr aaa_base.orig aaa_base > adjtime.patch Now the patch file needs to be referenced from the .spec file. This is done by adding a reference like this: Source: aaa_base.tar.bz2 Patch0: adjtime.patch ... %prep %setup -n aaa_base %patch0 -p1 To make sure the patch is applied correctly, and the package builds on openSUSE Factory, I start a local build: > osc build --no-verify When everything went fine, I can commit the changes to my branch, add a changelog entry and afterwards submit a request to get the changes included in the openSUSE Factory project: > osc commit -m "Added adjtime fix from bnc#570245." > osc vc > osc submitreq -m 'Added adjtime fix from bnc#570245' created request id 29474 The request is now pending and waiting to get reviewed by the project maintainers of openSUSE Factory. It's state can be viewed with: > osc request show 29474 or in the webinterface. In my case the request got declined because Rudi was faster in fixing it, and I forgot to add a correct changelog entry first. |
> December 23, 2009 :: openSUSE Buildservice appliances
I started to build appliances for the OBS with SUSE Studio now:
Known issues: Please report issues with the beta packages / appliances to opensuse-buildservice@opensuse.org. |
> November 17, 2009 :: openSUSE 11.2 released
After upgrading my workstation to 11.2, I already have some workarounds for minor problems: Tips & Tricks: Mysql: Kde4 konsole: Privoxy: X.org: Ideapad S12: |
> September 9, 2009 :: Setting up a development buildservice instance
If you just want to use the buildservice and are not interested in the latest code and it's development, it is recommended to simply use the openSUSE instance, or install it from rpm (howto for 11.0). The buildservice consists of various parts, mainly the backend, the frontend (API), and different clients that connect to the API, we will set it up with the webclient. At first we need to check out the buildservice code: svn co https://forgesvn1.novell.com/svn/opensuse/trunk/buildservice Setting up the backend:We need to initialize the config file, add a buildservice user, and create the working directories:cd src/backend cp BSConfig.pm.template BSConfig.pm sudo useradd obsrun -s /bin/false sudo /usr/sbin/groupadd obsrun sudo mkdir -p /srv/obs/run /srv/obs/projects sudo chown -R obsrun /srv/obs/This needs to be done as root or with sudo rights. To change the default directory or the user edit the BSConfig.pm file. Now we are ready to start the servers. You should start each one in it's own terminal to see the logfiles.
Setting up the frontend (API):We can create a config file for the development machine, so we don't have to change the original one:cd frontend; pushd config/environments; cp development_base.rb development.`hostname`.rb; popd;Now we need to set up a database for the frontend, simply configure a database user in config/database.yml, crete the database and run: rake db:migratenow the database should be correctly initialized. Starting the API server with:
The API documentation is now available here: http://127.0.0.1:3001/apidocs/ This API can now be used by different clients, or standard tools like curl (howto). Setting up the webclient:Setting up the weblient for usage with the openSUSE.org API is very easy, and explained in the wiki. To use it with our local frontend, we just need to change some config values:cd webclient; pushd config/environments/; cp development_base.rb development.`hostname`.rb; popd;and set: FRONTEND_HOST = "localhost" FRONTEND_PORT = 3001 FRONTEND_PROTOCOL = 'http'
Link your instance to the openSUSE.org buildserviceAs our backend does not yet have any repositories we could build packages against, the easiest way to get started is to link it against the openSUSE buildservice, so we are able to build against all repositories from there. This is unfortunately not yet possible from the admin interface, so we have to use the API directly with curl:curl -u Admin:opensuse -T opensuse_link http://localhost:3001/source/openSUSE.org/_meta with opensuse_link being a file with this content: <project name="openSUSE.org" > <title>openSUSE.org build link</title> <description>Build against projects from build.opensuse.org</description> <remoteurl>https://api.opensuse.org/public</remoteurl> </project>
We need to use curl again to add a repository from the linked buildservice as a build target: curl -u Admin:opensuse -T _meta http://localhost:3001/source/home:Admin/_meta with _meta being a file with this content: <project name="home:Admin"> <title>Admin's Home Project</title> <description></description> <repository name="openSUSE_11.1"> <path project="openSUSE.org:openSUSE:11.1" repository="standard"/> <arch>i586 </repository> <person role="maintainer" userid="Admin"/> <person role="bugowner" userid="Admin"/> </project>
Did you get interested in buildservice development, or did you run into some limitations that you want to fix? There also is a wiki page at: http://en.opensuse.org/Build_Service/Junior_Projects that lists some tasks that can be done. The buildservice community can be found on irc at #opensuse-buildservice at freenode, and on opensuse-buildservice@opensuse.org (subscribe). |
|
> March 23, 2009 :: openSUSE Feeds
We added some public newsfeeds to hermes, the openSUSE notification system which is currently used for buildservice and openFATE messages.
If you have suggestions for other interesting feeds that should show up in the public feeds, please comment.
|
|
Earlier Posts
|






