DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: cameractrl 1.0-1

Package Information

DescriptionCamera manual focus overlay

Control the focus and exposure of your Linux phone's cameras with a layer-shell overlay.

This is useful on devices like the Oneplus 6.

MaintainerDebianOnMobile Maintainers <debian-on-mobile-maintainers@alioth-lists.debian.net>
Changed ByGuido Günther <agx@sigxcpu.org>
Sponsorguido@xcpu.ch
Distributionunstable
Architectureany
Closes#1147933
Trackerhttps://tracker.debian.org/pkg/cameractrl
Uploaded21 days ago

New Package Report

.changes◂
Changed-ByGuido Günther <agx@sigxcpu.org>
Architecturesource amd64
Distributionunstable
DateSat, 17 Oct 2026 11:58:12 +0200
Sourcecameractrl
Version1.0-1
Changelog◂
cameractrl (1.0-1) unstable; urgency=medium
 .
   * Initial release (Closes: #1147933)
.dsc◂
Sectionx11
Priorityoptional
Componentmain
Package-Listcameractrl deb x11 optional arch=any
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: cameractrl
Source: https://gitlab.com/NekoCWD/cameractrl

Files: *
Copyright:
 2025 Vasiliy Doylov <nekodevelopper@gmail.com>
License: GPL-3+

Files: debian/*
Copyright:
 2026 DebianOnMobile Maintainers <debian-on-mobile-maintainers@alioth-lists.debian.net>
License: GPL-3+

License: GPL-3+
 This package 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 package 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.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <https://www.gnu.org/licenses/>
 .
 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, 2 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 20 days ago.

Report◂

DFSG NEW review for cameractrl version 1.0-1

Summary

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

Licensing

debian/copyright is DEP-5, with Files: * GPL-3+ for upstream (Vasiliy Doylov) and debian/* GPL-3+ for the DebianOnMobile Maintainers; the GPL-3 text is pointed to at /usr/share/common-licenses/GPL-3, which is sufficient. Every Vala source carries a GPL-3.0-or-later header naming the same holder, COPYING is GPLv3, and no other copyright holder, licence or non-free term exists in the tree. The prescan's 'Unknown' holder is not a licence notice but a string in the About dialog (copyright = "© 2025 Unknown"), so the copyright file is accurate and no stanza is needed for it.

Packaging

The packaging mechanics are sound: source format 3.0 (quilt) with no patches, debhelper compat 13, correct substvars, RRR no, a sane changelog and a complete Build-Depends for the meson/Vala build. Two things must still be fixed: the AppStream metainfo shipped in /usr/share/metainfo is untouched GNOME app-template boilerplate (placeholder summary, description, developer and example.org URLs), and libadwaita-1-dev (>= 1.4) is below what the code needs (Adw.AboutDialog and Adw.PreferencesDialog are 1.5 APIs). Missing Vcs-* fields and the About dialog's placeholder developer/version are minor.

Issues

important packaging 1. Shipped AppStream metadata is untouched template boilerplate ◂
  • Files: data/io.gitlab.nekocwd.cameractrl.metainfo.xml.in:8-20, data/io.gitlab.nekocwd.cameractrl.metainfo.xml.in:49-71, data/meson.build:20-31
  • Basis: checked, in the package or with a reference tool
  • Evidence: <summary>Keep the summary shorter, between 10 and 35 characters</summary>, <p>No description</p>, <name>Developer name</name>, <url type="homepage">https://example.org/</url>, <release version="1.0.1" date="2024-01-18"> with <li>List of changes</li>.
  • Problem: The file is the unmodified GNOME app-template skeleton and is installed as the package's AppStream metadata (install_dir: datadir/metainfo). Software centres and appstream generators will show a placeholder summary that is itself over the 35-character limit, no description, no developer, eight example.org links, two non-existent screenshots and a fabricated 1.0.1 release, for a 1.0 source. In addition data/meson.build registers appstreamcli validate --no-net --explain as a meson test, and at compat 13 dh_auto_test runs meson test, so this file is validated during every build.
  • Fix: Fill in the real metadata (name, a summary of at most 35 characters, description, developer Vasiliy Doylov, homepage https://gitlab.com/NekoCWD/cameractrl, vcs-browser, bugtracker, the shipped screenshot.png, and a single 1.0 release), preferably upstream; otherwise carry it as a quilt patch. Then confirm the appstream validation test passes.
important packaging 2. libadwaita build dependency is below the API version the code uses ◂
  • Files: debian/control:15, src/meson.build:11, src/application.vala:57, src/preferences.vala:20
  • Basis: checked, in the package or with a reference tool
  • Evidence: libadwaita-1-dev (>= 1.4), and dependency('libadwaita-1', version: '>= 1.4'), while the code instantiates Adw.AboutDialog and Adw.PreferencesDialog; /usr/share/gir-1.0/Adw-1.gir declares both with version="1.5".
  • Problem: The package claims to build against libadwaita 1.4 but uses two classes introduced in 1.5, so a build against the declared minimum fails (valac/blueprint-compiler cannot resolve the types). The build dependency is factually wrong, and the same wrong minimum is encoded in upstream's meson build.
  • Fix: Raise the build dependency to libadwaita-1-dev (>= 1.5) and patch src/meson.build (or forward the change) to version: '>= 1.5'.
minor packaging 3. About dialog shows placeholder developer, copyright holder and stale version ◂
  • Files: src/application.vala:58, src/application.vala:62, src/application.vala:63, src/application.vala:64, meson.build:4
  • Basis: checked, in the package or with a reference tool
  • Evidence: string[] developers = { "Unknown" };, developer_name = "Unknown",, version = "0.1.0",, copyright = "© 2025 Unknown",; meson.build has version: '0.1.0' for the 1.0 release.
  • Problem: The installed application's About dialog credits 'Unknown' as developer and copyright holder, contradicting debian/copyright (Vasiliy Doylov), and reports 0.1.0 although the package is 1.0. This is the string the prescan matched as a missing copyright holder; it is UI placeholder text, not a notice on the file, and the file's real header (line 3) names Vasiliy Doylov under GPL-3.0-or-later.
  • Fix: Set the real developer name and copyright string, and use Config.PACKAGE_VERSION instead of a hardcoded string (and fix project(version:) upstream) so the About dialog matches the package version.
minor packaging 4. No Vcs-Git or Vcs-Browser field ◂
  • Files: debian/control:1-17
  • Basis: checked, in the package or with a reference tool
  • Evidence: The control source stanza has Source, Section, Maintainer, Uploaders, Build-Depends, Standards-Version, Homepage and Rules-Requires-Root, but no Vcs-Git/Vcs-Browser, although debian/gbp.conf and debian/README.source document a git-buildpackage workflow.
  • Problem: The package is team-maintained in git, but the binary/source metadata does not tell users or reviewers where that repository is; Debian practice for team packages is to expose it with Vcs-* fields.
  • Fix: Add Vcs-Git and Vcs-Browser pointing at the Salsa repository used by the DebianOnMobile team.
Verified ◂
  • Read debian/copyright in full: DEP-5 v1.0, Files: * (2025 Vasiliy Doylov, GPL-3+) and Files: debian/* (2026 DebianOnMobile Maintainers, GPL-3+), with a stand-alone License: GPL-3+ paragraph and the standard pointer to /usr/share/common-licenses/GPL-3. No Files-Excluded, none needed.
  • Read all of debian/ (control, rules, changelog, gbp.conf, README.source, salsa-ci.yml, source/format, upstream/metadata) and the file list of cameractrl_1.0-1.debian.tar.xz (only debian/, no patches).
  • Read every source file: src/.vala (five, all GPL-3.0-or-later headers naming Vasiliy Doylov), src/.vapi, src/.blp, src/style.css, src/cameractrl.gresource.xml, src/meson.build, data/ including meson.build, gschema, desktop and service templates, metainfo, po/*, root meson.build, README.md, COPYING, .gitignore, subprojects/blueprint-compiler.wrap.
  • Grepped the whole tree for Copyright/(C)/©/SPDX/'GNU General Public'/'GNU Lesser'/Apache/MPL/MIT/BSD/CC0/'public domain'/'All rights reserved'/non-commercial/no-modification wording: the only hits are the GPL-3 text in COPYING, the GPL headers in the Vala files, the About-dialog string and the metainfo's metadata_license CC0-1.0 from the app template; no other holder or licence term exists.
  • The prescan's 'Unknown' holder at src/application.vala:64 is the About-dialog copyright string, not a copyright notice; the file's licence header is Vasiliy Doylov GPL-3.0-or-later, so debian/copyright does not miss a holder.
  • No built or generated files are shipped: no .class/.jar/.so/.pyc/minified JS; the blueprint sources for the .ui files and the .blp sources are present, and the gresource XML references them.
  • Data icons are two SVG sources under data/icons/hicolor; they carry no separate notice and are covered by Files: *. screenshot.png is the upstream README screenshot, not a built artifact.
  • Read /usr/share/gir-1.0/Adw-1.gir: AboutDialog and PreferencesDialog are both version="1.5", confirming the libadwaita minimum issue.
  • Policy 4.7.4.1 on the reviewing system, so Standards-Version 4.7.4 is current; debhelper compat 13 is supported and dh_auto_test runs meson test at that level (debhelper tool), which is why the metainfo validation test is relevant.
  • Source format 3.0 (quilt), unchanged .orig tarball, changelog 1.0-1 to unstable, Rules-Requires-Root: no, ${misc:Depends}/${shlibs:Depends} present at compat 13.
  • .pc/ was ignored throughout and there is no debian/cargo-checksum.json.
  • uscan found the packaged version as the newest upstream release (upstream 1.0, packaged 1.0).
  • Every pointer of debian/copyright to /usr/share/common-licenses names a file that is there (GPL-3).
Not confirmed ◂
  • Whether appstreamcli validate exits non-zero on the placeholder metainfo (summary over the 35-character limit) and thus fails meson test/the build; no build was possible and the appstreamcli manual page does not state validate's exit semantics. A build would show it.
  • Whether valac ships v4l2.vapi and linux.vapi, which src/meson.build pulls in with valac.find_library; valac's own vapi directory is not installed on the reviewing system, so this could not be checked.
  • screenshot.png (2.5 MB) was not opened; it is judged from README.md and its placement as the upstream screenshot.
  • The bug number closed in debian/changelog (#1147933) was not checked against the BTS.
Proposed changes ◂

None.

Uploader's response to the LLM review

Fixed in the MR https://salsa.debian.org/DebianOnMobile-team/cameractrl/-/merge_requests/1 . I'd upload to unstable in case this gets accepted.

— Guido Günther (agx), 19 days ago

Review Information

accepted — allocated to awm 14 days ago, started 14 days ago, completed 14 days ago.

Final Comment

Back to Dashboard | View all reviews for this package