summaryrefslogtreecommitdiffstats
path: root/comm/third_party/json-c/RELEASE_CHECKLIST.txt
diff options
context:
space:
mode:
Diffstat (limited to 'comm/third_party/json-c/RELEASE_CHECKLIST.txt')
-rw-r--r--comm/third_party/json-c/RELEASE_CHECKLIST.txt179
1 files changed, 179 insertions, 0 deletions
diff --git a/comm/third_party/json-c/RELEASE_CHECKLIST.txt b/comm/third_party/json-c/RELEASE_CHECKLIST.txt
new file mode 100644
index 0000000000..e8d2943a8a
--- /dev/null
+++ b/comm/third_party/json-c/RELEASE_CHECKLIST.txt
@@ -0,0 +1,179 @@
+
+# Release checklist:
+
+## Pre-release tasks
+
+* Figure out whether a release is worthwhile to do.
+* Analyze the previous release branch to see if anything should have been
+ applied to master.
+* Collect changes and assemble tentative release notes.
+ * Identify previous release branch point
+ * Check commit logs between previous branch point and now for
+ notable changes worth mentioning
+ * Create a new issues_closed_for_X.Y.md file
+ * Include notable entries from here in the release notes.
+ * Analyze APIs between previous release branch and master to produce list of
+ changes (added/removed/updated funcs, etc...), and detect backwards compat
+ issues.
+ * https://github.com/lvc/abi-compliance-checker
+ * If the new release is not backwards compatible, then this is a MAJOR release.
+ * Mention removed features in ChangeLog
+ * Consider re-adding backwards compatible support, through symbol
+ aliases and appropriate entries in json-c.sym
+ * Be sure any new symbols are listed in json-c.sym as part of
+ the _new_ release version.
+ * Update the AUTHORS file
+
+ PREV=$(git tag | tail -1)
+ ( git log -r ${PREV}..HEAD | grep Author: | sed -e's/Author: //' ; cat AUTHORS ) | sort -u > A1
+ mv A1 AUTHORS
+
+ * Exclude mentioning changes that have already been included in a point
+ release of the previous release branch.
+
+* Update ChangeLog with relevant notes before branching.
+
+* Check that the compile works on Linux - automatic through Travis
+* Check that the compile works on NetBSD
+* Check that the compile works on Windows - automatic through AppVeyor
+
+## Release creation
+
+Start creating the new release:
+ release=0.16
+ git clone https://github.com/json-c/json-c json-c-${release}
+
+ mkdir distcheck
+ cd distcheck
+ # Note, the build directory *must* be entirely separate from
+ # the source tree for distcheck to work properly.
+ cmake -DCMAKE_BUILD_TYPE=Release ../json-c-${release}
+ make distcheck
+ cd ..
+
+Make any fixes/changes *before* branching.
+
+ cd json-c-${release}
+ git branch json-c-${release}
+ git checkout json-c-${release}
+
+------------
+
+Using ${release}:
+ Update the version in json_c_version.h
+ Update the version in CMakeLists.txt (VERSION in the project(...) line)
+
+Update the set_target_properties() line in CmakeLists.txt to set the shared
+library version. Generally, unless we're doing a major release, change:
+ VERSION x.y.z
+to
+ VERSION x.y+1.z
+
+ git commit -a -m "Bump version to ${release}"
+
+If we're doing a major release (SONAME bump), also bump the version
+ of ALL symbols in json-c.sym.
+ See explanation at https://github.com/json-c/json-c/issues/621
+ More info at: https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
+
+------------
+
+Generate the doxygen documentation:
+
+ (cd ../distcheck && make doc)
+ cp -r -p ../distcheck/doc/{html,Doxyfile} doc/.
+ rm doc/Doxyfile # Remove generated file w/ hardcoded paths
+ git add -f doc
+ git commit doc -m "Generate docs for the ${release} release"
+
+------------
+
+Create the release tarballs:
+
+ cd ..
+ echo .git > excludes
+ tar -czf json-c-${release}.tar.gz -X excludes json-c-${release}
+
+ echo 'doc/*' >> excludes
+ tar -czf json-c-${release}-nodoc.tar.gz -X excludes json-c-${release}
+
+------------
+
+Tag the branch:
+
+ cd json-c-${release}
+ git tag -a json-c-${release}-$(date +%Y%m%d) -m "Release json-c-${release}"
+
+ git push origin json-c-${release}
+ git push --tags
+
+------------
+
+Go to Amazon S3 service at:
+ https://console.aws.amazon.com/s3/
+
+Upload the two tarballs in the json-c_releases/releases folder.
+ When uploading, use "Standard" storage class, and make the uploaded files publicly accessible.
+
+Logout of Amazon S3, and verify that the files are visible.
+ https://s3.amazonaws.com/json-c_releases/releases/index.html
+
+===================================
+
+Post-release checklist:
+
+ git checkout master
+
+Add new section to ChangeLog for ${release}+1
+
+Use ${release}.99 to indicate a version "newer" than anything on the branch:
+ Update the version in json_c_version.h
+ Update the version in CMakeLists.txt
+
+Update RELEASE_CHECKLIST.txt, set release=${release}+1
+
+Add a new empty section to the json-c.sym file, for ${release}+1
+
+Update the set_target_properties() line in CmakeLists.txt to match the release branch.
+
+ git commit -a -m "Update the master branch to version ${release}.99"
+ git push
+
+------------
+
+Update the gh-pages branch with new docs:
+
+ cd json-c-${release}
+ git checkout json-c-${release}
+ cd ..
+
+ git clone -b gh-pages https://github.com/json-c/json-c json-c-pages
+ cd json-c-pages
+ mkdir json-c-${release}
+ cp -R ../json-c-${release}/doc json-c-${release}/.
+ git add json-c-${release}
+ rm json-c-current-release
+ ln -s json-c-${release} json-c-current-release
+ git commit -a -m "Add the ${release} docs."
+
+ vi index.html
+ # Add/change links to current release.
+
+ git commit -a -m "Update the doc links to point at ${release}"
+
+ git push
+
+------------
+
+Update checksums on wiki page.
+
+ cd ..
+ openssl sha -sha256 json-c*gz
+ openssl md5 json-c*gz
+
+Copy and paste this output into the wiki page at:
+ https://github.com/json-c/json-c/wiki
+
+------------
+
+Send an email to the mailing list.