Go to QuArK Web Site
Snapshots & Distributions
Updated 02 Jul 2022
Upper levels:
QuArK Information Base
4. The Source Code

 4.11. Snapshots & Distributions

 [ Prev - Up - Next ] 

This section describes QuArK distribution policy, tools and methodology.


 Index


 QuArK Release Policy

Peter Brett - 24 Dec 2021   [ Top ] 

QuArK has two types of releases: distributions and snapshots.

  1. Distributions are released through the SourceForge Release System. A distribution consists of the following files:
    •  quark-win32-*version*.exe  - a Nullsoft Scriptable Install System executable containing the QuArK Windows binaries with a bundled Python micro-distribution and the Infobase.
    •  quark-win32-*version*.zip  - a zip archive containing the QuArK Windows binaries with a bundled Python micro-distribution.
    •  quark-src-*version*.zip  - a zip archive containing full exports of the  infobase ,  runtime  and  source  SVN modules.
    •  quark-help-*version*.zip  - a zip archive containing the compiled Infobase.
    You will need to have "Release Technician" permissions on the QuArK SourceForge project to be able to release a distribution. N.B. that version numbers are in the format  #.#.#state#  where 'state' can be one of 'rel', 'beta', or 'alpha'. The numbers before the current state are the major and minor versions, and the number after the state is the release number at that version/state. Examples:
    •  6.4.0alpha1 . Note also that version numbers should be unique.
    •  6.3.0rel4 
  2. Snapshots are released on QuArK's SourceForge webspace. A snapshot consists of the following files:
    •  quark-win32-*date*.zip  - a zip archive containing the QuArK Windows binaries with a bundled Python micro-distribution and the Infobase.
    •  quark-src-*date*.zip  - a zip archive containing full exports of the  infobase ,  runtime  and  source  SVN modules.
    •  quark-help-*date*.zip  - a zip archive containing the compiled Infobase.
    You will need to have access to the QuArK project's SourceForge webspace (i.e. a SourceForge shell account is required) to be able to release a snapshot. N.B. that dates should be in the format  YYYYMMDD .

Typically, QuArK snapshots are released every couple of weeks, although this may vary depending on how much work is being done. If two weeks go by with very little SVN activity, there won't be much point in making a snapshot; equally, if things are frantic, it's likely we'll do snapshots more frequently. Also, it depends how much time the release technicians have available.

Distributions are done on a much less frequent basis, because they require much more work on the part of whoever's doing the releases.


 Releasing a Snapshot

Peter Brett, DanielPharos - 02 Jul 2022   [ Top ] 

Here's the process you might follow to prepare and release a snapshot. Before you'll be able to follow the process outlined below, you'll probably want to read File Release System - Offering Files for Download to know how to work with the SourceForge File Release System.

  1. Make a copy of the  runtime ,  source  and  infobase  directories you want to release.
  2. Build a QuArK binary from this source directory.
  3. Please save the QuArK.map file, if it was generated. This will allow converting from memory addresses back to Delphi functions if a crash is reported.
  4. Put the new QuArK binary in the main runtime directory.
  5. Make sure that there are no stray files in the runtime directory, such as generated .pyc files.
  6. Built the new infobase by running its build.py (with the -local parameter).
  7. Delete the old runtime\help and copy the output from the infobase build there instead (and name this folder correctly!).
  8. Zip up the directory, each to a different zip-file, using the scheme from 'QuArK Release Policy'. No fancy zip-compressions, please! Any plain old unzipper should be able to unzip the files. If possible, use the Windows XP built-in zip functionality; this creates a pretty common denominator zip-file.
  9. Create a new snapshot-release in the QuArK-package using the SourceForge File Release System. Name this release 'snapshot YYYY-MM-DD', and add the zip-files to that new release. Don't forget to set the 'specifics' on the files correctly!
  10. Make sure the new release is 'Active', and visible on the SourceForge website.
  11. You should also e-mail a release announcement to the development mailing list (quark-python@yahoogroups.com), something along the lines of: (I'm going to assume that the date is 31st August 2007)
    Subject: Snapshots 20070831
    
    New QuArK snapshots are now available from
    https://quark.sourceforge.io/
    
    - Compiled Infobase:
    https://quark.sourceforge.io/download/quark-help-20070831.zip
    - Full source code with Python 2.2.3:
    https://quark.sourceforge.io/download/quark-src-20070831.zip
    - Win32 binaries with Python 2.2.3:
    https://quark.sourceforge.io/download/quark-win32-20070831.zip
    
    Read through and summarize the NEWS.txt file to compile a changelog. It's also a good idea only to have four snapshots on the site at a time, so as to be sure not to exceed the storage quota. So delete the oldest snapshots if you need to.

 Releasing a Distribution

Peter Brett, DanielPharos - 24 Dec 2021   [ Top ] 

Once you've decided that you're ready to create a distribution, here's what you do.

  1. First, make sure you have access permissions to work with the SourceForge release system.
  2. Then work out what the version number is for this distribution (see 'QuArK Release Policy'). You'll probably need to discuss with other developers to decide what the state is going to be and whether to increment the the minor version, but for the sake of argument lets say the version number you come up with is '6.4.1beta3'.
  3. Perform a clean check-out from the source code repository, to make sure you're using the latest files without any uncommitted changes.
  4. For a distribution, it's necessary to update the version numbers in the QuArK executable. Go to the Project > Options > Version Info and update the numbers. Don't forget the copyright year, and the pre-release-flag!
    Also, some const's in  QkConsts.pas  need to be updated. Check them out and update them where needed:
      QuArKVersion
      QuArKMinorVersion
      QuArKCopyright
      QuArKUsedCompiler
      QuArKCompileDate
    
    (The  QuArKCompileDate  can be determined by using the date utility in utils\dateutil.)
    Additionally, there's two version indicators at the top in runtime/addons/defaults.qrk that might need updating as well:
      Version
      InternalVersion
    
  5. Make sure that the Project > Options > Directories/Conditionals: Conditional Defines are set correctly.
  6. Most of creating a distribution is similar to creating a snapshot. First, do steps 1 to 3 of 'Releasing a Snapshot', with the difference that you name the files with the '6.4.1beta3' instead of the date, so  quark-win32-20070831  becomes  quark-win32-6.4.1beta3 .
  7. For official releases, the update checker will probably get a new notification so that QuArK will tell people to update. Increasing the  Notification_Main  number under  Startup:config  in the Defaults.qrk file will prevent people that install the new version from receiving this notification too.
  8. Create the installer; see 'Creating the installer'.
  9. It's not a bad idea to run some tests at this point. Test the installer, and make sure the new release does not have any obvious bugs.
  10. Zip up the source and infobase directories just as with the snapshot. Again: no fancy zip-compressions!
  11. Now create the release in SourceForge (see 'Releasing a Snapshot' for more details about this).
  12. Don't forget to add the README.txt file to the release files as well!
  13. Create a news-announcement on the SourceForge-page.
  14. Tell the webmaster of the QuArK website to do the same. (It's probably smart to have similar text in both.)

 Changing the version number

DanielPharos - 24 Dec 2021   [ Top ] 

QuArK's version number is stored in several places within the code:

  1. Delphi project: Project > Options > Version Info.
  2.  QkConsts.pas :
    QuArKVersion
    and
    QuArKMinorVersion
    .
  3.  Defaults.qrk :
    Version
    and
    InternalVersion
    .
  4.  qdictionnary.py :
    Strings
    entry 0.
  5.  NEWS.txt : Add a new header.

Note that it is also stored in the installer script: 'Creating the installer'.


 Creating the installer

DanielPharos - 24 Dec 2021   [ Top ] 

(I'm going to assume that you're running Windows.)

In preparation for creating the installer, you'll need to carry out a couple of preliminary steps.

  1. Download and install Nullsoft Scriptable Install System (NSIS) 2.0 beta 4 or higher from http://nsis.sourceforge.net.
  2. Checkout the  utils  module from QuArK SVN on SourceForge. This module contains the scripts and other files you'll need to be able to create the distribution.

There are several steps in creating the installer:

  1. Create an empty folder (here we'll use "QuArK_installer_files" in the C:\ directory).
  2. Place the QuArK.exe, all runtime files and the help folder in the above folder.
  3. Create an empty folder (here we'll use "QuArK_installer_splash_image" in the C:\ directory).
  4. Copy the install_header.bmp and install_splash.bmp files from utils\nsis-dist-tools folder to the above folder.
  5. Create an empty folder (here we'll use "QuArK_installer_dependencies" in the C:\ directory).
  6. Copy the installer dependencies from utils\nsis-dist-tools folder to the above folder. Currently there are three:
    VC2005SP1MFC
    VC2010SP1
    WindowsInstaller20
    
  7. Open up your local copy of  QuArK.nsi . You'll need to make some changes there:
    1. Set the path to the files to create the installer with to the folder you just created:
      !define BUILDDIR "C:\QuArK_installer_files"
      It is advisable to simply create this directory and copy the files into it manually.
    2. Set the path to the installer images:
      !define SPLASHDIR "C:\QuArK_installer_splash_image"
    3. Set the path to the installers of the dependencies you just created:
      !define DEPENDENCYDIR "C:\QuArK_installer_dependencies"
    4. Update the version numbers and copyright year (if needed) in the follow lines:
      !define INSTALLER_EXENAME "quark-win32-6.6.0beta8.exe"
      !define PRODUCT_COPYRIGHT "Copyright (c) 2022"
      !define PRODUCT_VERSION "6.6.0 Beta 8"
      !define PRODUCT_VERSION_NUMBER "6.6.8.0"
      !define PRODUCT_VERSION_STRING "6.6 (Beta-Release)"
      InstallDir "$PROGRAMFILES\QuArK 6.6.0 Beta 8"
      
  8. If you are making an official release, don't forget to commit the updated  QuArK.nsi  file to the source code repository.
  9. Run the  QuArK.nsi  script. If you selected this option during the NSIS installation, right-clicking the file should provide you with that option. If not, open up NSIS.exe to start program select "MakeNSISW (compiler interface)", and drag the  QuArK.nsi  file into the compiler window, or use the "File > Load Script" method to open this file.
  10. The finished QuArK installer will be placed in the same folder as the  QuArK.nsi  file, ready for distribution!

It is wise to verify the installer actually works.


 Broadcasting the release

DanielPharos - 14 Aug 2021   [ Top ] 

There are some steps only the webmaster can perform, because it involves modifying things on the QuArK website. These are:

  1. Make sure there's a news-announcement on the SourceForge-page.
  2. If this is the new recommended build, mark it as such in SourceForge downloads.
  3. If new game support was added, update the description on SourceForge to reflect the new number of games supported.
  4. If the description was updated, also update it in the website code's META-tag.
  5. If the description was updated, also update it in the main/index-page's text.
  6. Add the new QuArK release to the website's database.
  7. If this is the new recommended build, make sure that indicated on the website download page as well.
  8. Update the download link to the Infobase files on the download page, if needed.
  9. Copy the news-announcement to the website, and publish it there too. Make sure to link to the correct download.
  10. And publish it on the quark-news mailing list as well.
  11. If needed, update the random-news-blurb about the latest release on the forums.
  12. Update the online copy of the Infobase hosted on the website (note that these must be build without the -local parameter!).
  13. Add a message to the update-data on the website, so people using older QuArK version will receive a notification.
  14. Contact any mirror-sites, so they can update their downloads.
  15. Consider updating the release information on QuArK's Wikipedia page.


Copyright (c) 2022, GNU General Public License by The QuArK (Quake Army Knife) Community - https://quark.sourceforge.io/

 [ Prev - Top - Next ]