HOW TO BUILD A LINUX DEB PACKAGE FOR GENERAL RELEASE
====================================================

INSTALL PACKAGE DEVELOPMENT TOOLS
=================================
Ensure that you have the necessary tools installed:

    sudo apt-get install build-essential
    sudo apt-get install fakeroot
    sudo apt-get install devscripts

INSTALL DEPENDENCIES
====================
Check that SDL 2 and it's development files are present.  They are not
installed as standard in all Linux distributions.

    sudo apt-get install libsdl2-2.0
    sudo apt-get install libsdl2-dev

OBTAIN SOURCE CODE
==================
Download the latest release of the source code from the Github Releases Area
(https://github.com/atari800/atari800/releases).  Look for a file with a name
like 'atari800-6.0.0-src.tgz', where 6.0.0 denotes the version.

Unzip the source code.  The contents will go into a directory called
'atari800-6.0.0' or similar, which will be referred to in these notes as the
'atari800' directory.

Do not obtain the source code by cloning the current atari800 repository
because this may have been modified since the last release, and may contain
partially developed and untested code.

UPDATE DEBIAN CHANGELOG
=======================
Update file 'atari800/debian/changelog'.  You can simply edit this manually,
but the system is fussy about the exact format, location of spaces etc., so it
is handy to use the debchange command as follows.

Open a terminal on the atari800 directory.

    debchange

Select an editor from the presented menu.  Debchange guesses a new version
number and other details and enters some new lines into the log for you.  The
top of the file should look something like this:

    atari800 (5.0.0ubuntu1) UNRELEASED; urgency=medium

      *

     -- Cliff <cliff@Inspiron>  Sat, 30 Dec 2023 17:03:52 +0000

Edit these lines as appropriate.  For example:

    atari800 (6.0.0) unstable; urgency=medium

      * New upstream version 6.0.0
      * SDL2 support
      * Packages released via GitHub, Jun 2026:
      * https://github.com/atari800/atari800/releases

    -- Antonin Kral <A.Kral@sh.cvut.cz>  Fri, 19 Jun 2026 17:03:52 +0000

The version number '6.0.0' will be used as part of the name of the package
you are going to build.

Label the release 'unstable'.  This does not mean it is actually unstable, just
that no tests have been performed at this stage to prove otherwise.

You may add as many comments as you wish on lines beginning with two spaces
and a '*'.

Set urgency to 'low', or 'medium' for major updates.

You should replace your default user information with the name and email
address of the current package maintainer, as identified in
debian/README.debian.

ADJUST CONFIGURATION OPTIONS IN THE DEBIAN RULES FILE
=====================================================
The debian rules file 'atari800/debian/rules' contains the following command
(split over two lines):

	./configure \
		 --with-video=sdl2 --with-sound=sdl2

BUILD THE PACKAGE
=================

    dpkg-buildpackage -B -uc

This configures and compiles atari800 and builds the package.

Look out for warning and error messages. Warnings can usually be ignored,
but you will have to investigate and correct any errors.

If you receive messages about missing dependencies, install them and run
the command again.  For example if libsdl2-2.0 is missing, install it with
the command:

    sudo apt-get install libsdl2-2.0

The dpkg-buildpackage command creates three files and places them in the
parent of the atari800 directory.  They will have names like these:

    atari800_6.0.0_amd64.buildinfo - Checksums and a list of dependencies
                                     in the .deb file.
    atari800_6.0.0_amd64.changes   - Changelog update and checksums for
                                     the .deb and .buildinfo files.
    atari800_6.0.0_amd64.deb       - The .deb package file for release.

'amd64' indicates the architecture of the machine that the build was done on.

If you wish to create packages for several different architectures, you should
copy the atari800 directory to machines with the appropriate architectures and repeat
the build process there.

INSTALL
=======
Some Linux distributions allow you to install packages via the GUI, e.g.:

    <Double Left Click> on the .deb file to install.

or

    <Right Click> and select the appropriate menu item, <Package Install> or similar.

If these methods don't work on your distribution, use the command:

    sudo dpkg -i atari800_6.0.0_amd64.deb

TEST
====
Check that the atari800 command runs the emulator successfully:

    atari800

The command should also work with options, for example:

    atari800 -v
    atari800 -help
    man atari800

UNINSTALL
=========
You can unistall the package with the Software Manager, or the command:

    sudo dpkg --remove atari800

This removes the command and documentation, but leaves the configuration file
.atari800.cfg in place.

ISSUE A PULL REQUEST TO UPDATE THE DEBIAN CHANGELOG IF THIS HAS NOT ALREADY BEEN DONE
=====================================================================================
Enter the new lines you created in atari800/debian/changelog into the master
of this file on Git.  This is just to keep the record intact.

DISTRIBUTION VIA THE GITHUB RELEASES AREA
=========================================
Send the three files created (.buildinfo, .changes and .deb) to the owner of
the Git repository (https://github.com/atari800/atari800).

The owner will post the .deb file to the releases area
(https://github.com/atari800/atari800/releases) for download by users.

This is a shortcut method.  It is quicker than distribution via the Debian
Project.

When a new release is announced on the Atari800 mailing list, anyone in the
community can follow the procedure described in this document and make it
available to users without delay.

DISTRIBUTION VIA THE DEBIAN PROJECT
===================================
Formal distribution via the Debian Project can only be performed by the
package maintainer, a listed Debian member.  The procedure is rigourous in
order to ensure the quality of the software.  Depending on how much free
time the maintainer has it may take many months to complete.

Packages distributed in this manner become available in official repositories.
Users may download and install them using the apt-get command or a software
manager.









