DFSG NEW Queue

DFSG, Licensing & New Packages Team

gtty 0.2.5-1

Package Information

DescriptionRTTY (Radio Teletype) desktop application for Amateur Radio

gtty is an amateur radio RTTY terminal for the Linux and macOS desktop. It decodes Baudot RTTY from a sound card with several demodulators running in parallel, shows the band on a waterfall and an XY tuning scope, transmits by AFSK audio or true FSK keying, controls the transceiver through Hamlib, keeps a logbook, and talks to GridTracker and to loggers that know how to drive fldigi.

MaintainerDebian Hamradio Maintainers <debian-hams@lists.debian.org>
Changed ByChristoph Berg <myon@debian.org>
Sponsormyon@debian.org
Distributionunstable
Architectureany
VCSgit: https://salsa.debian.org/debian-hamradio-team/gtty.git (browse)
Trackerhttps://tracker.debian.org/pkg/gtty
Uploaded1 hour ago

New Package Report

.changes◂
DateSat, 14 Nov 2026 22:57:41 +0100
Sourcegtty
Version0.2.5-1
Changed-ByChristoph Berg <myon@debian.org>
Architecturesource amd64
Distributionunstable
Changelog◂
gtty (0.2.5-1) unstable; urgency=medium
 .
   * Initial release.
.dsc◂
Priorityoptional
Componentmain
Package-Listgtty deb hamradio optional arch=any
Sectionhamradio
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: gtty
Source: https://github.com/gjyoung1974/gtty

Files: *
Copyright:
 2026 gtty contributors
 Gordon Young <gjyoung1974@gmail.com>
License: GPL-3+

Files: debian/*
Copyright:
 (C) Christoph Berg
License: GPL-3+

License: GPL-3+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 On Debian systems, the complete text of the GNU General Public License
 version 3 can be found in "/usr/share/common-licenses/GPL-3".

DFSG Assistant LLM REVIEW 0 blocker, 1 important, 2 minor

This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.

Reviewed 0 hours ago.

Report◂

DFSG NEW review for gtty version 0.2.5-1

Summary

  • Licensing is DFSG-compliant and debian/copyright is accurate: Yes
  • Packaging is of good quality: No
  • Issues: 0 blocker, 1 important, 2 minor
  • debian/watch: version 5
  • debian/copyright: machine-readable
  • Scan before the review: nothing found

Licensing

debian/copyright is DEP-5 (copyright-format 1.0) with a Files: * stanza giving GPL-3+ to the whole tree and a debian/* stanza for Christoph Berg's packaging; the short name matches the project's own statements (LICENSE is verbatim GPL-3, README.md and docs/development.md say GPL-3.0-or-later, metainfo project_license is GPL-3.0-or-later), and the GPL-3 text is left to /usr/share/common-licenses/GPL-3 as copyright-format allows. No file carries its own notice or a different licence, there is no non-free wording, no built or minified file whose source is missing, and no third-party code copied in: the only file that looks like a vendored library, src/core/modem/codec2_compat/kiss_fft.h, is gtty's own two-typedef stand-in for a header libcodec2 omits. The prescan's author check found every holder named.

Packaging

The packaging is modern and close to uploadable: debhelper compat 14 with a bare dh $@, cmake buildsystem, ctest run at build time, desktop file, icon and AppStream metainfo installed, hardening and gzip -9n for reproducibility, no patches, current Standards-Version. The defect that matters is the build configuration: libcurl4-openssl-dev and libcodec2-dev are missing from Build-Depends although CMake probes both and both features are documented, so the Debian binary ships without callbook lookup (the preferences page then reads "This build has no libcurl; lookups are disabled") and without the codec2 decoder engine. Also missing an autopkgtest, and the binary reports version 0.1.0.

Issues

important packaging 1. Build-Depends omits libcurl4-openssl-dev and libcodec2-dev, so the shipped binary has no callbook lookup and no codec2 decoder ◂
  • Files: debian/control:7-17, CMakeLists.txt:29-30, src/gui/prefs_dialog.cpp:431-432, src/core/CMakeLists.txt:38-49
  • Basis: checked, in the package or with a reference tool
  • Evidence: pkg_check_modules(CURL IMPORTED_TARGET libcurl) # optional: callbook lookups (QRZ, HamQTH) and pkg_check_modules(CODEC2 IMPORTED_TARGET codec2) # optional: libcodec2 FSK comparison decoder (neither REQUIRED, so neither is a build failure), with if (!Callbook::available()) adw_action_row_set_subtitle(..., "This build has no libcurl; lookups are disabled");
  • Problem: Neither library is in Build-Depends and no listed build dependency drags either in (apt-cache show libhamlib-dev: Depends: libc6-dev, libhamlib4t64, libhamlib++4t64, libusb-1.0-0-dev), so GTTY_HAVE_CURL and GTTY_HAVE_CODEC2 are never defined and the package is built without two features its own documentation promises: docs/installation.md:107-108 lists libcurl4-openssl-dev for "Callbook lookups (QRZ.com XML, HamQTH)" and libcodec2-dev for "The libcodec2 FSK comparison decoder", and README.md:69-71 advertises callbook lookup unconditionally. Users of the Debian binary get a Callbook preferences page that says lookups are disabled and a decoder bank with one engine fewer, for want of two lines. Both libraries are in the archive (libcurl4-openssl-dev 8.23.0-1, libcodec2-dev 1.2.0-5).
  • Fix: Add libcurl4-openssl-dev and libcodec2-dev to Build-Depends so that the binary carries the callbook client and the codec2 comparison decoder the code, GUI and docs provide for. The codec2 build path needs the src/core/modem/codec2_compat/ shim already in the tree, since Debian's libcodec2 does not ship kiss_fft.h.
minor packaging 2. No debian/tests: the package's own ctest suite is never run after the build ◂
  • Files: tests/CMakeLists.txt:1-20
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/ has no tests/ directory, while tests/CMakeLists.txt registers 21 ctest tests (add_test(NAME ${t} COMMAND ${t})) that dh_auto_test runs once during the build; debian/gitlab-ci.yml only pulls in the salsa-ci pipeline, which runs autopkgtests only if they exist
  • Problem: The tests run only inside the build that produces the upload, so nothing re-tests the package when a library it uses changes (ci.debian.net, migration, reverse-dependency checks). For a new package shipping a test suite that already builds and passes, having no autopkgtest is a gap a sponsor would flag.
  • Fix: Add debian/tests/control with a Tests: ctest stanza (Depends: @, Restrictions: allow-stderr if needed) running ctest --test-dir <builddir>; the GUI-dependent integration tests skip themselves without a display and report SKIP_RETURN_CODE 77.
minor packaging 3. The binary identifies itself as gtty 0.1.0 in a 0.2.5 package (About dialog, fldigi.version, WSJT-X heartbeat, both man pages) ◂
  • Files: CMakeLists.txt:2, src/gui/CMakeLists.txt:10, src/gui/main_window.cpp:1493, packaging/gtty.1:1, packaging/gtty-cli.1:1
  • Basis: checked, in the package or with a reference tool
  • Evidence: project(gtty VERSION 0.1.0 LANGUAGES C CXX) and target_compile_definitions(gtty PRIVATE GTTY_VERSION="${PROJECT_VERSION}"); .TH GTTY 1 "November 2026" "gtty 0.1.0" "User Commands"; GTTY_VERSION is used for adw_show_about_dialog(..., "version", GTTY_VERSION, ...), for the fldigi.version XML-RPC reply and in wsjtx::encodeHeartbeat
  • Problem: Upstream did not bump the cmake project version (nor packaging/changelog, nor data/io.github.gtty.metainfo.xml <release version="0.1.0">) for the 0.2.5 tarball, so the shipped program, its man pages and the version it reports to loggers such as TLF, Not1MM and CQRLOG all say 0.1.0. Users reporting bugs will quote the wrong version, and an AppStream consumer sees a release record that predates the package.
  • Fix: Set the version from the package rather than trusting the source, e.g. an override_dh_auto_configure passing the version in, or a small patch bumping project(gtty VERSION 0.2.5) and the two man pages, and forward the omission upstream.
Verified ◂
  • debian/copyright read in full: DEP-5 header (Format: .../copyright-format/1.0/, Upstream-Name, Source), one Files: * stanza (Copyright 2026 gtty contributors, Gordon Young; License GPL-3+), one Files: debian/* stanza (Christoph Berg, GPL-3+), one stand-alone GPL-3+ paragraph ending in a pointer to /usr/share/common-licenses/GPL-3; no Files-Excluded, no invalid fields.
  • Whole tree inventoried (152 upstream files plus debian/): no source, test, tool, doc or data file carries a per-file copyright line or SPDX/licence notice, so Files: * leaves none unmatched and nothing is mismatched to a stanza; the only licence statements are LICENSE (verbatim GPL-3 text), README.md:306 GPL-3.0-or-later, docs/development.md:91 gtty is free software under the GNU General Public License, version 3 or later, docs/_config.yml:23, packaging/copyright GPL-3.0+ and data/io.github.gtty.metainfo.xml <project_license>GPL-3.0-or-later</project_license> — the GPL-3+ short name in debian/copyright is correct and the GPL-3+ grant is documented by upstream, not merely assumed.
  • src/core/modem/codec2_compat/kiss_fft.h and kiss_fftr.h are not a copy of Mark Borgerding's KISS FFT: the file's own comment calls it a Minimal stand-in for kiss_fft.h, which libcodec2's fsk.h includes ... but which the Debian and Homebrew packages do not ship, containing only struct kiss_fft_state; typedef struct kiss_fft_state* kiss_fft_cfg; — gtty's own code, covered by Files: * GPL-3+.
  • No non-free terms anywhere: the only match for "noncommercially" in the tree is GPL-3 §6c inside LICENSE itself; no CC-*-NC/ND, no "personal use", "evaluation only", field-of-use or no-modification wording.
  • No built artefacts, minified code, bytecode, archives or PDFs: the only binary file is docs/screenshot.png, a screenshot of the running program used in README.md and the wiki; data/io.github.gtty.svg and docs/gtty-logo.svg are plain-text SVG sources; tests/check.h is a 20-line local CHECK/CHECK_EQ macro header, not a vendored test framework.
  • The prescan (dfsg-author-check) reported no file and no un-named holder for this package: every holder it found (gtty contributors, Gordon Young gjyoung1974@gmail.com, Christoph Berg) is named in debian/copyright, so there are no prescan entries to account for individually.
  • There are no patches — debian/patches does not exist and .pc/applied-patches is empty — so the reviewed tree is upstream's own, and nothing in debian/copyright needs to describe a patched-in file.
  • Licences combined in one binary are compatible: GPL-3+ throughout, linked against GTK4 (LGPL-2.1+), libadwaita (LGPL-2.1+), Hamlib (LGPL-2.1+/GPL), PortAudio (MIT), FFTW (GPL-2+), libsamplerate (BSD-2), libsndfile (LGPL-2.1+), SQLite (public domain) and, once enabled, libcurl (curl licence) and codec2 (LGPL-2.1) — all free and all linked as shared libraries.
  • Packaging read in full: debian/control, rules, changelog, source/format (3.0 quilt), gitlab-ci.yml, copyright; there are no install/links/docs/dirs files, maintainer scripts, maintscripts or debian/tests, and debian/rules is a bare %: dh $@.
  • debhelper compat 14: the absent Depends: field in debian/control is correct, since dh_gencontrol writes every relationship substvar itself at that level; dh $@ with the cmake buildsystem runs ctest for dh_auto_test (checked in /usr/share/perl5/Debian/Debhelper/Buildsystem/cmake.pm, sub test), so the 21 unit tests do run during the build and no override_dh_auto_test is needed.
  • Every pkg-config module the build requires is provided by a declared Build-Depends: hamlib (libhamlib-dev), portaudio-2.0 (portaudio19-dev), fftw3f (libfftw3-dev), samplerate (libsamplerate0-dev), sndfile (libsndfile1-dev), sqlite3 (libsqlite3-dev), gtk4>=4.12 (libgtk-4-dev), libadwaita-1>=1.4 (libadwaita-1-dev), glib-2.0 for test_profiles (comes with libgtk-4-dev); cmake and pkgconf are declared, the CMake minimum is 3.20.
  • Standards-Version 4.7.4 against Policy 4.7.4.1 is current (first two components); the changelog entry is unstable, version 0.2.5-1 matches the tarball, and the datestamp's weekday is right.
  • Desktop integration is complete: src/gui/CMakeLists.txt installs the binary to bin, data/io.github.gtty.desktop to share/applications, data/io.github.gtty.svg to share/icons/hicolor/scalable/apps and the metainfo to share/metainfo; the desktop file's Exec=gtty and Icon=io.github.gtty match, and the metainfo's launchable refers to it.
  • Man pages and the upstream changelog are generated with gzip -9n -c (reproducible) and installed to share/man/man1 and share/doc/gtty; the build sets CMAKE_INSTALL_PREFIX=/usr and Debian's flags through dpkg-buildflags, and hardening is on by default.
  • No <!nocheck> Build-Depends, so there is nothing that a DEB_BUILD_OPTIONS=nocheck build would miss; dh_auto_configure passes -DBUILD_TESTING=OFF in that case and the package's own GTTY_BUILD_TESTS option does not break the build.
  • debian/watch is outside this review and was not examined.
  • uscan found upstream releases with debian/watch; a newer upstream version is available (upstream 0.2.7, packaged 0.2.5), which is not a fault of the package.
  • Every pointer of debian/copyright to /usr/share/common-licenses names a file that is there (GPL-3).
Not confirmed ◂
  • data/io.github.gtty.metainfo.xml declares <metadata_license>CC0-1.0</metadata_license> for itself while debian/copyright records the whole tree, that file included, as GPL-3+. If AppStream's metadata_license is a licence grant for the file (as the AppStream specification has it), debian/copyright should mention CC0-1.0 for it, or a dual GPL-3+/CC0. I found no AppStream specification on this system (/usr/share/doc/appstream holds only the Debian changelog and copyright), so I did not report it as an issue; both licences are free either way.
Proposed changes ◂

None.

Uploader's response to the LLM review

The uploader was emailed about the review 0 hours ago.

Back to Dashboard | View all reviews for this package