Skip to main content

the avatar of Alex Eftimie

PackageKit backend for Software Center: week 1 report

This week was a good week for coding, and the best part about it: most of my changes are now in s-c’s upstream trunk.

I started out trying to populate s-c database with only a few applications; this meant updating the update-software-center tool, and also changing some bits on the database update module. I was glad to discover that some functionality I have planned to develop in week 6 (parsing AppStream app-data xmls) was already there, thus making my job easier :-)

After that, work continued by abstracting backend parts, such as InstallBackend and TransactionsWatcher, and also isolating as much as posible apt and apt_pkg usage. I have then expanded the PackageInfo abstraction to implement a dictionary like interface, containing _Package objects (before that, apt.Package were returned). It took some small steps, and sometimes mistakes from my side, but in the end, I guess I have got it done right. Work still needs to be done regarding usage of candidate and installed properties (which currently are apt.Version objects), and also on AptCache try_install_and_*depends methods (this should be either abstracted, either made apt-backend specific.

At the end of the week, preparing the next point of focus, I have managed to get a developing environment with PackageKit with Python gobject introspection data. Here comes the bad news: the py GI for packagekit is not ready for prime time. Reasons for that: GI is relatively new, there are no other users of PK from Python (only C and Vala). With help from ximion, hughsie, dantti and tomeu (and many other kind souls on #PackageKit, #introspection or #python), we isolated the problem inside pygobject, apparently an incomplete implementation of GPtrArray. I hope to get it fixed next week :-) , so that I can continue work with PK.

Although I am a bit worried seeing segfaults in Python, it’s a sunny day out here (so I can finish my report on a non-technical note) so I’m sure that with help from these awesome people on IRC,  problem will be solved, and my project will continue according to the plan.

Next week: gi ninja and more PK!

the avatar of Andreas Jaeger

Factory Progress 2011-06-03

This week saw the release of the first milestone of openSUSE 12.1 and work on factory is continuing, I’ve found the following changes important:

GNU C Library (glibc) 2.13

We’ve updated glibc from version 2.11 to 2.13 which brings many bug fixes and AFAIK no major breakages to packages. The package itself got cleaned up a little bit as well, so please report any problems.

GO Programming Language

Factory now contains a compiler for the GO language which is “is an expressive, concurrent, garbage collected systems programming language that is type safe and memory safe.”. More details about GO are available on the openSUSE Wiki, the devel project with additional packages is devel:languages:go.

Packaging: Source Processing

The usage of _service files in Factory confused many packagers and resulted in broken packages so that these will be deprecated. As a replacement, Adrian implemented now a new source processing method and asks for testers.

Packaging: Adding useful Provides to cups drivers

Vincent “updated python-cups to a new version, and it is now shipping
files to automatically add Provides tag to packages that are shipping
cups drivers.”. This allows desktop packages to install the right printer driver – or users to do it via zypper. Packages with cups drivers just need to add a “BuildRequires: python-cups”.

Open Build Service Improvement

The “My Work” view has been updated to better show packages that are in review state and need your review. I suggest everybody to check out the page and cleanup your list.

Multiple Buildroots with osc

If you like to use more than one build at the same time, there are several options like pointed out on the opensuse-packaging mailing list:

  • Use of the environment variable OSC_BUILD_ROOT to define a build root.
  • Editing of the osc config file ~/.oscrc and setting build-root to contain the variables %(repo), %(arch),  %(project) or %(package).

Correction on auto-legal build service check

Jürgen corrected my report from last week: He would love to see the checks for auto-legal moved and welcomes any help.

Thanks

Thanks for the words of encouragement to my first blog post. I’ll try to continue this series. If there’s anything you think should be added to it, please contact me via email at aj at opensuse dot org.

a silhouette of a person's head and shoulders, used as a default avatar

A utility for merging configuration / sysconfig files – Week 2 Report

This is my second report about my gsoc project, well what is new: This week I occupied my self with augeas, it is the first time I try to use and expand an already existing library and utility. Even thought Augeas is very well documented and the people in their community are very helpful, i had some problems combining my thoughts and ideas with the existing code, because i was trying to find out the best way to avoid code duplication etc. That was at least at the start, now at the end of the week I can say that I am more familiar with the Augeas API and this will certainly help me in the coming weeks.

As long as it concerns the actual merging procedure, i began coding an implementation i have thought. Unfortunately, the approach i used was not sufficient generalized to work with all the configuration files. Therefor i had, to erase most of the coding i did these days. However, from every negative thing comes a positive, in this case, I was able to find a better solution that rise some new problems, however i hope I will be able to find out an answer for them in the following days and implement the right code.

Finally, a merge tool command was added in augtool that is able to use the aug_merge command i added in the library, the particular command will accept a source and a dest tree/path and will then try to combine them according to the flags that i will add as enumeration. The final conclusion I must speed up things a bit 🙂 cause there are unexpected problems that may occur at the implementation at any time.

Best Regards,
Christos

the avatar of Matthias Hopf

RAnsrID: Galois Field / Reed-Solomon code rewrite pending

While starting to implement error resilience (not erasure resilience, which is already working nicely) in my RAID-lookalike multi-disk block device RAnsrID, I finally had to notice that I didn't understand one aspect of Galois Field mathematics - the Reed-Solomon representation type has heavy influence on how to deal with errors (read: corrupted data).

So far, I only understood the canonical matrix style representation (basically a linear combination over the data disks for each redundancy disk). Turns out that with polynomial representation you can create way better (read: faster) algorithms for error correction - according to my analysis, erasure and error recovery is O(N²), compared to O(N³) for erasure correction in the linear combination case, and unknown (presumably O(N³⋅M²)) in the error case (N: total number of disks, M: number of redundancy disks).

Thus I will rewrite the redundancy routines based on Phil Karn's Reed-Solomon implementation - the best implementation with an open license I could find. Most implementations (like in par2) don't bother with error correction, and use block-level checksums to detect errors. That done, erasure recovery can be used. Needless to say, this is no option for my block device (where and why should I store the checksums).

No need to say that this delays delivery timeframe of RAnsrID further; especially as I'd like to incorporate the change in an at least data preserving backwards compatible way.

Also Hackweek 6 wasn't as productive as I hoped; I only managed to get the test suite up and running. Oh well.

the avatar of Efstathios Agrapidis

Greek openSUSE community, Translation of openSUSE Weekly news in Greek(issue 177)

Hello out there,

I am very pleased to announce the new issue (177) of openSUSE Weekly
News in Greek. In this one you will read about:

* openSUSE renames OBS
* Bryen Yunashko: Ready…Set…Code!
* Andreas Jaeger: Factory Progress
* Matt Barringer: SUSE Gallery Desktop Client
* Christos Bountalis: A utility for merging configuration / sysconfig files – Week 1
Report

And of course many many interesting news about openSUSE, plus usefull
advice for making our lives easier.

Enough… read more at: own.opensuse.gr or at
http://el.opensuse.org/Weekly_news.

Looking forward to hearing your comments, advice and anything you would
like to read about at the next issue.

The openSUSE Weekly News is translated in the Greek language from issue #150. You can read older translated issues here: http://el.opensuse.org/Κατηγορία:Weekly_news_issues

Enjoy it!
Efstathios Agrapidis (efagra)

the avatar of Efstathios Agrapidis

Greek openSUSE community, Translation of openSUSE Weekly news in Greek(issue 176)

Hello out there,

I am very pleased to announce the new issue (176) of openSUSE Weekly
News in Greek. In this one you will read a lot about free (as in freedom) software conferences, either they have already been done, or they will be done in the direct future.
A little sample from the subjects:

* openSUSE Conference 2011 to be creative and open!
* Manu Gupta: My GSoC Project – SaX3
* Michal Hrušecký: LinuxTag 2011
* Will Stephenson: Have you BURPed yet today?
* Anastasios Ksouzafeiris: How to install Enlightenment (E17) in openSUSE 11.4

And of course many many interesting news about openSUSE, plus usefull
advice for making our lives easier.

Enough… read more at: own.opensuse.gr or at
http://el.opensuse.org/Weekly_news.

Looking forward to hearing your comments, advice and anything you would
like to read about at the next issue.

Enjoy it!
Efstathios Agrapidis (efagra)

the avatar of Andreas Jaeger

Factory Progress

A lot of things are happening in our Factory distribution that will be released in November 2011 as openSUSE 12.1 and I’d like to point out a few things from the last few weeks that users and developers of factory shouldn’t miss.

Roadmap openSUSE 12.1

Stephan “Coolo” Kulow has updated the openSUSE 12.1 Roadmap, the next milestone is Milestone 1 which is delayed and targeted now for release on Tuesday, 30th May. The next paragraphs highlight some of the updates for this versions.

GCC 4.6

The GNU Compiler Collection has been updated to version 4.6, the list of  changes includes the following new warning that will be visible while compiling packages for openSUSE Factory:

  • “New -Wunused-but-set-variable and -Wunused-but-set-parameter warnings were added for C, C++, Objective-C and Objective-C++. These warnings diagnose variables respective parameters which are only set in the code and never otherwise used. Usually such variables are useless and often even the value assigned to them is computed needlessly, sometimes expensively. The -Wunused-but-set-variable warning is enabled by default by -Wall flag and -Wunused-but-set-parameter by -Wall -Wextra flags.”

Some packages have been failing by the new GCC due to new warnings and new optimizations and most have been fixed already but please double check that your packages are building and running fine.

RPM 4.9

Michael Schröder announced RPM 4.9 for Factory. He explains the main packager visible changes as:

“Besides some bug fixes and an update to a newer BerkeleyDB
library rpm-4.9.0 contains plugin architecture for dependency
generation. In older rpms, the internal dependency generator
was pretty much hardcoded in C, so we always used the old
external one to generate dependencies. With rpm-4.9.0, the
internal generator has become flexible enough so that we
can use it.

This means for you, that rpm will no longer use the %__find_provides and %__find_requires macros. Some packages redefined those macros to be able to filter the generated dependencies.
This will no longer work in rpm-4.9.0. Instead, support for
dependency filtering was added to rpm…”

GNOME 3

GNOME 3 has now hit Factory as well and Vincent Untz explained how to fix failures due to the large push.

Linux Kernel 2.6.39

This update was a “boring” update – nothing broke AFAIK ;), so I hope it’s a solid version. Users will benefit from the new features in it. 2.6.39 is the first kernel without the Big Kernel Lock at all!

Packaging Changes

Besides new software, also new ways of handling it get introduced. The following catched my eyes:

Rpmlint update

Ludwig Nussel updated rpmlint to version 1.2 and explained the new warnings about packaging of rpm packages – and what to do about them.

Changing the process of Factory submissions with the Open Build Service

Now with every submission to Factory scripts are run automatically that do two different reviews before the package goes to human check-in review:

  • The “legal-auto” review checks the updated package for changes in licenses.
  • The “factory-auto” review checks that the updated package builds actually in the devel project – and if not, rejects it.

The “legal-auto” review has quite a long backlog at the moment and Jürgen is working on moving some of the checks to rpmlint or osc checks – so that the packager notices and fixes them before submission to Factory.

Also, you can now submit packages to Factory even if you are not the maintainer of the package but in this case the maintainer (packager) gets a review request to review that the package really can go to factory and thus a plea to packagers to handle their review requests.

openSUSE Conference

The openSUSE Conference is this year co-located with the SUSE Labs conference. Join us to present and discuss also Factory related topics. The Call for papers is open now!

I’m interested on feedback on this article – should I start a series?

a silhouette of a person's head and shoulders, used as a default avatar

A utility for merging configuration / sysconfig files – Week 1 Report

It’s less than a week, that GSoC 2011 coding period have begun. This is my first report for the project.Every Friday I will make a report in this blog to share with you the progress I am making on the project.So what did I do during these first days?

First of all I created an online repo on GitHub and I forked the Augeas project. That will permit me to use version control of my project “GIT” during the implementation and retain an online repo where I can commit my changes to, while experimenting with the source code. This gave me the opportunity to practice more with git, create branches merge commit changes etc. I have to admit that until now, I didn’t used a version control system much, but i really don’t know why?!?! Really git is awesome and can save the developer valuable and useful time.

Next, I continued with trying out OBS for the first time, the openSUSE Build Service, that just renamed to Open Build Service. Even thought i faced some troubles in the start finding my way around (packaging was a new thing for me, and after using obs I have to say that it is not as hard as I initially believed), with the help of my mentor I think I can understand now better the service and use it. But why use OBS to package so early in the project? Well we thought that by using obs we will be able to create packages (please care they are experimental ) with the changes i make, so other people can try them out if they are interested and maybe help with future debugging.

Finally among my initial experiments with Augeas source code, I have created a branch “helloworld” on my git repo, whether i added a simple hw – Hello world command in the augtool that is contained within Augeas. That command prints as you may have guessed :), a hello world message on screen. Then i compiled the project by using the sources of the specific branch, and at the end i used obs to create some packages that can be found on my obs repo :D.

As I had not any important experience with building software and packages, I occupied myself this week mainly with administration actions. Which however, will help the community and of course everyone interested in my gsoc project, to follow the changes, make suggestions, and contribute with new ideas, but will also help in the latter phase of integrating

Conclusion

The progress of the week 1 in bullets:

  • created git repo online through GitHub
  • practice with git
  • compiling packages from git sources
  • Learn the basics about using OBS
  • experimenting with augeas code, and creating a small command as a test
  • creating openSUSE packages through OBS

The GSoC have just begun, and I have already learned many new and very exciting things. This summer will be very interesting for sure!!! Now i will focus on the actual coding and specifically in the merging procedure that will used in Augeas. Till the next report,

Best Regards,
Christos Bountalis

[1] http://download.opensuse.org/repositories/home:/mpounta/openSUSE_11.4/
Notice: This is the first time I compile and package a project with obs, therefore the packages inside the repo are highly experimental and only for testing purposes.

the avatar of Thomas Thym

Strategy is alive


CC by nc sa mikep @flickr


There was a long pause during the strategy process. Now the strategy team is working on it again. News are coming the next days. Stay tuned.
the avatar of Frédéric Crozat