Kexi/Porting to Qt&KF 5

From KDE Community Wiki

Note

Draft. Based on notes from the Calligra 2014 Sprint. Each step leads to compiling (running?) state.
Started by jstaniek (talk) 19:06, 7 July 2014 (CET).


The grand plan:

  1. [IN PROGRESS] Port Predicate↓ lib to Qt 5
  2. [60%] Move koproperty↓ lib to a separate repo, make it Qt-only and port to Qt5
  3. [10%] Move koreport↓ lib to a separate repo, make it Qt-only and port to Qt 5
    1. Remove scripting or port scripting?
  4. Port Kexi (without KexiDB/calligradb, reporting, KoReport) to Qt 5 and port Kexi to Predicate and the new koproperty/koreport
    1. Reimplement report scripting using a simple QtScript solution to keep backward compatibility with Kexi 2
    2. Remove then unused calligradb lib and parts of KexiDB lib
  5. Improve Kexi stability after porting
  6. -- Kexi 3.0 release here --
  7. Make koreport lib dependent on Predicate and remove code/API that becomes redundant (e.g. KoReportData)
  8. Add a new QtScript-based scripting module
  9. Use the module in Kexi Reports too, keeping backward compatibility with Kexi 2 scripting (add unit tests before porting to be very sure that compatibility is kept)

Proposed rules

  • Use personal git scratch repos to avoid stress with buildbreaks and unnecessary BUG/review notifications
  • Synchronize with (boud's?) branch of the Qt5 port. Boud's advice: My approach is more like, run each of montel's scripts, fix twhat's wrong, then go on. It's not something that's easy to paralellize.
  • Don't run astyle on the code, it pollutes history, and astyle-kdelibs is a bit broken
  • Based on "Porting notes" below, keep porting of one aspect in one commit to simplify reviews
  • Use the reviewboard for reviews
  • Use kde-dev-scripts.git porting scripts, in particular
  • Libs that are separate repos should use the framework template (see Links) and be ported to this layout (for now it's just predicate, koproperty, koreport).

TODO...

Notes and Status

Details go here

  • TODO: publish detailed checklist (in a spreadsheet?)

Predicate

  • Download/Build/Release info → Predicate.
  • Our target version is 1.0.0. To avoid conflicts, Qt 4 version kept for reference, has version 0.0.0.
  • Depends only on Qt, so it's a tier1 framework
  • Windows and Mac-specific matters.
  • Porting to Qt 5 started by Wojtek Kosowicz (Jan 2015)
  • Porting to Qt 5/Mac OS X started by Wojtek Kosowicz too (Jan 2015)


Branches:

qt4 - old Qt4-based master moved there, always stable

master - official Qt 5 branch, all platforms, always stable

qt5-kosowicz - Wojtek's Qt 5/Linux To have it build on that branch please export qt5 install dir

export QTDIR=<path to your qt5 install dir, or qtbase build dir if using uninstalled>
export PATH=$QTDIR:$PATH


qt5mac-kosowicz - Wojtek's Qt 5/Mac OS X

koproperty

  • Our target version is 1.0.0 and KProperty name.
  • To avoid conflicts, Qt 4 version kept for reference, has version 0.0.0.
  • Depends only on system libraries and Qt, so it's a tier1 framework
  • Files with full history extracted from calligra's master to a temp repo by staniek: scratch/staniek/kproperty (use: git clone kde:scratch/staniek/kproperty, master branch)
  • Directory structure reorganized according to recommendations --Jstaniek (talk) 20:59, 23 February 2015 (UTC)

koreport

  • Our target version is 1.0.0 and KReport name.
  • To avoid conflicts, Qt 4 version kept for reference, has version 0.0.0.
  • Depends on system libraries, Qt, and KProperty (tier 1), so it's a tier 2 framework
  • Files extracted from calligra's master to a temp repo by staniek: scratch/staniek/kreport (use: git clone kde:scratch/staniek/kreport, master branch)

Git surgery

(Jstaniek (talk) 09:54, 23 February 2015 (UTC)) Repos are prepared by history rewrites such as:

git filter-branch --prune-empty -f --tree-filter \
'(mkdir -p src;mv Predicate src/predicate;mv Drivers src/drivers) 2> /dev/null || true' -- HEAD

Links

Docs

Background