This section describes what has to be done to create a pcb release.
The releases as of pcb-4.0.0 are done by branching from the "master"
development trunk, fixing up the release version number in the branch
and then tagging the release branch sources.
The motivation for a branch rather than a tag is to make it easier to
deal with setting the release version number in the documentation,
distfile, and the "About" dialog box.
Note:
We need to build where we explicitly add all the export HID's
and where we explicitly build with each of the gui HID's (including
batch).
This is needed to catch the case of missing src/hid/*/hid.conf files.
Do the following steps:
Make sure you have up to date sources:
git fetch git rebase origin/master
Make sure it makes distfiles ok (have to build before doing distcheck
so pcb gets built so it can create some of the images in the doc
directory).
Clean up, and build with the GTK HID (default GUI):
make distclean ./autogen.sh ./configure --disable-update-desktop-database --disable-update-mime-database make make distcheck
Check the build with lesstif HID:
make distclean ./autogen.sh ./configure --disable-update-desktop-database --disable-update-mime-database --with-gui=lesstif make make distcheck
Check the build with the batch HID:
make distclean ./autogen.sh ./configure --disable-update-desktop-database --disable-update-mime-database --with-gui=batch make make distcheck
Commit and push any changes which were needed to fix 'distcheck'
problems.
Of course if the changes aren't related then they should be committed in
multiple commits:
git add <files> git commit -m <message> git push origin master
If this is a bugfix release after 4.0.0, then create a branch named "pcb-4.0.1":
git branch pcb-4.0.1 git checkout pcb-4.0.1
If this is a major feature release after 4.0.0, then create a branch named "pcb-4.1.0":
git branch pcb-4.1.0 git checkout pcb-4.1.0
Note: You can also create a new local branch with:
git checkout -b pcb-4.0.1 origin/master
You need to make sure we still get the correct branch and tag on the
main server eventually.
For this write-up we continue with a bugfix release "pcb-4.0.1".
Update the version numbers in configure.ac and pcb.dox, in case of a
bugfix release 4.0.1 after releasing 4.0.0, or 4.1.0 in case of a major
feature release and push upstream.
vi configure.ac vi doc/doxygen/pcb.dox git add configure.ac doc/doxygen/pcb.dox git commit -m <message> git push origin pcb-4.0.1
Update the doc/pcb.texi file with a description of this release.
Update the NEWS file with some sort of release notes summary.
If needed you can obtain the number of commits with commands like:
awk '/^2008-11-28/ {print "Changes: " c ; exit} /^20[01][0-9]/ {c++}' ChangeLog
or:
git rev-list <first SHA-1 hash>..<last SHA-1 hash> --count
Update the <releases> section of the application data in:
data/pcb.appdata.xml.in
Add a section similar to the example below, in reverse order
(latest on top), and edit for the correct version, date of
release and description.
<release version="4.0.1" date="2017-05-07"> <description> <p>Bug fix release</p> </description> </release>
Update the ChangeLog with:
./utils/git2cl -O > ChangeLog
Commit and push data/pcb.appdata.xml.in, doc/pcb-texi, NEWS and ChangeLog in separate commits:
git add data/pcb.appdata.xml.in git commit -m <message> git push origin pcb-4.0.1 git add doc/pcb.texi git commit -m <message> git push origin pcb-4.0.1 git add NEWS git commit -m <message> git push origin pcb-4.0.1 git add ChangeLog git commit -m <message> git push origin pcb-4.0.1
Create the release tarball with:
make distclean ./autogen.sh ./configure --disable-update-desktop-database --disable-update-mime-database make make distcheck
Create checksums:
openssl sha1 pcb-pcb-4.0.1.tar.gz > pcb-4.0.1.cksum openssl md5 pcb-4.0.1.tar.gz >> pcb-4.0.1.cksum openssl rmd160 pcb-4.0.1.tar.gz >> pcb-4.0.1.cksum echo "File size (bytes):" >> pcb-4.0.1.cksum wc -c pcb-4.0.1.tar.gz >> pcb-4.0.1.cksum
Create a new file release for pcb with a release name of "pcb-4.0.1" (for pcb-4.0.1) on SourceForge.
Note: You must be logged into SourceForge with an admin account.
Update the pcb.geda-project.org web pages.
In particular, update news.shtml and index.shtml and then rebuild the
corresponding .html files using "make".
Copy all required pictures (png), User manual and RefCard (pdf) from the
"doc" directory to a newly made "pcb-4.0.1" directory inside the
"pcbhtdocs" repository.
Do an update on the geda-project wiki "download" page "Download"
Do an update ("release now") on the status of the Launchpad "milestone" for this release.
Do an update on the status of all bug reports of this "milestone" to "Fix Released", except for bug reports marked "Invalid".
Do an announcement on the pcb project page on LaunchPad.
Add a tag at the HEAD of the release branch:
git tag -a -m <msg> <tagname> <SHA1 hash> git push origin --tags
Return to your regularly scheduled trunk development and add a tag at the branch point:
make distclean git checkout master git tag -a -m <msg> <tagname> <SHA1 hash> git push origin --tags
If this is a bug fix release, then simply make desired changes to the master branch by cherry picking the commit(s) with the ChangeLog, NEWS, data/pcb.appdata.xml.in and doc/pcb.texi additions for the release.
git cherry-pick <SHA1 hash> ./autogen.sh ./configure --disable-update-desktop-database --disable-update-mime-database --with-gui=<GUI of choice> make make distcheck git commit -m <message> git push origin master
Do an announcement on the geda-user mailing list and add links for pcb users to find locations to download from or read the release notes.