From bf47a3ac4dbc5f747e180ffce77ba122bc3eb88a Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 16 Oct 2017 15:23:06 +0100 Subject: update with things found doing the 3.7 release --- release/process.mdwn | 194 +++++++++++++++++++++++++++++---------------------- 1 file changed, 112 insertions(+), 82 deletions(-) diff --git a/release/process.mdwn b/release/process.mdwn index 9243a7c..1dbba81 100644 --- a/release/process.mdwn +++ b/release/process.mdwn @@ -17,6 +17,9 @@ buildsystem is first and has an extra step Then libraries using the core buildsystem +- libnspsl +- libnslog +- libnsutils - libwapcaplet - libparserutils - libcss @@ -29,8 +32,6 @@ Then libraries using the core buildsystem - libsvgtiny - nsgenbind - libutf8proc -- libnsutils -- libnspsl - libpencil - librufl @@ -51,7 +52,7 @@ Release for projects using buildsystem -------------------------------------- We perform all releases from git simply by pushing a -release/ tag +release/>version number< tag Before creating the tag you should do some basic checks @@ -62,12 +63,12 @@ Any files that should not be put in the distribution archive must be placed in the .gitattributes file, as a minimum it should contain attributes for the .gitignore and gitattributes files e.g. -`.gitignore export-ignore` -`.gitattributes export-ignore` + .gitignore export-ignore + .gitattributes export-ignore in your clone do -`git branch -vv` + git branch -vv ensure the top commit looks right and is what you want to tag, for extra paranoia check the .git/config to ensure the origin is the correct @@ -77,23 +78,22 @@ etc. just **ensure** you are where you want the release to be. Create the tag with -`git tag -s -m 'Official Release' release/` + git tag -s -m 'Official Release' release/>version number< Ensure the version number in the tag matches the component version. Now run -`make dist` + make dist if you get -Makefile:45: \*\*\* Component Version "1.0" and GIT tag version "1.1" do -not match. Stop. + Makefile:45: \*\*\* Component Version "1.0" and GIT tag version "1.1" do not match. Stop. you did not get the tag and version numbers lined up, go back, remove your local tag with -`git tag -d release/` + git tag -d release/<bad version> and try again @@ -106,18 +106,21 @@ start over with fresh commits. Next do a dry run push -`git push -n --tags` + git push -n --tags ensure this shown the correct repo and the release tag something like -`[gitano] Welcome to the NetSurf Gitano instance.` -`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git) -` * [new tag]         release/1.0 -> release/1.0` + [gitano] Welcome to the NetSurf Gitano instance. + Counting objects: 1, done. + Writing objects: 100% (1/1), 800 bytes | 0 bytes/s, done. + Total 1 (delta 0), reused 0 (delta 0) + To ssh://nsgit@git.netsurf-browser.org/libutf8proc.git + * [new tag] release/1.3.1-3 -> release/1.3.1-3 If that verifies as correct -`git push --tags` -`git push` + git push --tags + git push and the release tag is pushed, too late now so be careful and check! @@ -126,142 +129,169 @@ Releasing NetSurf ensure you are at the commit from which you want to create the release -`git branch -vv` + git branch -vv Remember that if you are releasing X.Y then amiga calls that X.Y+1 so don't be confused and do update amiga stuff. check the resources for the frontends you are releasing are up to date -- copyright years -- amiga/pkg/netsurf.readme and amiga/pkg/netsurf\_os3.readme -- windows/res/installer.nsi +- credits file copyright years (at a minimum) + - !NetSurf/Resources/en/credits.html,faf + - !NetSurf/Resources/it/credits.html,faf + - !NetSurf/Resources/nl/credits.html,faf +- licence file copyright years (at a minimum) + - !NetSurf/Resources/en/licence.html,faf + - !NetSurf/Resources/it/licence.html,faf + - !NetSurf/Resources/nl/licence.html,faf +- frontends/amiga/pkg/netsurf.readme +- frontends/amiga/pkg/netsurf\_os3.readme +- windows/res/installer.nsi create a branch release/ and switch to it -`git branch release/3.1` -`git checkout release/3.1` + git branch release/3.8 + git checkout release/3.8 update desktop/version.c to something like -`#include "testament.h"` - -`const char * const netsurf_version = "3.6 (25th April 2016)";` -`const int netsurf_version_major = 3;` -`const int netsurf_version_minor = 6;` + #include "testament.h" + + const char * const netsurf_version = "3.8 (25th April 2016)"; + const int netsurf_version_major = 3; + const int netsurf_version_minor = 8; + +update frontends/amiga/version.c along the same lines + +commit to the branch -update amiga/version.c along the same lines + git commit -m 'Update version files for release' -once you are sure everything is correct, committed push it to the repo +once you are sure everything is correct and committed push it to the repo -`git push origin release/3.1` + git push origin release/3.8 finally tag the branch for release -`git tag -s -m 'Official Release' release/` + git tag -s -m 'Official Release' release/<version number> Next do a dry run push -`git push -n --tags` + git push -n --tags ensure this shown the correct repo and the release tag something like -`[gitano] Welcome to the NetSurf Gitano instance.` -`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git) -` * [new tag]         release/3.1 -> release/3.1` + [gitano] Welcome to the NetSurf Gitano instance. + To ssh://nsgit@git.netsurf-browser.org/netsurf.git + * [new tag] release/3.7 -> release/3.7 If that verifies as correct -`git push --tags` + git push --tags and the release tag is pushed, too late now so be careful and check! Next the branch must be merged back to master. -`git checkout master` -`git merge -s ours heads/release/3.1` + git checkout master + git merge -s ours heads/release/3.7 -Then edit desktop/version.c ready for the next release cycle +Then edit desktop/version.c and frontends/amiga/version.c ready for the next release cycle -`git add desktop/version.c` -`git commit -m 'update version info for next development cycle'` + git add desktop/version.c frontends/amiga/version.c + git commit -m 'Update version for next development cycle' finally push master -`git push origin master` + git push origin master -Please do ensure you \*thoroughly\* check your work at each step as -mistakes are hard to fix once pushed. +Please do ensure you *thoroughly* check your work at each step as mistakes are hard to fix once pushed. Releasing the all source ------------------------ clone the all repo -`git clone `[`ssh://nsgit@git.netsurf-browser.org/netsurf-all.git`](ssh://nsgit@git.netsurf-browser.org/netsurf-all.git) + git clone ssh://nsgit@git.netsurf-browser.org/netsurf-all.git ensure ther submodules are initialised -`git submodule init` + git submodule init output will be something like -`Submodule 'buildsystem' () registered for path 'buildsystem'` -`Submodule 'libcss' () registered for path 'libcss'` -`Submodule 'libdom' () registered for path 'libdom'` -`Submodule 'libhubbub' () registered for path 'libhubbub'` -`Submodule 'libnsbmp' () registered for path 'libnsbmp'` -`Submodule 'libnsfb' () registered for path 'libnsfb'` -`Submodule 'libnsgif' () registered for path 'libnsgif'` -`Submodule 'libparserutils' () registered for path 'libparserutils'` -`Submodule 'libpencil' () registered for path 'libpencil'` -`Submodule 'librosprite' () registered for path 'librosprite'` -`Submodule 'librufl' () registered for path 'librufl'` -`Submodule 'libsvgtiny' () registered for path 'libsvgtiny'` -`Submodule 'libwapcaplet' () registered for path 'libwapcaplet'` -`Submodule 'netsurf' () registered for path 'netsurf'` -`Submodule 'nsgenbind' () registered for path 'nsgenbind'` + Submodule 'buildsystem' (git://git.netsurf-browser.org/buildsystem.git) registered for path 'buildsystem' + Submodule 'libcss' (git://git.netsurf-browser.org/libcss.git) registered for path 'libcss' + Submodule 'libdom' (git://git.netsurf-browser.org/libdom.git) registered for path 'libdom' + Submodule 'libhubbub' (git://git.netsurf-browser.org/libhubbub.git) registered for path 'libhubbub' + Submodule 'libnsbmp' (git://git.netsurf-browser.org/libnsbmp.git) registered for path 'libnsbmp' + Submodule 'libnsfb' (git://git.netsurf-browser.org/libnsfb.git) registered for path 'libnsfb' + Submodule 'libnsgif' (git://git.netsurf-browser.org/libnsgif.git) registered for path 'libnsgif' + Submodule 'libnspsl' (http://git.netsurf-browser.org/libnspsl.git) registered for path 'libnspsl' + Submodule 'libnsutils' (http://git.netsurf-browser.org/libnsutils.git/) registered for path 'libnsutils' + Submodule 'libparserutils' (git://git.netsurf-browser.org/libparserutils.git) registered for path 'libparserutils' + Submodule 'libpencil' (git://git.netsurf-browser.org/libpencil.git) registered for path 'libpencil' + Submodule 'librosprite' (git://git.netsurf-browser.org/librosprite.git) registered for path 'librosprite' + Submodule 'librufl' (git://git.netsurf-browser.org/librufl.git) registered for path 'librufl' + Submodule 'libsvgtiny' (git://git.netsurf-browser.org/libsvgtiny.git) registered for path 'libsvgtiny' + Submodule 'libutf8proc' (http://git.netsurf-browser.org/libutf8proc.git/) registered for path 'libutf8proc' + Submodule 'libwapcaplet' (git://git.netsurf-browser.org/libwapcaplet.git) registered for path 'libwapcaplet' + Submodule 'netsurf' (git://git.netsurf-browser.org/netsurf.git) registered for path 'netsurf' + Submodule 'nsgenbind' (git://git.netsurf-browser.org/nsgenbind.git) registered for path 'nsgenbind' ensure the submodules are updated -`git submodule update` + git submodule update -for each submodule listed above the correct revision must be set. A -utility target is provided in the makefile +If a new submodule is required (e.g. new library) it must be added and then the .gitmodules file checked for correctnes. +Once happy commit the changes. Note use the git uri for the submodules not http -`make release-checkout` + git submodule add git://git.netsurf-browser.org/libnslog.git + vi .gitmodules + git commit -a -m 'Add libnslog submodule' -This obtains the most recent release tag for each submodule and checks -it out, equivalent to: +if adding a submodule the Makefile may require editing to build the library or utility -`cd buildsystem` -`git checkout origin/HEAD` -`git checkout $(git describe --abbrev=0 --match="release/*" )` -`cd ..` +for each submodule listed above the correct revision must be set. A utility target is provided in the makefile -once each submodule has been updated in the top level netsurf-all -directory. The modified submodules should then be added ready for commit + make checkout-release -`git add buildsystem libcss libdom libhubbub libnsbmp libnsfb libnsgif libparserutils librosprite libsvgtiny libwapcaplet netsurf nsgenbind` -`git commit -m 'Update for 3.1 release'` +This obtains the most recent release tag for each submodule and checks it out, equivalent to: + + cd buildsystem + git checkout origin/HEAD + git checkout $(git describe --abbrev=0 --match="release/*" ) + cd .. + +once each submodule has been updated in the top level netsurf-all directory. +The modified submodules should then be added ready for commit + + git add buildsystem libcss libdom libhubbub libnsbmp libnsfb libnsgif libparserutils librosprite libsvgtiny libwapcaplet netsurf nsgenbind + git commit -m 'Update submodules for 3.7 release' + +ensure the component version in the Makefile has been updated finally tag the branch for release -`git tag -s -m 'Official Release' release/` + git tag -s -m 'Official Release' release/ + +make the distribution tarball and check its contents + + make dist Next do a dry run push -`git push -n --tags` + git push -n --tags ensure this shown the correct repo and the release tag something like -`[gitano] Welcome to the NetSurf Gitano instance.` -`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git) -` * [new tag]         release/3.1 -> release/3.1` + [gitano] Welcome to the NetSurf Gitano instance. + To ssh://nsgit@git.netsurf-browser.org/netsurf-all.git + * [new tag] release/3.7 -> release/3.7 If that verifies as correct -`git push --tags` + git push && git push --tags and the release tag is pushed, too late now so be careful and check! -- cgit v1.2.3