Difference between revisions of "Neon/QtUpdates"

 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= How to Update Qt in Neon =
+
How to Update Qt in Neon
  
* Run both stable and unstable divert [https://build.neon.kde.org/view/mgmt/ mgmt jobs] to make developer builds go to /tmp/dev/unstable instead of /dev/unstable
+
= Testing phase =
* Cherry-pick [https://github.com/pangea-project/pangea-tooling/commit/e609823b8fd312b9c4ce21cf367f6fa90ebc63c8 this commit] into pangea-tooling and let is deploy to move builds into /tmp archives
+
 
 +
Testing phase is initial preparation stage of Qt updates, where new Qt version is prepared in the experimental repo, reasoning behind preparing it in experimental is sometime Qt updates can take days to prepare, preparing it in separate repo doesn't affect the production.
 +
 
 +
* For these Qt packages merge in order Neon/release into Neon/testing
 +
* For these the Qt packages merge in order latest tagged release from master into Neon/testing
 +
* If debian hasn't prepared the tag for the specific release, you would need to
 
* [https://packaging.neon.kde.org/qt/qtbase.git/tree/debian/README.source#n24 List of packages for qtdoc rebuilds]
 
* [https://packaging.neon.kde.org/qt/qtbase.git/tree/debian/README.source#n24 List of packages for qtdoc rebuilds]
** For these Qt packages merge in order Neon/release into Neon/testing
+
** Drop the changelog delta with debian
** For these the Qt packages merge in order latest tagged release from master into Neon/testing
+
** Bump the Build-Depends and Build-Depends-Indep of the qt dependencies in debian/control to the Qt version being prepared
** Let them build
+
** Add the changelog entry with the packaging version set to -0neon or +dfsg-0+neon, (i.e 5.12.1+dfsg-0+neon) it is used to avoid the merge conflicts with the debian merge.
** Trigger the builds again and check the turn green in Jenkins so they have built the new qtdoc stuff
+
** git push all changes at once.
* Merge other Qt bits and build
+
* Let them build, and fix the remaining errors. Once the qtdoc related packages are rebuilt, you need to build them again in same order to make sure they are green.
 +
* After that follow procedure in previous step for rest of Qt packages
 +
* Once all Qt packages are done, build the other kde related packages in experimental view.
 +
 
 +
If builds are completed, you can test them on user edition by enabling /release and /experimental repositories, and upgrading your system. You would also have to pin the packages in experimental repo.
 +
 
 +
    Package: *
 +
    Pin: release l=KDE neon - Experimental Edition
 +
    Pin-Priority: 1001
 +
 
 +
If everything looks good, you can proceed to landing them in Neon/release
 +
 
 +
= Landing Qt =
 +
 
 +
Landing Qt is also two step process,
 +
 
 +
== Building Qt in release/unstable/stable/release-lts ==
 +
 
 +
Generally speaking since this procedure freezes the unstable/stable and user editions for normal user, and important fixes and/or new developments can not be delivered to them in timely manner, it is recommended to do this process generally on Thu-Fri, and snapshot/un-divert next week on Monday/Tuesday.
  
* Build stuff which deps on Qt-private-ABI:
+
* Run both stable and unstable divert [https://build.neon.kde.org/view/management/ mgmt jobs] to make developer builds go to /tmp/dev/unstable instead of /dev/unstable
 +
* Cherry-pick [https://github.com/pangea-project/pangea-tooling/commit/8f304fb960a974fd4c41eb9b4131f7538549e836 this commit] into pangea-tooling to move builds into /tmp archives and deploy with mgmt_tooling on both build.neon and xenon
 +
* Notify other neon developers to NOT snapshot either Neon/release or Neon/release-lts.
 +
* [https://invent.kde.org/neon/qt/qtbase/-/blob/Neon/release/debian/README.source#L16 List of packages for qtdoc rebuilds]
 +
* For these packages:
 +
** Merge the Neon/testing branch to Neon/release.
 +
** Wait for builds to finish
 +
** Rebuild same packages again.
 +
* Merge Neon/testing branch into Neon/release for other Qt packages, and wait for them to finish building.
 +
* Build stuff which deps on Qt-private-ABI in all editions.
 
** akonadi
 
** akonadi
 
** kio-extras
 
** kio-extras
Line 18: Line 50:
 
** kdeclarative
 
** kdeclarative
 
** kwayland
 
** kwayland
 +
** kwayland-integration
 
** plasma-framework
 
** plasma-framework
 
** breeze
 
** breeze
Line 23: Line 56:
 
** plasma-integration
 
** plasma-integration
 
** skrooge
 
** skrooge
 +
** qqc2-desktop-style
 +
** gammaray
 +
 +
{{Input|1=<nowiki>
 +
'focal_[^_]+_[^_]+_(akonadi|kio-extras|pyqt5|python-qt4|sip4|kdeclarative|kwayland|kwayland-integration|plasma-framework|breeze|kwin|plasma-integration|skrooge|qqc2-desktop-style|gammaray)$'
 +
</nowiki>}}
 +
 +
==  Making it available to users ==
 +
 +
Never land Qt after Wednesday unless it is absolutely required for some bug fixes or something. Landing Qt after Wednesday doesn't leave enough time for bug-fixes or stuff before weekend.
 +
 +
* Test both user edition with /release repo enabled, and dev unstable edition at least with archive link changed to /tmp/unstable instead of /unstable.
 +
* Once at least 2 days of testing is done, snapshot user and user-lts
 +
* Undivert the dev unstable and dev stable repos.
 +
 +
= Process improvements =
  
* Test
+
* Document release/lts wrt Qt.
* Copy Qt packages to release-lts, release, stable, unstable
 
* Build Qt-private-ABI-deps in each edition ''FIXME but this doesn't work for diverted dev editions''
 
* Test
 
* Snapshot user and user-lts
 
* Undivert
 
 
* ''FIXME openQA checks?''
 
* ''FIXME openQA checks?''
 +
* Build arm for experimental editions?

Latest revision as of 09:35, 21 October 2020

How to Update Qt in Neon

Testing phase

Testing phase is initial preparation stage of Qt updates, where new Qt version is prepared in the experimental repo, reasoning behind preparing it in experimental is sometime Qt updates can take days to prepare, preparing it in separate repo doesn't affect the production.

  • For these Qt packages merge in order Neon/release into Neon/testing
  • For these the Qt packages merge in order latest tagged release from master into Neon/testing
  • If debian hasn't prepared the tag for the specific release, you would need to
  • List of packages for qtdoc rebuilds
    • Drop the changelog delta with debian
    • Bump the Build-Depends and Build-Depends-Indep of the qt dependencies in debian/control to the Qt version being prepared
    • Add the changelog entry with the packaging version set to -0neon or +dfsg-0+neon, (i.e 5.12.1+dfsg-0+neon) it is used to avoid the merge conflicts with the debian merge.
    • git push all changes at once.
  • Let them build, and fix the remaining errors. Once the qtdoc related packages are rebuilt, you need to build them again in same order to make sure they are green.
  • After that follow procedure in previous step for rest of Qt packages
  • Once all Qt packages are done, build the other kde related packages in experimental view.

If builds are completed, you can test them on user edition by enabling /release and /experimental repositories, and upgrading your system. You would also have to pin the packages in experimental repo.

   Package: *
   Pin: release l=KDE neon - Experimental Edition
   Pin-Priority: 1001

If everything looks good, you can proceed to landing them in Neon/release

Landing Qt

Landing Qt is also two step process,

Building Qt in release/unstable/stable/release-lts

Generally speaking since this procedure freezes the unstable/stable and user editions for normal user, and important fixes and/or new developments can not be delivered to them in timely manner, it is recommended to do this process generally on Thu-Fri, and snapshot/un-divert next week on Monday/Tuesday.

  • Run both stable and unstable divert mgmt jobs to make developer builds go to /tmp/dev/unstable instead of /dev/unstable
  • Cherry-pick this commit into pangea-tooling to move builds into /tmp archives and deploy with mgmt_tooling on both build.neon and xenon
  • Notify other neon developers to NOT snapshot either Neon/release or Neon/release-lts.
  • List of packages for qtdoc rebuilds
  • For these packages:
    • Merge the Neon/testing branch to Neon/release.
    • Wait for builds to finish
    • Rebuild same packages again.
  • Merge Neon/testing branch into Neon/release for other Qt packages, and wait for them to finish building.
  • Build stuff which deps on Qt-private-ABI in all editions.
    • akonadi
    • kio-extras
    • pyqt5
    • python-qt4
    • sip4
    • kdeclarative
    • kwayland
    • kwayland-integration
    • plasma-framework
    • breeze
    • kwin
    • plasma-integration
    • skrooge
    • qqc2-desktop-style
    • gammaray
'focal_[^_]+_[^_]+_(akonadi|kio-extras|pyqt5|python-qt4|sip4|kdeclarative|kwayland|kwayland-integration|plasma-framework|breeze|kwin|plasma-integration|skrooge|qqc2-desktop-style|gammaray)$'

Making it available to users

Never land Qt after Wednesday unless it is absolutely required for some bug fixes or something. Landing Qt after Wednesday doesn't leave enough time for bug-fixes or stuff before weekend.

  • Test both user edition with /release repo enabled, and dev unstable edition at least with archive link changed to /tmp/unstable instead of /unstable.
  • Once at least 2 days of testing is done, snapshot user and user-lts
  • Undivert the dev unstable and dev stable repos.

Process improvements

  • Document release/lts wrt Qt.
  • FIXME openQA checks?
  • Build arm for experimental editions?

This page was last edited on 21 October 2020, at 09:35. Content is available under Creative Commons License SA 4.0 unless otherwise noted.