Kexi/Porting to Qt&KF 5: Difference between revisions
Appearance
< Kexi
No edit summary |
|||
Line 3: | Line 3: | ||
The grand plan: | The grand plan: | ||
# [75%, builds, example runs] Port [[#Predicate|Predicate]]↓ lib to Qt 5 | # [75%, builds, example runs] Port [[#Predicate|Predicate]]↓ lib to Qt 5 | ||
# [ | # [97%] Move [[#koproperty|koproperty]]↓ lib to a separate kproperty repo, make it Qt-only and port to Qt5 | ||
# [ | # [30%] Move [[#koreport|koreport]]↓ lib to a separate kreport repo, make it Qt-only and port to Qt 5 | ||
## Remove scripting or port scripting? | ## 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 | # Port Kexi (without KexiDB/calligradb, reporting, KoReport) to Qt 5 and port Kexi to Predicate and the new koproperty/koreport | ||
Line 45: | Line 45: | ||
*Porting to Qt 5/Mac OS X started by Wojtek Kosowicz too (Jan 2015) | *Porting to Qt 5/Mac OS X started by Wojtek Kosowicz too (Jan 2015) | ||
*Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) | *Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) | ||
*repo: git clone kde:clones/predicate/staniek/work predicate | *A temporary repo: git clone kde:clones/predicate/staniek/work predicate | ||
Branches: | Branches: | ||
Line 63: | Line 63: | ||
===kproperty=== | ===kproperty=== | ||
*Our target version is 1.0.0 and '''KProperty''' | *Our target version is 1.0.0 and '''KProperty''' [https://projects.kde.org/projects/playground/libs/kreport project in Playground/Libs category of KDE projects] | ||
*Depends on system libraries and Qt, plus minor deps on KF5WidgetsAddons/KF5GuiAddons for some editors; later we may move this dependency to a plugin (so the core would stay Qt-only) | |||
*Depends | |||
*Official git repo: kproperty, master branch (use: git clone kde:kproperty) | *Official git repo: kproperty, master branch (use: git clone kde:kproperty) | ||
*Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) | *Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) | ||
===kreport=== | ===kreport=== | ||
*Our target version is 1.0.0 and '''KReport''' | *Our target version is 1.0.0 and '''KReport''' [https://projects.kde.org/projects/playground/libs/kreport project in Playground/Libs category of KDE projects] | ||
*To avoid conflicts, Qt 4 version kept for reference, has version 0.0.0. | *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, | *Depends on system libraries, Qt, and KProperty (tier 1), so it's a tier 2 framework, some deps on KF5WidgetsAddons (may be moved to a plugin so the core would stay Qt-only) | ||
*Official git repo: kreport, master branch (use: git clone kde:kreport) | *Official git repo: kreport, master branch (use: git clone kde:kreport) | ||
*Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) | *Directory structure reorganized according to [[Frameworks/Policies#Framework_directory_structure|recommendations]] --[[User:Jstaniek|Jstaniek]] ([[User talk:Jstaniek|talk]]) 20:59, 23 February 2015 (UTC) |
Revision as of 22:33, 8 April 2015
The grand plan:
- [75%, builds, example runs] Port Predicate↓ lib to Qt 5
- [97%] Move koproperty↓ lib to a separate kproperty repo, make it Qt-only and port to Qt5
- [30%] Move koreport↓ lib to a separate kreport 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 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 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)
Rules
- Kexi's port itself is kept with other Calligra apps in the framework branch. During this time master branch is frozen to avoid merge conflicts. After a successful port of all planned code, we'll be back to development in master for unstable code and calligra-3.x for 3.x stable code.
- 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
- TODO: publish detailed checklist (in a spreadsheet?)
Dependencies
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 system libraries and Qt, so it's a tier 1 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)
- Directory structure reorganized according to recommendations --Jstaniek (talk) 20:59, 23 February 2015 (UTC)
- A temporary repo: git clone kde:clones/predicate/staniek/work predicate
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
kproperty
- Our target version is 1.0.0 and KProperty project in Playground/Libs category of KDE projects
- Depends on system libraries and Qt, plus minor deps on KF5WidgetsAddons/KF5GuiAddons for some editors; later we may move this dependency to a plugin (so the core would stay Qt-only)
- Official git repo: kproperty, master branch (use: git clone kde:kproperty)
- Directory structure reorganized according to recommendations --Jstaniek (talk) 20:59, 23 February 2015 (UTC)
kreport
- Our target version is 1.0.0 and KReport project in Playground/Libs category of KDE projects
- 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, some deps on KF5WidgetsAddons (may be moved to a plugin so the core would stay Qt-only)
- Official git repo: kreport, master branch (use: git clone kde:kreport)
- Directory structure reorganized according to recommendations --Jstaniek (talk) 20:59, 23 February 2015 (UTC)
- Deps from calligra libs (copied, renamed): KoRuler, KoUnit
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
- Calligra 3.0 Porting Plan
- 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: KDiagram (recommended because it's a Calligra project -- next-gen kdchart, kdgantt), KArchive (tier 1), KIO (tier 3), KImageFormats plugins
- http://www.proli.net/2014/06/21/porting-your-project-to-qt5kf5/
- CMake porting script port-cmake.sh
Docs
Background