PageRenderTime 244ms CodeModel.GetById 236ms app.highlight 1ms RepoModel.GetById 5ms app.codeStats 0ms

/jEdit/tags/jedit-4-5-pre1/doc/releasing-jedit.txt

#
Plain Text | 233 lines | 200 code | 33 blank | 0 comment | 0 complexity | e31fe534722b687b88a5a609a4a09fdc MD5 | raw file
  1==================================================
  2Packaging jEdit for release
  3==================================================
  4
  5This document contains instructions on how to create and release jEdit for distribution, with all of the installers.
  6
  7The analogous document for releasing plugins is in the jedit SVN repository under the name "pjo/doc/pjo.txt".
  8
  9Release Workflow
 10================
 11Before you read this document, be sure to read first the README.SRC.txt, in the root source directory. It contains instructions on how to get and set up Apache Ant, what the targets mean, and what you need to build each kind of package.
 12
 13Workflow
 14--------
 15
 161. Execute the BeanShell snippet at the end of this file ("Utilities -> BeanShell -> Evaluate Selection"). This will replace the version tags in this document by actual version numbers for easy copy & paste.
 17
 182. Review http://jedit.svn.sourceforge.net/svnroot/jedit/jEdit/branches/[branch]/doc/CHANGES.txt for formatting errors (like missing newline characters, wrong indentation or empty blocks), fix them and check them in.
 19
 203. Tag the sourcecode for release in the SVN repository by doing
 21        svn copy https://jedit.svn.sourceforge.net/svnroot/jedit/jEdit/branches/[branch] https://jedit.svn.sourceforge.net/svnroot/jedit/jEdit/tags/[tag] -m "Tagging [version] for release."
 22   with the correct version in the second URL and in the commit message
 23
 244. To be sure to work with the exact tagged source, check out the newly tagged source in a new directory by doing
 25        svn checkout https://jedit.svn.sourceforge.net/svnroot/jedit/jEdit/tags/[tag]
 26   no matter where. You will find the source in a subfolder [tag] where you executed the command
 27
 285. Copy build.properties from your jEdit source directory to the newly created [tag] source directory if needed. If you don't have it, then create it if needed. You find a template called build.properties.sample in the root directory.
 29   To give an example, in build.properties I customized the following properties:
 30    - wine.executable=wine
 31    - winepath.executable=winepath
 32    - innosetup.compiler.executable=/home/vampire/.wine/drive_c/Programme/Inno Setup 5/ISCC.exe
 33    - innosetup.via.wine=true
 34    - gpg.secring=/home/vampire/.gnupg/secring.gpg
 35   You may not need to customize the same properties than me, e. g. if you are on Windows you don't need to set the three wine properties.
 36   For further information about what you need to build the source, please read README.SRC.txt in the sources root directory.
 37
 386.1. Build the distribution files by doing
 39          ant dist
 40     in the [tag] directory
 41     In the newly created directory [tag]/dist you find [ifdevel]8[/ifdevel][iffinal]13[/iffinal] files:
 42      - jedit[version]manual-a4.pdf
 43      - jedit[version]manual-letter.pdf
 44      - jedit[version]source.tar.bz2
 45      - jedit[version]install.jar
 46      - jedit-[version]-noarch-1sao.tgz
 47      - jedit_[version]_all.deb
 48      - jedit[version]install.exe or jedit[version]-dist-win-finish.tar.bz2
 49      - jedit[version]install.dmg or jedit[version]-dist-mac-finish.tar.bz2
 50[iffinal]      - Packages
 51      - Packages.gz
 52      - Packages.bz2
 53      - Release
 54      - Release.gpg
 55[/iffinal]
 566.2. If you have jedit[version]-dist-win-finish.tar.bz2 in your [tag]/dist folder you probably don't run a Windows box and don't have wine installed and set up, so please hand over this file to someone (e. g. <Bj??rn "Vampire" Kautler> Vampire@jEdit.org) who does and ask him to unpack the file and run
 57          ant dist-win-finish
 58     and to hand over the resulting file jedit[version]install.exe to you. The requirements for this are described in README.SRC.txt
 59
 606.3. If you have jedit[version]-dist-mac-finish.tar.bz2 in your [tag]/dist folder you probably don't run a Mac OS X box, so please hand over this file to someone (e. g. Bj??rn "Vampire" Kautler <Vampire@jEdit.org>) who does and ask him to unpack the file and run
 61          ant dist-mac-finish
 62     and to hand over the resulting file jedit[version]install.dmg to you. The requirements for this are described in README.SRC.txt
 63
 646.4. After you received the final distribution files jedit[version]install.exe and jedit[version]install.dmg you can delete jedit[version]-dist-win-finish.tar.bz2 and jedit[version]-dist-mac-finish.tar.bz2
 65[iffinal]
 666.5. If you don't have Release.gpg, you didn't have setup a GPG secring. Either create a GPG secring, run
 67          ant dist-sign-deb-Release
 68     , upload the public key to a public keyserver and make sure your key is mentioned on http://jedit.org/index.php?page=download&platform=unix#option_two so the users know the key is valid for signing jEdit releases. Alternatively send Release to someone whose key is already mentioned on the download page (e. g. Bj??rn "Vampire" Kautler <Vampire@jEdit.org>) and ask him to put Release in the dist folder, to run
 69          ant dist-sign-deb-Release
 70     and to hand over the resulting file Release.gpg to you. The second way is preferable if you only create a release once or from time to time as a new key means the user will get confused and has to react for verifying and installing the new key.
 71[/iffinal]
 727. - Connect to the SourceForge servers via one of the methods described in https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download
 73   - Add the sub-folder "[version]" under "/home/frs/project/j/je/jedit/jedit[ifdevel]-devel[/ifdevel]"
 74   - Upload the 8 final distribution files [iffinal]starting with "jedit" [/iffinal]to the newly created folder on the SourceForge servers
 75[iffinal]   - Upload the 5 remaining distribution files not starting with "jedit" to the folder "/home/frs/project/j/je/jedit" on the SourceForge servers.
 76[/iffinal]
 778. - Go to https://sourceforge.net/projects/jedit/files/jedit[ifdevel]-devel[/ifdevel]/[version]/
 78   - Make the following settings for each file after clicking on the respective "i" icon
 79        - jedit_[version]_all.deb
 80            - Download Button: Debian Installer
 81            - Default Download For: <none>
 82        - jedit[version]source.tar.bz2
 83            - Download Button: Source Package
 84            - Default Download For: <none>
 85        - jedit[version]install.jar
 86            - Download Button: Java based Installer
 87            - Default Download For: [ifdevel]<none>[/ifdevel][iffinal]linux, bsd, solaris, others[/iffinal]
 88        - jedit[version]manual-letter.pdf
 89            - Download Button: Manual in Letter Paper size
 90            - Default Download For: <none>
 91        - jedit[version]manual-a4.pdf
 92            - Download Button: Manual in A4 Paper size
 93            - Default Download For: <none>
 94        - jedit[version]install.dmg
 95            - Download Button: Mac OS X Installer
 96            - Default Download For: [ifdevel]<none>[/ifdevel][iffinal]mac[/iffinal]
 97        - jedit[version]install.exe
 98            - Download Button: Windows Installer
 99            - Default Download For: [ifdevel]<none>[/ifdevel][iffinal]windows[/iffinal]
100        - jedit-[version]-noarch-1sao.tgz
101            - Download Button: Slackware Installer
102            - Default Download For: <none>
103
1049. Update the website in the following places and also update this state in SVN:
105    - Open sftp://<your sf username>,jedit@web.sourceforge.net/home/groups/j/je/jedit/htdocs/download.html e. g. in jEdit with installed FTP plugin and update the website for the new release, means the filenames, filesizes and amount of pages in the User's Guides
106    - Open sftp://<your sf username>,jedit@web.sourceforge.net/home/groups/j/je/jedit/htdocs/jEdit-version.txt e. g. in jEdit with installed FTP plugin and update the versions in the file, which is needed by the LatestVersion Plugin
107    - Open sftp://<your sf username>,jedit@web.sourceforge.net/home/groups/j/je/jedit/htdocs/CHANGES44.txt e. g. in jEdit with installed FTP plugin and copy the contents of [tag]/doc/CHANGES.txt to this file
108    - Open sftp://<your sf username>,jedit@web.sourceforge.net/home/groups/j/je/jedit/htdocs/index.php e. g. in jEdit with installed FTP plugin and update the version number and the Last Site Update date
109    - Open sftp://<your sf username>,jedit@web.sourceforge.net/home/groups/j/je/jedit/htdocs/devel.html e. g. in jEdit with installed FTP plugin and add a line for [version] in the Release Schedule
110
11110. Update the plugin wizard
112     - Go to http://plugins.jedit.org/wiz/release_add.php?package_id=24
113     - Enter the Version "[version]"
114     - Switch "Head of Branch" to "[ifdevel]devel[/ifdevel][iffinal]main[/iffinal]"
115     - Check the "Remove" checkbox for the jEdit dependency
116     - Switch the "Low Version" of the JDK dependency to "1.6 [jdk-1.6]"
117     - Click "Update Dependencies"
118     - Click "Create Release"
119
12011. Send an announcement eMail to the jEdit-announce list. The announcement should contain some announcing text and in the end the contents of [tag]/doc/CHANGES.txt for this release.
121    You have to be set up to be able to post to jEdit-announce list.
122    The mail should automatically get forwarded to the jedit-users list, but for that you have to be subscribed to that list too.
123
12412. Ask Vampire <Vampire@jEdit.org> (Vampire0@#jEdit@chat.freenode.net) to update the topic of the IRC Channel
125
12613. Spread the word about the new release whereever possible e. g.:
127     - On Twitter
128     - On Google+
129     - On Facebook
130     - Send a mail to the Community Growth Hacker of SourceForge for promotion of the release, currently this is Elizabeth Naramore <elizabethn@sourceforge.net>
131     - Send a mail to Heise for inclusion in the weekly Heise Developer Snapshots at developer@ix.de
132
13314. Delete the [tag] folder
134
13515. Update the version number on the release branch
136     - Add the following section to doc/CHANGES.txt
137
138{{{ Version [nextVersion]
139
140Thanks to  for contributing to this release.
141
142{{{ Bug Fixes
143
144
145}}}
146{{{ Miscellaneous
147
148
149}}}
150{{{ API Changes
151
152
153}}}
154{{{ Editing
155
156
157}}}
158
159}}}
160     - Update the build number in org/gjt/sp/jedit/jEdit.java getBuild() method to
161            return "[nextBuild]";
162     - Update the version and build number in build.xml to
163            <property name="jedit.version"
164                      value="[nextVersion]" />
165            <property name="jedit.build.number"
166                      value="[nextBuild]" />
167     - Submit your changes by doing
168            svn commit -m "Update the version number to [nextVersion]"
169       in the root source directory
170
171====================================================================================================
172import java.util.regex.Pattern;
173file = new File(new File(buffer.getPath()).getParentFile(), "../org/gjt/sp/jedit/jEdit.java");
174fileChars = new char[file.length()];
175reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
176reader.read(fileChars, 0, fileChars.length);
177pattern = Pattern.compile("public static String getBuild\\(\\)[^}]+return \"([^\"]{11})\"");
178matcher = pattern.matcher(new String(fileChars));
179matcher.find();
180build = matcher.group(1);
181major = Integer.parseInt(build.substring(0,2));
182minor = Integer.parseInt(build.substring(3,5));
183beta = Integer.parseInt(build.substring(6,8));
184bugfix = Integer.parseInt(build.substring(9,11));
185branch = major + "." + minor + ".x";
186tag = "jedit-"
187      + major
188      + "-" + minor
189      + (beta != 99 ? "-pre" + beta : (bugfix != 0 ? "-" + bugfix : ""));
190version = major
191          + "." + minor
192          + (beta != 99 ? "pre" + beta : (bugfix != 0 ? "." + bugfix : ""));
193nextVersion = major
194              + "." + minor
195              + (beta != 99 ? "pre" + (beta + 1) : (beta == 99 ? "." + (bugfix + 1) : ""));
196nextBuild = String.format("%02d.%02d.%02d.%02d",
197                          new Object[] { Integer.valueOf(major),
198                                         Integer.valueOf(minor),
199                                         Integer.valueOf(beta == 99 ? beta : beta + 1),
200                                         Integer.valueOf(beta == 99 ? bugfix + 1 : bugfix) });
201SearchAndReplace.setBeanShellReplace(false);
202SearchAndReplace.setIgnoreCase(false);
203SearchAndReplace.setRegexp(false);
204SearchAndReplace.setSearchFileSet(new CurrentBufferSet());
205buffer.beginCompoundEdit();
206SearchAndReplace.setSearchString("[branch]");
207SearchAndReplace.setReplaceString(branch);
208SearchAndReplace.replaceAll(view);
209SearchAndReplace.setSearchString("[tag]");
210SearchAndReplace.setReplaceString(tag);
211SearchAndReplace.replaceAll(view);
212SearchAndReplace.setSearchString("[version]");
213SearchAndReplace.setReplaceString(version);
214SearchAndReplace.replaceAll(view);
215SearchAndReplace.setSearchString("[nextVersion]");
216SearchAndReplace.setReplaceString(nextVersion);
217SearchAndReplace.replaceAll(view);
218SearchAndReplace.setSearchString("[nextBuild]");
219SearchAndReplace.setReplaceString(nextBuild);
220SearchAndReplace.replaceAll(view);
221SearchAndReplace.setRegexp(true);
222SearchAndReplace.setBeanShellReplace(true);
223SearchAndReplace.setSearchString("\\[ifdevel\\]((?:.|\n)*?)\\[/ifdevel\\]");
224SearchAndReplace.setReplaceString(beta != 99 ? "_1" : "");
225SearchAndReplace.replaceAll(view);
226SearchAndReplace.setSearchString("\\[iffinal\\]((?:.|\n)*?)\\[/iffinal\\]");
227SearchAndReplace.setReplaceString(beta != 99 ? "" : "_1");
228SearchAndReplace.replaceAll(view);
229textArea.replaceSelection("Versions replaced\n");
230buffer.endCompoundEdit();
231====================================================================================================
232
233:wrap=soft:maxLineLen=0:folding=indent: