Here is a checklist for updating KDE4 SC. The same should apply to
KDE5 in future.  Based on mistakes zhuk@ did (often) in the past.
Feel free to improve and extend with description of non-trivial
errors could happen.

Those instructions could miss something critical due to changes in
KDE build system or interdependencies; beware and please keep this
file up-to-date to at least avoid extra errors on minor updates.

* Use "sh ./kde-release-helper prepare X.Y.Z" to get testing directory
${PORTSDIR}/x11/kdeXYZ. This will strip REVISIONs in Makefiles,
remove distinfo (so that it will be easy to detect ports you didn't
gone through yet) and so on. Note that CVS/Root files will still
point under ports/x11/kde4, so you can fix other things under
x11/kde4 and then simply "cvs up" under x11/kdeXYZ. Make sure that
X.Y.Z is added to the _MODKDE4_OTHERS line in x11/kde4/kde4.port.mk.

* Use "sh ../kde4/kde-release-helper check-lists" to see what
packages are new and what are not. This will work only after official
KDE release announcement made, though, because it uses the official
mirrors to download lists of distfiles. The changes in l10n packages
list should be reflected in l10n/Makefile.langs.

* Check if resources-only ports (kde-wallpapers, oxygen-icons,
base-artwork) were changed at all. If not, then it's better override
MODKDE4_VERSION in those ports to avoid users re-download same
package.

* Generic workflow for updating ports:
  1. make configure
     If the "patch" stage fails, fix, then redo "make configure".
     Check for dependency changes, and pay attention to the messages
     like "could not determine proper linking order": those indicate
     wrong order in target_link_libraries() calls that should be fixed.
     Those warnings usually won't happen on a clean system (no other
     versions of KDE installed, so it's RECOMMENDED to do manual part
     of the update while having all of the KDE SC installed.

  2. make update-plist
     Pay attention to NOT removing the following lines from pkg/PLIST:
       share/apps/solid/
       share/apps/solid/actions/
     The removal could happen due to the fact that default run-time
     dependency in case of multimedia/phonon ports module happens on
     phonon-vlc, which in turn depends on (surprise!) x11/vlc, which
     in turn already contains those. But the other Phonon backend,
     phonon-gstreamer, doesn't provide those directories. So to
     support both backends, we should have those directories listed.

  3. make port-lib-depends-check
     Beware: it's known for stuff depending on the R package to display
     non-critical warnings about libraries not found here.

* Update of l10n stuff is simple:
    cd l10n/ru && make makesum && cd .. && \
    make DANGEROUS=yes update-plist package
  The build framework will take care on tweaking CMakeLists.txt and
  removing extra stuff like localized manual pages.

* Generic order of update:
  1. oxygen-icons, smokegen, productivity/akonadi, multimedia/phonon*
  2. libs, smokeqt, l10n
  3. libk*, baloo, Qt bindings, *thumbs, graphics-mobipocket,
     graphics-strigi-analyzer, kqtquickcharts
  4. nepomuk-core, baloo-widgets, kross-interpreters
  5. pimlibs, baseapps
  6. runtime, pim-runtime, py-kde, okular, marble
  7. kate, workspace
  8. smokekde and everything else except KDE bindings and webdev
  9. KDE bindings
 10. webdev

* When you think you're done, merge things back:
    sh ../kde4/kde-release-helper merge

* Now check that everything works fine still:
    cd ../kde4 && make clean="all dist"
    dpb x11/kde4

* On commit, remember to clean up REVISION marks and do other tweaks,
  if needed, in meta/kde4, and commit it as well.
  Also, remember to regen distinfo in x11/kde-shared-data and include
  it in the KDE update commit.
