openSUSE:KDE UpdatedApps repository

Jump to: navigation, search

The KDE:UpdatedApps repository contains latests versions of KDE applications that are shipped with the openSUSE distribution. These packages do not require using the latest KDE platform version. In other words it provides applications from openSUSE Factory that are directly usable on all supported openSUSE distribution releases. It contains only stable versions of software.

Maintaining repository

The repository contains all applications from KDE:Distro:Factory. It does not contain any packages from KDE SC and it does not contain newer versions of libraries. Two exceptions for libraries are libraries that are not present in the target distribution at all and are required by an application and libraries that are a part of an application.

Technically all packages are only links to their counterparts in KDE:Distro:Factory. In order to avoid unintended introduction of e.g. beta releases these links always point to a specific revision and are updated manully (using 'osc setlinkrev'). If any package modifications are needed, they should be preferably done directly in KDE:Distro:Factory. It is possible to detect building in KDE:UpdatedApps using the %{kde_updatedapps} macro if necessary.

If KDE:Distro:Factory is currently frozen because of approaching openSUSE release, it is possible to provide newer versions of applications in KDE:UpdatedApps. In that case the package in KDE:UpdatedApps will be temporary more than just a link to KDE:Distro:Factory, as necessary.

Maintaining a package

Creating

If the package does not exist yet in UpdatedApps:

$ osc linkpac KDE:Distro:Factory amarok KDE:UpdatedApps

Updating

Finding the latest version from KDE:Distro:Factory suitable for UpdatedApps:

$ osc log KDE:Distro:Factory amarok | less
----------------------------------------------------------------------------
r71 | llunak | 2010-06-27 16:30:59 | 96c695de89e70ea905c55438b1b8f2b0 | unknown | sr

Enable ksuseinstall support again everywhere, if this is because of backports,
that has to be done differently.
----------------------------------------------------------------------------
r70 | llunak | 2010-06-27 13:51:42 | 1eda34990378d06f8bf8a9d663382d8c | unknown | sr42095
...

If the current version from KDE:Distro:Factory is suitable (it is not a beta release, for example), the current revision can be used (here r71):

osc setlinkrev -r 71 KDE:UpdatedApps amarok

If an older version is needed, osc log needs to be checked for that version.

Fixing

Some packages may not build in KDE:UpdatedApps because of differences between KDE:Distro:Factory and stable openSUSE releases (most usually a new package not being present or being too old in old releases). For example, if package libksuseinstall-devel is available only in KDE:Distro:Factory and 11.3, then .spec files requiring it need to be modified as follows, in order to it to be used only with a sufficient openSUSE version or when not building in KDE:UpdatedApps:

%if %suse_version > 1120 || !0%{?kde_updatedapps}                                                                                         
BuildRequires:  libksuseinstall-devel                                                                                                     
%endif                                                                                                                                    

These changes should be preferably submitted to KDE:Distro:Factory instead of being local in KDE:UpdatedApps.

If it is not easily possible to make a package build for an older distribution, it can be simply disabled from building there, until somebody finds it worth the effort of fixing the problem.

Build dependencies

Adding build dependencies to KDE:UpdatedApps is allowed if

  • the new package does not exist in the target distribution at all
  • if the build dependency can be considered closely related to the package (for example taglib-extras for amarok)
  • if an exception is given after a discussion on the opensuse-kde mailing list

Otherwise it is NOT allowed to add newer versions of an already present package that is a generic dependency.

In the case of adding a build dependency set the build default ('all') to disabled and explicitly enable building only for the relevant distributions (when it over time becomes disabled everywhere it will be obvious it can be removed).

For packages that are not maintained in KDE:Distro:Factory but somewhere else, the link need to point to openSUSE:<version>:Update repository, not to any development repository. When enabling building of such packages it must be ensured that the used version is not older than the version provided by the openSUSE release where it would be used.

For packages that are not present elsewhere (for example, the package is a copy of a library shipped with KDE SC), the package should not be a link, it should be a full package copy instead.

Checks

The following script checks the status of the repository, mainly whether some links need (possibly) updating to a newer revision and for common problems.

osc ls KDE:UpdatedApps | ( while read pack; do
    projline=`osc cat KDE:UpdatedApps $pack _link | grep 'project="'`
    if test -z "$projline"; then
        echo Package $pack is not a link
        continue
    fi
    proj=`echo $projline | sed 's/.*project="\([^"]*\)".*/\1/'`
    if ! test "$proj" = "KDE:Distro:Factory"; then
        echo "$proj" | grep -q '^openSUSE:[^:]*:Update$'
        if test $? -ne 0; then
            echo Package $pack links to project $proj
            continue
        fi
# TODO check that it doesn't provide an older version for a newer distribution
        osc meta pkg KDE:UpdatedApps $pack |
            (
            inbuild=
            disabled=
            while read line; do
                echo "$line" | grep -q '<build>' && inbuild=1
                echo "$line" | grep -q '</build>' && inbuild=
                if test -n "$inbuild"; then
                    echo "$line" | grep -q '<disable/>' && disabled=1
                fi
            done
            if test -z "$disabled"; then
                echo Package $pack does not link KDE:Distro:Factory and is not disabled by default
            fi
            )
        continue
    fi
    rev=`echo $projline | sed 's/.*rev="\(.*\)".*/\1/'`
    if test -z "$rev"; then
        echo Package $pack does not have a revision set
    else
        origrev=`osc log KDE:Distro:Factory $pack | head -2 | tail -1 | sed 's/^r\([^ ]*\).*/\1/'`
        if ! test "$rev" = "$origrev"; then
            echo Package $pack does not link the latest revision : $rev vs $origrev
        fi
    fi
done )