diff --git a/PACKAGING_FRAMEWORKS b/PACKAGING_FRAMEWORKS index 5acd021..5c9619f 100644 --- a/PACKAGING_FRAMEWORKS +++ b/PACKAGING_FRAMEWORKS @@ -1,86 +1,86 @@ This is a quick description on how KDE Frameworks packaging is done. [ ] Ensure that the tags from the last release have been pushed! [ ] Ensure that the version numbers were updated long ago ("step1") [ ] Ensure everything is green at https://build.kde.org/job/Frameworks/view/Platform%20-%20SUSEQt5.12/ https://build.kde.org/job/Frameworks/view/Platform%20-%20SUSEQt5.14/ [ ] Check for regressions in oss-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/list?q=kcodecs https://bugs.chromium.org/p/oss-fuzz/issues/list?q=karchive https://bugs.chromium.org/p/oss-fuzz/issues/list?q=kimageformats [ ] ssh -A pkgframeworks@capona.kde.org, and from there: Update version file with the correct version number. Edit config, ensure dry_run=0 cd ~/release-tools/ ./increase_frameworks_version.sh step1 rm -rf sources versions REVISIONS_AND_HASHES l10n tags.git mv changelog-5* old_changelogs/ cd ../src && ./kdesrc-build --src-only && cd ../release-tools && ./list_frameworks.sh && ./update_l10n.sh ; ./increase_frameworks_version.sh step2 # takes 17 minutes [ ] In case this detected new frameworks, check that step1/step2 worked. [ ] Pack the sources: ./make_rc_tag.sh # takes 7 minutes, cannot be done from a detached or resumed screen (because of signed tags) [ ] Locally, ensure the rc tag compiles (to avoid e.g. a bad .po file breaking the build) - $ edit extragear/utils/kdesrc-build/kf5-frameworks-build-include to add tag v5.12.0-rc1 in module-set frameworks + $ edit extragear/utils/kdesrc-build/kf5-frameworks-build-include to add tag v5.xx.0-rc1 in module-set frameworks $ kdesrc-build frameworks # takes 52 minutes [ ] All good, pack it up and upload it to ftpadmin@milonia.kde.org. ./pack_all.sh && ./upload_all.sh && ./generate_changelog.sh # takes 7 minutes. Upload cannot be done from a resumed screen! [ ] Clean up the changelog [ ] Generate announcement page and put it in SVN already, so translators can work on it ./create_announcement_page.sh [ ] Locally, run $ ./grab_from_scripty.sh && ./mail_release_team.sh * To update a tag+tarball after making fixes (grabbing all changes from master) (this is the lazy version of the next solution, it re-commits all po files so it's not as good) ./make_rc_tag.sh kconfigwidgets && ./pack.sh kconfigwidgets && ./upload_all.sh (and re-run ./create_sources_inc if already done) * To update a tag+tarball by cherry-picking a single fix With a script: ./make_updated_tarball.sh newrc|patchrelease The manual way: git checkout local_release (if no such branch exists, there are no translations, just pull master and tag, or make a branch for cherry-picking) git fetch ; git cherry-pick -x sha1 (or git merge origin/master) # don't use reset --hard for reverts, it would lose the translations commit git tag -a vx.y.z-rcN -m "" ; git push --tags Update N in tags.git, check version file, ./pack.sh ; ./upload_all.sh (and re-run ./create_sources_inc if already done) * cat versions/* > REVISIONS_AND_HASHES, if you want to send it all-in-one-go after updates Several days later: [ ] 8 hours before the release: $ ssh ftpadmin@milonia.kde.org "chmod a+rx ~/stable/frameworks/5.xx ; ls -l ~/stable/frameworks" [ ] ./tag_all.sh && ./create_sources_inc # takes 5 minutes (not from a resumed screen, for the git push in inqlude-data) cd ../www ; vi index.php # remove the old entry svn commit [ ] Update the version numbers right away in master [before grab_from_scripty below]. vi version ./increase_frameworks_version.sh step1 [ ] Email changelog text to kde-devel@kde.org and kde-core-devel@kde.org, and another mail to kde-announce@kde.org, by running, locally: $ ./grab_from_scripty.sh && ./mail_announcement.sh [ ] Post to the dot on https://dot.kde.org/content/contribute-story [ ] Increase KF_DISABLE_DEPRECATED_BEFORE_AND_AT= in all frameworks (to be tested locally !) git_st_all perl -pi -e 's/0x054200/0x054600/ if (/KF_DISABLE/)' */CMakeLists.txt for f in */CMakeLists.txt; do cd `dirname $f` ; git ci CMakeLists.txt -m 'GIT_SILENT increase KF_DISABLE_DEPRECATED_BEFORE_AND_AT' ; git push ; cd .. ; done To make a patchlevel release: * Use the cherry-pick procedure above. Write a short changelog by hand, run "./create_sources_inc x.y.z", commit the new info file. Edit info/kde-frameworks-*.php: mention the "known bugs" and include the new info file under the main one (in its own >(tee -a $logfile) exec 2> >(tee -a $logfile >&2) . version . config export LC_ALL=en_US.UTF-8 # E.g. 'October 06, 2014' date=`date +'%B %d, %Y'` # If automatic date isn't what you want, set this instead # Remember to comment it out afterwards # date='October 07, 2014' releasetools=$PWD # version=x.y.z ==> dir=x.y # Patch-level releases go into the same directory, since they are typically just one framework dir=`echo $version | sed -e 's/\.[0-9]$//'` if ! ssh-add -l >/dev/null ; then exit 1 fi if ! test -f changelog-$version; then echo "Missing changelog-$version file" exit 1 fi cd ../www -svn up +git up cd $releasetools failures="" ####### # Now create the announcement page cd ../www/ || exit 1 if [ -d .svn ]; then echo "Convert the repository to git first"; exit 1 ; fi git pull rm -f announcements/kde-frameworks-$version.php cp announcements/kde-frameworks-template.top announcements/kde-frameworks-$version.php sed -e 's,<,\<,g ; s,>,\>,g' $releasetools/changelog-$version | $releasetools/Markdown.pl | $releasetools/make_changelog_translatable.pl >> announcements/kde-frameworks-$version.php cat announcements/kde-frameworks-template.bottom >> announcements/kde-frameworks-$version.php qtver=`perl -pe 'print $1 if (/QT_VERSION (.*?)\.0\)/); $_=""' ~/src/frameworks/kcoreaddons/CMakeLists.txt` echo "Required Qt version: $qtver" perl -pi -e "s/\"5.2\"/\"$qtver\"/" announcements/kde-frameworks-$version.php perl -pi -e "s/5\.xx\.0/$version/g" announcements/kde-frameworks-$version.php perl -pi -e "s/INSERT_DATE_HERE/$date/" announcements/kde-frameworks-$version.php perl -pi -e "s/DIRECTORY/$dir/" announcements/kde-frameworks-$version.php # Catch some past bug if grep 'version = "5\.52\.0"' announcements/kde-frameworks-$version.php; then failures="announcements/kde-frameworks-$version.php $failures" fi git add "announcements/kde-frameworks-$version.php" git commit -m "Feat: Add KDE Framework $version announcement" git push ######## # Make release announcement translatable cd ~/l10n-kf5-scripts svn up l10nentry=" release_files[\"$version\"] = [\"kde-frameworks-$version.php\"]"; perl -pi -e "\$_ = '$l10nentry' . \"\\n\" . \$_ if (/NEW_FRAMEWORK_RELEASE/);" generate_release_data.py svn ci -m "add frameworks-$version to generate_release_data.py" if [ -n "$failures" ]; then echo "ERROR: the following steps failed: $failures" fi