summaryrefslogtreecommitdiff
path: root/doc/RELEASING
blob: 562dc7a910a04e9bcd72ba23968f72580c928c1a (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
RELEASING
=========

When making a new release;


== Add version defines + macros if applicable ==

 - If it's a new stable release that increments the Cogl minor version
   remember to add a new COGL_VERSION_1_X define to cogl/cogl-version.h
   and update cogl/cogl-macros.h accordingly


== Update the documentation ==

 - Update the NEWS with:

     - new feature details, bugs fixed, acknowledgements
     - Use git shortlog -n -s to get the list of authors
     - The following bash snippet may help with extracting the list of
       bugs closed:
     - Grep the source code for "XXX: ONGOING BUG" and add a
       section about workarounds for un-resolved upstream bugs.

URLS=$(git log $1|grep bugzilla|sort|uniq)
for i in $URLS
do
  ID=$(echo $i|cut -d'=' -f2)
  TITLE=$(wget --quiet -O - $i|grep -e '<title>.*</title>'|sed -e 's/<title>Bug [0-9]\+ &ndash; \(.*\)<\/title>/\1/')
  echo "    #$ID - $TITLE"
done

     - README: dependencies, any behavioural changes relevant to
       developers;

   then commit the changes.


== Update the package version ==

 - Read the release comments in configure.ac
    - Bump cogl_1_micro_version to the next even number
    - Don't change the 2.0 version number
    - Update the libtool versioning
    - Update the cogl_release_status status to "release" or "snapshot"
      as appropriate.
    - commit the changes.


== Test the release ==

 - Verify that you don't have uncommitted changes; both:

     $ git diff HEAD

   and:

     $ git diff --stat master origin/master

   should be empty.

 - Clean your work directory:

     $ git clean -xdf

   This ensures that you don't have stale files lying around.

 - Run:

     $ ./autogen.sh --enable-gtk-doc --enable-profile --enable-gles1 \
                    --enable-gles2 --enable-gl --enable-xlib-egl-platform \
                    --enable-wayland-egl-platform --enable-glx \
                    --enable-wayland-egl-server --enable-cogl-gst
     $ make all
     $ make install

   And verify that the code builds and installs from a clean Git snapshot.

 - Run checks including running the conformance tests:

    $ make check

 - Test with Clutter:

   Since we haven't migrated all the Cogl unit tests from Clutter yet, you
   should now build Clutter against Cogl and run the conformance tests:

     $ ./autogen.sh
     $ make all
     $ make test

 - Test cross-compiling for Windows:

   Please use the build/mingw/mingw-fetch-dependencies.sh with a fresh
   build directory to make sure that all of the download links still
   work.


== Make the release ==

 - Run:

     $ make release-publish

   Note: if you want to break this into multiple steps see
   build/autotools/Makefile.am.release for details. You may prefer to first
   `make release-check` and then manually use `make release-tag`, `make
   release-upload` and `make release-message`.

   `make release-publish` will:

     - do sanity checks on the build
     - distcheck the release
     - tag the repository with the version number
     - upload the tarball to the remote server (needs SSH account)


== Prepare for the next development branch ==

 - Bump cogl_1_micro_version to the next odd number
 - Revert cogl_release_status to "git"

 - Push the branch and then the tag, e.g.:

     $ git push origin master
     $ git push origin 1.7.0

 - Announce release to the waiting world on the blog and mailing lists. Use
   the template printed by `make release-publish`.