6 * Figure out whether a release is worthwhile to do.
7 * Analyze the previous release branch to see if anything should have been
9 * Collect changes and assemble tentative release notes.
10 * Identify previous release branch point
11 * Check commit logs between previous branch point and now for
12 notable changes worth mentioning
13 * Create a new issues_closed_for_X.Y.md file
14 * Include notable entries from here in the release notes.
15 * Analyze APIs between previous release branch and master to produce list of
16 changes (added/removed/updated funcs, etc...), and detect backwards compat
18 * https://github.com/lvc/abi-compliance-checker
19 * See also `abi-check.sh`
20 * If the new release is not backwards compatible, then this is a MAJOR release.
21 * Mention removed features in ChangeLog
22 * Consider re-adding backwards compatible support, through symbol
23 aliases and appropriate entries in json-c.sym
24 * Be sure any new symbols are listed in json-c.sym as part of
25 the _new_ release version.
26 * Update the AUTHORS file
28 PREV=$(git tag | tail -1)
29 ( git log -r ${PREV}..HEAD | grep Author: | sed -e's/Author: //' ; cat AUTHORS ) | sort -u > A1
32 * Exclude mentioning changes that have already been included in a point
33 release of the previous release branch.
35 * Update ChangeLog with relevant notes before branching.
37 * Check that the compile works on Linux - automatic through Travis
38 * Check that the compile works on NetBSD
39 * Check that the compile works on Windows - automatic through AppVeyor
43 Start creating the new release:
45 PREV=$(git tag | tail -1)
48 release=0.$((${PREV#*.} + 1))
50 git clone https://github.com/json-c/json-c json-c-${release}
55 # Note, the build directory *must* be entirely separate from
56 # the source tree for distcheck to work properly.
57 cmake -DCMAKE_BUILD_TYPE=Release ../json-c-${release}
61 Make any fixes/changes *before* branching.
64 git checkout -b json-c-${release}
69 Update the version in json_c_version.h
70 Update the version in CMakeLists.txt (VERSION in the project(...) line)
72 Update the set_target_properties() line in CmakeLists.txt to set the shared
73 library version. Generally, unless we're doing a major release, change:
78 git commit -a -m "Bump version to ${release}"
80 If we're doing a major release (SONAME bump), also bump the version
81 of ALL symbols in json-c.sym.
82 See explanation at https://github.com/json-c/json-c/issues/621
83 More info at: https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
87 Generate the doxygen documentation:
89 (cd ../distcheck && make doc)
90 cp -r -p ../distcheck/doc/{html,Doxyfile} doc/.
91 rm doc/Doxyfile # Remove generated file w/ hardcoded paths
93 git commit doc -m "Generate docs for the ${release} release"
97 Create the release tarballs:
101 tar -czf json-c-${release}.tar.gz -X excludes json-c-${release}
103 echo 'doc/*.cmake' >> excludes
104 echo 'doc/CMakeFiles' >> excludes
105 echo 'doc/Makefile' >> excludes
106 echo 'doc/Doxyfile' >> excludes
107 echo 'doc/html' >> excludes
108 tar -czf json-c-${release}-nodoc.tar.gz -X excludes json-c-${release}
115 git tag -a json-c-${release}-$(date +%Y%m%d) -m "Release json-c-${release}"
117 git push origin json-c-${release}
122 Go to Amazon S3 service at:
123 https://console.aws.amazon.com/s3/
125 Upload the two tarballs in the json-c_releases/releases folder.
126 * Expand "Permissions", pick "Grant public-read access"
127 * Expand "Properties", ensure "Standard" storage class is picked.
129 Logout of Amazon S3, and verify that the files are visible.
130 https://s3.amazonaws.com/json-c_releases/releases/index.html
132 ===================================
134 Post-release checklist:
138 Add new section to ChangeLog for ${release}+1
140 Use ${release}.99 to indicate a version "newer" than anything on the branch:
141 Update the version in json_c_version.h
142 Update the version in CMakeLists.txt
144 Update RELEASE_CHECKLIST.txt, set release=${release}+1
146 Add a new empty section to the json-c.sym file, for ${release}+1
148 Update the set_target_properties() line in CmakeLists.txt to match the release branch.
150 git commit -a -m "Update the master branch to version ${release}.99"
155 Update the gh-pages branch with new docs:
158 git checkout json-c-${release}
161 git clone -b gh-pages https://github.com/json-c/json-c json-c-pages
163 mkdir json-c-${release}
164 cp -R ../json-c-${release}/doc json-c-${release}/.
165 git add json-c-${release}
166 rm json-c-current-release
167 ln -s json-c-${release} json-c-current-release
168 git commit -a -m "Add the ${release} docs."
171 # Add/change links to current release.
173 git commit -a -m "Update the doc links to point at ${release}"
179 Update checksums on wiki page.
182 openssl sha -sha256 json-c*gz
183 openssl md5 json-c*gz
185 Copy and paste this output into the wiki page at:
186 * https://github.com/json-c/json-c/wiki
187 * https://github.com/json-c/json-c/wiki/Old-Releases
191 Send an email to the mailing list.