Review: cameractrl 1.0-1
Package Information
| Description | Camera 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. |
|---|---|
| Maintainer | DebianOnMobile Maintainers <debian-on-mobile-maintainers@alioth-lists.debian.net> |
| Changed By | Guido Günther <agx@sigxcpu.org> |
| Sponsor | guido@xcpu.ch |
| Distribution | unstable |
| Architecture | any |
| Closes | #1147933 |
| Tracker | https://tracker.debian.org/pkg/cameractrl |
| Uploaded | 21 days ago |
New Package Report
.changes
| Version | 1.0-1 |
|---|---|
| Changed-By | Guido Günther <agx@sigxcpu.org> |
| Architecture | source amd64 |
| Distribution | unstable |
| Date | Sat, 17 Oct 2026 11:58:12 +0200 |
| Source | cameractrl |
Changelog
cameractrl (1.0-1) unstable; urgency=medium . * Initial release (Closes: #1147933)
.dsc
| Component | main |
|---|---|
| Package-List | cameractrl deb x11 optional arch=any |
| Section | x11 |
| Priority | optional |
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/copyrightis 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 additiondata/meson.buildregistersappstreamcli validate --no-net --explainas a meson test, and at compat 13 dh_auto_test runsmeson 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),anddependency('libadwaita-1', version: '>= 1.4'), while the code instantiatesAdw.AboutDialogandAdw.PreferencesDialog;/usr/share/gir-1.0/Adw-1.girdeclares both withversion="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 patchsrc/meson.build(or forward the change) toversion: '>= 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.buildhasversion: '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_VERSIONinstead of a hardcoded string (and fixproject(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, althoughdebian/gbp.confanddebian/README.sourcedocument 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-GitandVcs-Browserpointing at the Salsa repository used by the DebianOnMobile team.
Verified ◂
- Read
debian/copyrightin full: DEP-5 v1.0,Files: *(2025 Vasiliy Doylov, GPL-3+) andFiles: debian/*(2026 DebianOnMobile Maintainers, GPL-3+), with a stand-aloneLicense: 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_licenseCC0-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/copyrightdoes 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:
AboutDialogandPreferencesDialogare bothversion="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 testat 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, packaged1.0). - Every pointer of
debian/copyrightto /usr/share/common-licenses names a file that is there (GPL-3).
Not confirmed ◂
- Whether
appstreamcli validateexits non-zero on the placeholder metainfo (summary over the 35-character limit) and thus failsmeson 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.vapiandlinux.vapi, whichsrc/meson.buildpulls in withvalac.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.