Kexi/Porting to Qt&KF 5: Difference between revisions
< Kexi
No edit summary |
|||
Line 28: | Line 28: | ||
==Notes and Status== | ==Notes and Status== | ||
*TODO: publish detailed checklist (in a spreadsheet?) | *TODO: publish detailed checklist (in a spreadsheet?) | ||
===Dependencies== | |||
*CMake 3: [https://community.kde.org/Frameworks/Building/Details#CMake_from_Git] | |||
*Extra CMake Modules: [https://community.kde.org/Frameworks/Building/Details#Extra_CMake_Modules] | |||
===Predicate=== | ===Predicate=== | ||
Line 60: | Line 64: | ||
*Our target version is 1.0.0 and '''KProperty''' name. | *Our target version is 1.0.0 and '''KProperty''' name. | ||
*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 only on system libraries and Qt, so it's a tier1 framework | *Depends only on system libraries and Qt, so it's a tier1 framework, not dependent on KF5 | ||
*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) | *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 [[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) | ||
Line 67: | Line 71: | ||
*Our target version is 1.0.0 and '''KReport''' name. | *Our target version is 1.0.0 and '''KReport''' name. | ||
*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, but not dependent on KF5 | ||
*Files extracted from calligra's master to a temp repo by staniek: scratch/staniek/kreport (use: git clone kde:scratch/staniek/kreport, master branch) | *Files extracted from calligra's master to a temp repo by staniek: scratch/staniek/kreport (use: git clone kde:scratch/staniek/kreport, master branch) | ||
*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 00:26, 17 March 2015
The grand plan:
- [75%, builds, example runs] 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 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)
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
- 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)
- 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
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, not dependent on KF5
- 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, but not dependent on KF5
- Files extracted from calligra's master to a temp repo by staniek: scratch/staniek/kreport (use: git clone kde:scratch/staniek/kreport, master branch)
- 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: KArchive (tier 1), KIO (tier 3), KImageFormats plugins
Docs
Background