Improve polygon contour name merging
[geda-pcb/pcjc2/v2.git] / README.snapshots
blobff5b8842b477509bc3243e9061f2831cb0971742
2 This documents what is done to create a pcb release.  The releases now
3 are done by branching the sources, fixing up the release version number
4 in the branch and then tagging the release branch sources.  The motivation
5 for a branch rather than a tag is to make it easier to deal with setting
6 the snapshot version number in the documentation, distfile, and the
7 about dialog box.  
9 NOTE:  Use the DISTCHECK_CONFIGURE_FLAGS to be able to run the distcheck
10 target with lesstif as the built gui with
11 DISTCHECK_CONFIGURE_FLAGS="--with-gui=lesstif" if you want to also verify
12 that distcheck works with the lesstif HID.
14 FIXME -- we need to build where we explicitly add all the export HID's
15          and where we explicitly build with each of the gui HID's (including
16          batch).  This is needed to catch the case of missing src/hid/*/hid.conf
17          files.
19 After following the steps below,
20 upload the 'pcb-$VERSION.tar.gz' file to the sourceforge file release system
23 To make a pcb release do the following:
25 =)      Make sure you have up to date sources
26         git fetch
27         git rebase origin/master
29         # note, you could also create a new local branch with
30         # git checkout -b do_release_from_here origin/master but need to make
31         # sure we still get the correct branch and tag on the main server eventually
33 =)      # make sure it makes distfiles ok: (have to build before doing distcheck so
34         pcb gets built so it can create some of the images in the doc directory)
36         # clean up, and build with the GTK HID
37         gmake distclean
38         ./autogen.sh
39         ./configure --disable-update-desktop-database --disable-update-mime-database
40         gmake
41         gmake distcheck
43         # check the build with lesstif HID.  The /usr/pkg parts should be replaced with
44         # whatever flags (if any) are needed to find lesstif on your system.
45         setenv DISTCHECK_CONFIGURE_FLAGS '--with-gui=lesstif CPPFLAGS=-I/usr/pkg/include CFLAGS=-I/usr/pkg/include LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib"'
46         gmake distcheck
48         # check the build with the batch HID
49         setenv DISTCHECK_CONFIGURE_FLAGS '--with-gui=batch'
50         gmake distcheck
51         unsetenv DISTCHECK_CONFIGURE_FLAGS
53 =)      commit and push any changes which were needed to fix 'distcheck' problems.
54         Of course if the changes aren't related then they should be committed in 
55         multiple commits.
57         git commit <files>
58         git push <files>
60 =)      update the ChangeLog with './utils/git2cl -O > ChangeLog'
62 =)      update the NEWS file with some sort of release notes
63         summary.  You can find the number of commits with something like
65             awk '/^2008-11-28/ {print "Changes: " c ; exit} /^20[01][0-9]/ {c++}' ChangeLog
67         or
69             git rev-list [first SHA-1 hash]..[last SHA-1 hash] --count
71         Commit and push NEWS and ChangeLog.
72         git commit NEWS ChangeLog
73         git push
75 =)      if this is a major release, then branch:
77         1. Create the release branch and push to the remove
78                 git branch pcb-20091103
79                 git push origin pcb-20091103
81         3. FIX_ME [fix up this step.  what shall we do with the version
82            on the trunk?  We are about to run out of letters!] 
83            On the trunk, update configure.ac to update the version
84                 for example 1.99x after releasing 1.99w
85                 git checkout master
86                 vi configure.ac
87                 git commit configure.ac
88                 git push
90         4. On the release branch, update configure.ac to update the version
91                 for example 20091103_ALPHA.  Now pre-release snapshots can be made.
92                 git checkout pcb-20091103
94         5. If desired tag an alpha release:
95                 git checkout pcb-20091103
96                 ./autogen.sh
97                 git tag -a pcb-20091103-ALPHA
98                 git checkout pcb-20091103-ALPHA
99                 ./autogen.sh && ./configure --enable-maintainer-mode \
100                         --disable-update-desktop-database \
101                         --disable-update-mime-database && \
102                         gmake && gmake distcheck
104         6. When the release branch is ready to go,  update configure.ac to
105            set the final release version.  Then tag the release.
106                 git checkout pcb-20091103
107                 vi configure.ac
108                 git commit configure.ac
109                 ./autogen.sh
110                 git commit -a  # after we expunge all generate files from git, we can skip this one
111                 git push
112                 git tag -a pcb-20091103-RELEASE
113                 git push --tags
114                 git checkout pcb-20091103-RELEASE
115                 ./autogen.sh && ./configure --enable-maintainer-mode \
116                         --disable-update-desktop-database \
117                         --disable-update-mime-database && \
118                         gmake clean && gmake && gmake distcheck
119         
120         7. Create checksums
122                 openssl sha1 pcb-20091103.tar.gz > pcb-20091103.cksum
123                 openssl md5 pcb-20091103.tar.gz >> pcb-20091103.cksum
124                 openssl rmd160 pcb-20091103.tar.gz >> pcb-20091103.cksum
125                 echo "File size (bytes):" >> pcb-20091103.cksum
126                 wc -c pcb-20091103.tar.gz >> pcb-20091103.cksum
128         8. Create a new file release for pcb with a release name of
129            "pcb-20091103" (for pcb-20091103).
131            https://sourceforge.net/projects/pcb  (you must be logged in to sourceforge)
133            Click "Develop".
134            Click "Project Admin->File Manager".
135            Left click on "pcb" to expand it.
136            Right click on "pcb" and choose "New folder".  Use "pcb-20091103" as the name.
137            Copy out the section from NEWS which are the release notes for this release.
138            Place the into a file called pcb-20091103.txt.
140            Right click on "pcb-20091103" and choose "Uploads here".
141            Click "Upload File" and upload the .tar.gz, .txt and .cksum files.
143            Left click on pcb-20091103.txt and check the "Release notes" box and
144            click "Save".
146            Left click on pcb-20091103.tar.gz to bring up a form to edit the file
147            details.  Change the label to "source code release".  Check all the platforms
148            except for windows.  Select the release notes file and click "Save".
150            Left click on pcb-20091103.cksum to bring up a form to edit the file
151            details.  Change the label to "checksum file", select the release notes file,
152            and click "Save".
154 =)      return to your regularly scheduled trunk development
155                 git checkout master
157 =)      if this is a patch release, then simply make desired changes to the branch, and
158                 git checkout pcb-20091103
159                 # make changes
160                 ./autogen.sh
161                 git commit
162                 git tag -a pcb-20091103-PATCH001
163                 git push
165 =)      gmake distclean ; ./autogen.sh &&./configure && gmake distcheck
167 =)      Update the web pages.  In particular, update news.shtml and index.shtml
168         and then rebuild the corresponding .html files.