X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fwebserver%2Fdeveloper-manual%2Fnewrelease.html;h=f4c69425d19cea818531592176b151b321dc793a;hp=77b2fe440351575d2e9e05fbcaeff2d7d51eb561;hb=61a5d3fc15169d9f6b0c21e3a56d893f4d672eb4;hpb=659cbbc13f413ed0c5dacd4d03060f48eb500011 diff --git a/doc/webserver/developer-manual/newrelease.html b/doc/webserver/developer-manual/newrelease.html index 77b2fe44..f4c69425 100644 --- a/doc/webserver/developer-manual/newrelease.html +++ b/doc/webserver/developer-manual/newrelease.html @@ -1,368 +1,150 @@ - -
When we release versions of Privoxy, - our work leaves our cozy secret lab and has to work in the cold - RealWorld[tm]. Once it is released, there is no way to call it - back, so it is very important that great care is taken to ensure - that everything runs fine, and not to introduce problems in the - very last minute. -
So when releasing a new version, please adhere exactly to the - procedure outlined in this chapter. -
The following programs are required to follow this process: - ssh, - gmake (GNU's version of make), autoconf, git, - a web browser. -
First you need to determine which version number the release will have. - Privoxy version numbers consist of three numbers, - separated by dots, like in X.Y.Z (e.g. 3.0.0), where: -
X, the version major, is rarely ever changed. It is increased by one if - turning a development branch into stable substantially changes the functionality, - user interface or configuration syntax. Majors 1 and 2 were - Junkbuster, and 3 is the first stable - Privoxy release. -
- Y, the version minor, represents the branch within the major version. - At any point in time, there are two branches being maintained: - The stable branch, with an even minor, say, 2N, in which no functionality is - being added and only bug-fixes are made, and 2N+1, the development branch, in - which the further development of Privoxy takes - place. - This enables us to turn the code upside down and inside out, while at the same time - providing and maintaining a stable version. - The minor is reset to zero (and one) when the major is incremented. When a development - branch has matured to the point where it can be turned into stable, the old stable branch - 2N is given up (i.e. no longer maintained), the former development branch 2N+1 becomes the - new stable branch 2N+2, and a new development branch 2N+3 is opened. -
Z, the point or sub version, represents a release of the software within a branch. - It is therefore incremented immediately after each software release. - - The point version is reset to zero when the minor changes. -
Stable branches work a little differently, since there should be - little to no development happening in such branches. Remember, - only bugfixes, which presumably should have had some testing - before being committed. Stable branches will then have their - version reported as 0.0.0, during that period - between releases when changes are being added. This is to denote - that this code is not for release. Then - as the release nears, the version is bumped according: e.g. - 3.0.1 -> 0.0.0 -> 3.0.2. -
In summary, the main Git trunk is the development branch where new - features are being worked on for the next stable series. This should - almost always be where the most activity takes place. There is always at - least one stable branch from the trunk, e.g now it is - 3.0, which is only used to release stable versions. - Once the initial *.0 release of the stable branch has been done, then as a - rule, only bugfixes that have had prior testing should be committed to - the stable branch. Once there are enough bugfixes to justify a new - release, the version of this branch is again incremented Example: 3.0.0 - -> 3.0.1 -> 3.0.2, etc are all stable releases from within the stable - branch. 3.1.x is currently the main trunk, and where work on 3.2.x is - taking place. If any questions, please post to the devel list - before committing to a stable branch! -
Developers should remember too that if they commit a bugfix to the stable - branch, this will more than likely require a separate submission to the - main trunk, since these are separate development trees within Git. If you - are working on both, then this would require at least two separate check - outs (i.e main trunk, and the stable release branch, - which is v_3_0_branch at the moment). -
The following must be done by one of the - developers prior to each new release. -
Make sure that everybody who has worked on the code in the last - couple of days has had a chance to yell "no!" in case - they have pending changes/fixes in their pipelines. Announce the - freeze so that nobody will interfere with last minute changes. -
Update the code status (CODE_STATUS="xxx") in configure.in to one of - "alpha", "beta" or "stable". -
Rebuild configure and GNUMakefile to make sure the updated values are being used. -
$ autoheader && autoconf # rebuild configure - $ ./configure # rebuild GNUmakefile |
make dok-release to update the sgml documentation source files. -
If action file processing has changed and is not backward-compatible, - make sure the "for-privoxy-version=x.y.z" minimum version number in - default.action.master has been updated: -
{{settings}} + + + + |
+
until
+
+ while quilt push; do quilt refresh; done+ |
+
succeeds. Then you can
+
+ quilt pop -a+ |
+
Now add a new entry to the debian/changelog representing the new version:
+
+ dch -v 3.0.34-1+ |
+
and describe what you did before and don't forget to git commit all changes.
+Now you can build the package on the local machine using
+
+ gbp buildpackage -us -uc+ |
+
You should check for warnings using
+
+ lintian -iI ../build-area/privoxy_3.0.34-1_amd64.changes+ |
+
Maybe rebuild the package in different defined cowbuilder environments like
+
+ sudo cowbuilder --build --basepath /var/cache/pbuilder/base.cow ../build-area/privoxy_3.0.34-1.dsc+ |
+
And try to run autopackage testing suite on the result:
+
+ autopkgtest /var/cache/pbuilder/result/privoxy_3.0.34-1_amd64.changes -s -- schroot sid+ |
+
Or just push the changes to salsa.debian.org, where a CI pipeline is defined for the package, that builds + and tests it.
+If everything is okay, run cowbuilder with i386 and amd64 environments for current Debian stable release and + build privoxy_3.0.34-1_i386.deb and privoxy_3.0.34-1_amd64.deb. Then sign both files:
+
+ gpg --detach-sign --armor privoxy_3.0.34-1_i386.deb + gpg --detach-sign --armor privoxy_3.0.34-1_amd64.deb+ |
+
Create a README file containing the recent block from debian/changelog and upload the two packages, the two + signatures and the README to a freshly created folder below + https://sourceforge.net/projects/ijbswa/files/Debian/
+For building just a git snapshot build the following workflow may be useful. First create a build + environment, for this you may have to run the following commands:
+
+ sudo apt install build-essential devscripts + sudo apt-get build-dep privoxy+ |
+
After this enter the checked out privoxy git tree and check that all (new) build dependencies are met:
+
+ dpkg-checkbuilddeps+ |
+
If something is missing, just add it using
+
+ sudo apt install foobar+ |
+
Now you may update debian/changelog, especially the version number using
+
+ dch+ |
+
and finally build the package:
+
+ debuild -us -uc -b+ |
+
If everything went okay, you may find the resulting Debian package in the parent directory.
+You may want to clean up the build tree using
+
+ debian/rules clean+ |
+
And maybe repair some artefacts using one or both of the following commands:
+
+ git reset --hard + git clean -fd+ |
+
First, make sure that you have freshly exported the right version + into an empty directory. (See "Building and releasing packages" above).
+The OSXPackageBuilder module generates OS X installer packages supporting all Macs running OS X 10.4 and + above. Obtain it from Git as follows into a folder parallel to the exported privoxy source:
+
+ git clone ssh://git@git.privoxy.org:23/git/OSXPackageBuilder.git+ |
+
The module contains complete instructions on its usage in the file OS X Package Builder + HOWTO.txt.
+Once the package(s) have been generated, you can then upload them directly to the Files section of the + Sourceforge project in the Macintosh (OS X) folder. Each new version release of Privoxy should have a new + subfolder created in which to store its files. Please ensure that the folder contains a readme file that makes + it clear which package is for which version of OS X.
+Update the www/privoxy port and submit a diff upstream. For details see the FreeBSD Porter's + Handbook.
+After the package is ready, it is time to upload it and go through the release steps. The upload is done at + SourceForge after logging in.
+Now just follow the prompts. Be sure to add any appropriate Release notes. You should see your freshly + uploaded packages in "Step 2. Add Files To This Release". Check the appropriate + box(es). Remember at each step to hit the "Refresh/Submit" buttons! You should now see + your file(s) listed in Step 3. Fill out the forms with the appropriate information for your platform, being sure + to hit "Update" for each file. If anyone is monitoring your platform, check the + "email" box at the very bottom to notify them of the new package. This should do + it!
+If you have made errors, or need to make changes, you can go through essentially the same steps, but select + Edit Release, instead of Add Release.
+When all (or: most of the) packages have been uploaded and made available, send an email to the announce mailing list, Subject: "Announcing Privoxy + X.Y.Z $CODE_STATUS". Be sure to include the download location, the release notes and the Changelog. Also, post an updated News item on the project + page Sourceforge, and update the Home page and docs linked from the Home page (see below). Other news sites and + release oriented sites, such as Freshmeat, should also be notified.
+Then update the source code for the next version to be released:
+Increment the version number and change the code status to "UNRELEASED" in configure.in
+Rebuild configure ("autoheader && autoconf") and + GNUMakefile ("./configure")
+"make dok-release" to update the sgml documentation + source files.
+Commit all your changes.
+