Hi KDE Team, First of all, I would like to thank Will and Raymond for their help. I have learnt many things from them :-) I have written this HOWTO to share what I've learnt from the past few months. Feel free to improve it. KDE:Release:XX HOWTO =================== This is a HOWTO for setting up and maintaining a KDE:Release:XX repository. Before starting, please take into considerations the following: Coordinate the work with others. If the Qt version in KDE:Distro:Factory is newer than the one shipped with openSUSE, don't link libqt4, instead aggregate it (ie: from KDE:Qt:STABLE) and patch kde4-filesystem (macros.kde4). KDE:Release:XX shouldn't pull a newer version of Qt (ie: 4.6.x vs 4.7.x) unless it's required to build KDE. Please do not accept/submit patches for KDE base packages in KDE:Release:XX as long as they are links to KDE:Distro:Factory packages. This may cause link conflicts when updating links revisions! Generally speaking, patches should go to KDE:Distro:Factory first. Ready to go? 1. Create the KDE:Release:XX repository or ask to have it created for you. 2. Create links in KDE:Release:XX osc ls KDE:Distro:Factory |xargs -i -t osc linkpac KDE:Distro:Factory {} KDE:Release:XX 3. Relink subpackages to base packages in KDE:Release:46. ie: perl-kde4 / kdebindings4. <!-- beginning --> #!/usr/bin/perl my $repository = "KDE:Release:46"; my %kde_sub_packages = ( "kdeaccessibility4-icons" => "kdeaccessibility4", "kdeartwork4-noarch" => "kdeartwork4", "kdebase4-wallpapers" => "kdebase4-workspace", "kdeedu4-noarch" => "kdeedu4", "kdegames4-carddecks" => "kdegames4", "kdelibs4-apidocs" => "kdelibs4", "mono-kde4" => "kdebindings4", "perl-kde4" => "kdebindings4", "python-kde4" => "kdebindings4", "python-kdebase4" => "kdebase4-workspace", "ruby-kde4" => "kdebindings4", "smoke-generator" => "kdebindings4", ); foreach $sub_package (sort keys %kde_sub_packages){ system("osc rdelete $repository $sub_package"); system("osc linkpac -C copy $repository $kde_sub_packages{$sub_package} $repository $sub_package"); } <!-- end --> 4. Fix links for KDE base packages to latest revision. The following perl script does it for you: <!-- beginning --> #!/usr/bin/perl my $repository = "KDE:Release:46"; my @kdebase = qw( kde4-filesystem kde4-l10n kdeaccessibility4 kdeadmin4 kdeartwork4 kdebase4 kdebase4-runtime kdebase4-workspace kdebindings4 kdeedu4 kdegames4 kdegraphics4 kdelibs4 kdemultimedia4 kdenetwork4 kdesdk4 kdetoys4 kdeutils4 kdewebdev4 oxygen-icon-theme plasma-addons ); foreach (@kdebase){ system("osc setlinkrev $repository $_"); } <!-- end --> You may also want to fix links for some packages such as amarok. 5. Delete packages that aren't needed for openSUSE. ie: gpgme 6. Copy the project config from KDE:Distro:Factory Run osc meta prjconf -e KDE:Release:46 to edit it. 7. Add a repository. ie: openSUSE:11.4 + openSUSE:11.4:Update path 8. Raw config: disable publish, enable one architecture (ie: x86_64) and see how it goes. run osc meta prj -e KDE:Release:XX to edit it. 9. Once everything is green, enable all archs and add repositories for other openSUSE versions. 10. All green? Then enable publish :-) 11. Ask maintainers to enable other repos (ie: KDE:Extras) to build against KDE:Release:46. Updating KDE in KDE:Release:46 In most cases, updating the link revisions of the KDE base packages is enough (running the script from point 4 would do that). Don't forget to disable publish first! If an alpha/beta of KDE is about to arrive in KDE:Distro:Factory, copypac the packages from KDE:Distro:Factory to KDE:Release:46 first. From that point on, KDE:Release:46 would contain packages and not links. That means that you could accept patches or that you would have to upload tarballs everytime there's a new release of KDE. Comments and suggestions are welcome! ;-) Cheers, -- Javier Llorente