Document changelogs, start documenting control files
This commit is contained in:
parent
f11bc5f603
commit
bf9356430b
@ -30,10 +30,12 @@ how they work internally. Source packages are bundles of source code with
|
||||
Debian packaging metadata. This metadata describes (among other things) how to
|
||||
build the package, and where the files it installs should go. *Building* a
|
||||
source package will create one or more binary packages, along with some other
|
||||
files that we'll describe as we go.
|
||||
files that we'll describe as we go. Source packages are themselves generated
|
||||
from source *trees* (directories full of source code), which is what packagers
|
||||
work with most of the time.
|
||||
|
||||
To get an idea of how source packages are structured, we'll start with a
|
||||
fairly simple package, ``lxqt-about``::
|
||||
To get an idea of how source trees are structured, we'll start with a fairly
|
||||
simple packaged application, ``lxqt-about``::
|
||||
|
||||
aaron@pkg-builder:~/vmshare/pkg/lxqt-about$ tree
|
||||
.
|
||||
@ -1525,7 +1527,7 @@ Miscellaneous useful things to know about Git
|
||||
enter what Git calls "detached HEAD state". This means that any commits you
|
||||
make will not be integrated into any existing branch, and if you check
|
||||
something else out later, you'll probably have a hard time finding those
|
||||
commits later. If you decide you want to keep the changes you've made, use
|
||||
commits. If you decide you want to keep the changes you've made, use
|
||||
``git switch -c new-branch-name`` to make a new branch with any changes
|
||||
you've made so far.
|
||||
* As a general rule, do not use force-push unless you're fixing commits you
|
||||
@ -1536,4 +1538,218 @@ Miscellaneous useful things to know about Git
|
||||
Foundations of Debian packaging
|
||||
-------------------------------
|
||||
|
||||
TODO
|
||||
Finally, we're to the point where we can start doing some real packaging!
|
||||
There's a lot to take in here, so expect to use this section as a reference to
|
||||
begin with.
|
||||
|
||||
Above, when we discussed the high-level overview of a Debian package, we gave
|
||||
a list of important files in Debian packaging, and what their purpose is. In
|
||||
this section, we'll look much closer at each individual file, how it's
|
||||
formatted, and how to modify it.
|
||||
|
||||
The changelog
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
The changelog records all of the changes that have been made to the package as
|
||||
maintainers update it. It also defines which *distribution* (usually a version
|
||||
of Ubuntu) that the package is designed for, identifies the people who made
|
||||
changes to the package, notes when they changed the package, and defines what
|
||||
*version* the package is.
|
||||
|
||||
Let's look at part of the changelog for the ``lxqt-about`` package::
|
||||
|
||||
lxqt-about (2.2.0-0ubuntu1) questing; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
- Update build dependencies.
|
||||
* Update copyright file.
|
||||
* Update Standards-Version to 4.7.2, no changes needed.
|
||||
|
||||
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 31 Jul 2025 16:14:12 -0500
|
||||
|
||||
lxqt-about (2.1.0-0ubuntu3) plucky; urgency=medium
|
||||
|
||||
* Update Standards-Version to 4.7.1, no changes needed.
|
||||
|
||||
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 21 Feb 2025 16:41:21 -0600
|
||||
|
||||
There's a lot of info here, so let's break this down a bit further::
|
||||
|
||||
(Changelog stanza) (Package name) (Package version) (Target distro)
|
||||
| | | |
|
||||
| +----------+ +-------------+ +----------------+
|
||||
+---\ v v v
|
||||
| lxqt-about (2.2.0-0ubuntu1) questing; urgency=medium <--(Upload urgency)
|
||||
|
|
||||
| * New upstream release. <--(Changelog entry)
|
||||
| - Update build dependencies. <--(Changelog entry sub-point)
|
||||
| * Update copyright file. <--(Changelog entry)
|
||||
| * Update Standards-Version to 4.7.2, no changes needed. <--(Changelog entry)
|
||||
|
|
||||
| -- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 31 Jul 2025 16:14:12 -0500
|
||||
| \------------/ ^ \-----------------------------/
|
||||
| +--+ +-----------+ +-------+
|
||||
| | | |
|
||||
| (Packager name) (Packager email) (Time of upload)
|
||||
+---/
|
||||
|
||||
Changelog stanza
|
||||
|
|
||||
+---\
|
||||
| lxqt-about (2.1.0-0ubuntu3) plucky; urgency=medium
|
||||
|
|
||||
| * Update Standards-Version to 4.7.1, no changes needed.
|
||||
|
|
||||
| -- Simon Quigley <tsimonq2@ubuntu.com> Fri, 21 Feb 2025 16:41:21 -0600
|
||||
+---/
|
||||
|
||||
Let's go over what each of these things are.
|
||||
|
||||
* A changelog *stanza* is a unit of changelog information corresponding to one
|
||||
version of a package. For instance, in the map above, all of the bits of
|
||||
data in the top-most changelog entry corresponds to lxqt-about version
|
||||
2.2.0-0ubuntu1.
|
||||
* The package name is the name of the *source* package. Oftentimes one of the
|
||||
binary packages produced by a source package will have the same name,
|
||||
although this is not guaranteed.
|
||||
* The package version is the version of the source package and all binary
|
||||
packages produced from it. In this example, the ``lxqt-about`` package is at
|
||||
version 2.2.0-0ubuntu1, and when we build it, all of the binary packages
|
||||
built from it will have that same version.
|
||||
* The target distro specifies what OS this package is intended to be installed
|
||||
on. In this changelog entry, ``lxqt-about`` version 2.2.0-0ubuntu1 is
|
||||
intended to run on Ubuntu 25.10 (codenamed "Questing Quokka", and here
|
||||
specified as simply "questing").
|
||||
* The upload urgency is generally not used in Ubuntu. In Debian, it's used to
|
||||
control "migration speed" for managing Debian Unstable and Debian Testing,
|
||||
but Ubuntu's migration system works in a substantially different way and
|
||||
doesn't use this field. We'll look at this closer later on.
|
||||
* Changelog entries specify what was done to the package. Each entry should
|
||||
correspond to a single logical change in the package.
|
||||
* Sometimes, you'll want to go into more detail about a particular change. You
|
||||
can use sub-points for this.
|
||||
* The name, email, and time of upload fields are relatively self-explanatory.
|
||||
The tools you'll use for working with the changelog will fill these in for
|
||||
you.
|
||||
|
||||
Let's try making a change to the changelog. Ensure the ``lubuntu-dev`` window
|
||||
is open and the VM is running, then open QTerminal and change to the
|
||||
``lxqt-about-packaging`` directory::
|
||||
|
||||
cd $HOME/vmshare/pkg/lxqt-about-packaging
|
||||
|
||||
Now that we're here, let's create a new changelog stanza. Run ``dch -i`` to
|
||||
do this. If you're running this for the first time and haven't selected a
|
||||
terminal-based text editor previously, you'll be asked to select an editor. If
|
||||
you know how to use Vim, it's best to pick ``vim.basic`` or ``vim.nox`` here,
|
||||
otherwise ``nano`` is a good choice.
|
||||
|
||||
At this point, you should see the changelog open in the text editor, with text
|
||||
similar to the following displayed at the top::
|
||||
|
||||
lxqt-about (2.2.0-0ubuntu2) UNRELEASED; urgency=medium
|
||||
|
||||
*
|
||||
|
||||
-- Your Name <name@example.com> Wed, 14 Jan 2026 09:53:46 -0600
|
||||
|
||||
As we can see, ``dch`` has generated an entire template changelog for us.
|
||||
There are a couple things worthy of note here:
|
||||
|
||||
* The distribution specified is ``UNRELEASED``. This is a special value that
|
||||
means "the changes listed in this changelog entry haven't been uploaded
|
||||
yet". You will need to change this eventually, we'll cover how later.
|
||||
* The version number is updated by simply incrementing it in the most
|
||||
intuitive way possible. While handy in some situations, usually the version
|
||||
number ``dch`` puts here will be wrong. Version numbers require some care to
|
||||
get right, we'll look at this in more detail later.
|
||||
|
||||
Let's exit the text editor without saving anything. ``dch`` will report
|
||||
``dch: debian/changelog unmodified; exiting.`` This means that the new stanza
|
||||
created by ``dch`` was discarded entirely. This is useful, since it means if
|
||||
you use the ``dch`` command wrong, you can just close the file without saving
|
||||
to undo whatever changes it automatically makes again.
|
||||
|
||||
Now let's create a changelog stanza and put something into it. Run ``dch -i``
|
||||
again, then ensure there is a single space between the ``*`` character and the
|
||||
beginning of the text you type. Then type ``Test change`` here. The changelog
|
||||
should look like this when you're done::
|
||||
|
||||
lxqt-about (2.2.0-0ubuntu2) UNRELEASED; urgency=medium
|
||||
|
||||
* Test change
|
||||
|
||||
-- Your Name <name@example.com> Wed, 14 Jan 2026 09:53:46 -0600
|
||||
|
||||
Now save the file and close it. You'll notice ``dch`` doesn't say anything
|
||||
about the changelog being unmodified. If you look at the start of the
|
||||
changelog with ``head debian/changelog``, you'll see your new changelog stanza
|
||||
is there.
|
||||
|
||||
If you want to open the changelog without changing anything, run ``dch -e``.
|
||||
This is a simpler (and in some ways safer) way to open and edit the changelog
|
||||
than running ``vim debian/changelog`` or similar.
|
||||
|
||||
A lot of the time, you'll probably want to add a new changelog entry to the
|
||||
topmost changelog stanza, rather than creating an entirely new stanza. Use
|
||||
``dch -a`` for this. A new changelog entry will be created at the bottom of
|
||||
the list of entries. (If you want to create a sub-point underneath a changelog
|
||||
entry, it's easiest to just type it in manually. Changelogs are just text
|
||||
files, so anything ``dch`` does can be done manually too, and you can do
|
||||
things ``dch`` isn't capable of too.)
|
||||
|
||||
The last ``dch`` command you'll end up using a lot is ``dch -r``. This
|
||||
"finalizes the changelog for a release". In concrete terms, it will change the
|
||||
distro field from ``UNRELEASED`` to the name of the OS you're doing packaging
|
||||
on (in this case, ``resolute``), and it will update the date and time of the
|
||||
changelog entry to the current date and time.
|
||||
|
||||
The control file
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Control files are slightly confusing, since there are several different things
|
||||
control files can be used for, and they contain slightly different bits of
|
||||
data depending on the use case. We're going to focus on only one type of
|
||||
control file here, the kind used in source packages.
|
||||
|
||||
The control file for ``lxqt-about`` looks like this::
|
||||
|
||||
Source: lxqt-about
|
||||
Maintainer: Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
|
||||
Original-Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org>
|
||||
Uploaders: Alf Gaida <agaida@siduction.org>,
|
||||
ChangZhuo Chen (陳昌倬) <czchen@debian.org>,
|
||||
Andrew Lee (李健秋) <ajqlee@debian.org>
|
||||
Section: x11
|
||||
Priority: optional
|
||||
Build-Depends: debhelper-compat (= 13),
|
||||
libkf6windowsystem-dev,
|
||||
liblxqt2-dev (>= 2.2.0),
|
||||
libx11-dev,
|
||||
qt6-svg-dev
|
||||
Standards-Version: 4.7.2
|
||||
Vcs-Browser: https://git.lubuntu.me/Lubuntu/lxqt-about-packaging
|
||||
Vcs-Git: https://git.lubuntu.me/Lubuntu/lxqt-about-packaging.git
|
||||
Debian-Vcs-Browser: https://salsa.debian.org/lxqt-team/lxqt-about
|
||||
Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/lxqt-about.git
|
||||
Homepage: https://github.com/lxqt/lxqt-about
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: lxqt-about
|
||||
Architecture: any
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: lxqt-about-l10n, lxqt-qtplugin
|
||||
Description: About screen for LXQt
|
||||
The about screen for LXQt
|
||||
.
|
||||
This package contain the LXQt about screen.
|
||||
|
||||
Package: lxqt-about-l10n
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Section: localization
|
||||
Depends: qt6-translations-l10n, ${misc:Depends}
|
||||
Description: Language package for lxqt-about
|
||||
The about screen for LXQt
|
||||
.
|
||||
This package contains the l10n files needed by the lxqt-about.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user