Kexi/Porting to Qt&KF 5
< Kexi
The grand plan:
- [IN PROGRESS] Port Predicate↓ lib to Qt 5
- [60%] Move koproperty↓ lib to a separate repo, make it Qt-only and port to Qt5
- [10%] Move koreport↓ lib to a separate repo, make it Qt-only and port to Qt 5
- Remove scripting or port scripting?
- Port Kexi (without KexiDB/calligradb, reporting, KoReport) to Qt 5 and port Kexi to Predicate and the new koproperty/koreport
- Reimplement report scripting using a simple QtScript solution to keep backward compatibility with Kexi 2
- Remove then unused calligradb lib and parts of KexiDB lib
- Improve Kexi stability after porting
- -- Kexi 3.0 release here --
- Make koreport lib dependent on Predicate and remove code/API that becomes redundant (e.g. KoReportData)
- Add a new QtScript-based scripting module
- 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. To avoid conflicts, Qt 4 version kept for reference, has version 0.0.0.
- Depends only on Qt, so it's a tier1 framework
- files extracted from calligra/2.9 to a temp repo by staniek: scratch/staniek/kproperty (use: git clone kde:scratch/staniek/kproperty)
koreport
- 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
- files extracted from calligra/2.9 to a temp repo by staniek: scratch/staniek/kreport (use: git clone kde:scratch/staniek/kreport)
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 || echo' -- HEAD
Links
- Kexi tasks at todo.kde.org (KDE Identity needed), public read-only view
- Predicate tasks at todo.kde.org (KDE Identity needed), public read-only view
- Framework repository template - use for creating new frameworks
- real world examples: KArchive (tier 1), KIO (tier 3), KImageFormats plugins
Docs
Background