summaryrefslogtreecommitdiff
path: root/release/process.mdwn
blob: 13661fe17f0b55f918e7b695d87a2313de430cfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
[[!meta title="Release Process"]]
[[!meta author="DanielSilverstone"]]
[[!meta date="2016-11-19T12:05:07Z"]]


[[!toc]]

# Releasing a new version of NetSurf and libraries

First the libraries and tool sources must be created (only if they
need an update) and then the browser itself.

# Release the buildsystem

The buildsystem must be released first.

The buildsystem follows exactly the [[same process|release/corebuildsystem]]
as releasing any other component except there is an additional step.

Because this is the buildsystem and provides the makefiles for all the
other source builds you must go to the CI server and ensure the
source-buildsystem job has successfully run and produced output in
<http://ci.netsurf-browser.org/builds/sources/>

# Release libnspsl

The public suffix list library should be updated for each release
after the buildsystem. 

Delete the 'public_suffix_list.dat' file and run make, this will cause a
fresh copy to be downloaded and converted. You will need the correct
perl modules installed for this step.

The [[release process|release/corebuildsystem]] is then the same as
any other module using the core buildsystem.

# Release libutf8proc

May have to update to upstream unless upstream have added a pkg-config file

The [[release process|release/corebuildsystem]] is largely similar otherwise.

# Other core buildsystem based libraries

libraries using the core buildsystem all useing the same [[release process|release/corebuildsystem]].

The libraries to release in order:

-   libwapcaplet
-   libnslog
-   libnsutils
-   libparserutils
-   libcss
-   libhubbub
-   libdom
-   libnsbmp
-   libnsgif
-   librosprite
-   libsvgtiny
-   nsgenbind
-   libnsfb
-   libpencil
-   librufl


# Releasing NetSurf

NetSurf itself does not use the core buildsystem and has its own [[release process|release/netsurfbuildsystem]]


# Releasing the all source

clone the all repo

    git clone ssh://nsgit@git.netsurf-browser.org/netsurf-all.git

ensure ther submodules are initialised

    git submodule init

output will be something like

    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

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

    git submodule add git://git.netsurf-browser.org/libnslog.git
    vi .gitmodules
    git commit -a -m 'Add libnslog submodule'

if adding a submodule the Makefile may require editing to build the library or utility

for each submodule listed above the correct revision must be set. A utility target is provided in the makefile

    make checkout-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/<version number>

make the distribution tarball and check its contents

    make dist

The git-archive-all module is needed for the dist step from

    https://github.com/Kentzo/git-archive-all

Next do a dry run push

    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/netsurf-all.git
     * [new tag]         release/3.7 -> release/3.7

If that verifies as correct

    git push && git push --tags

and the release tag is pushed, too late now so be careful and check!

# Bugtracker

The netsurf release version must be marked as released in mantis and the
next development version added if its not already present