DFSG NEW Queue

DFSG, Licensing & New Packages Team

dronecan-dsdlc 0.0+git20260323.431170f-1

Package Information

DescriptionDroneCAN DSDL compiler generating C serialization code

DroneCAN is a CAN bus protocol for communication between avionics and robotic components. Its data types are described using the Data Structure Description Language (DSDL).

This compiler generates C headers and source files for serializing and deserializing DroneCAN messages and services with DroneCAN libcanard. It supports selecting individual types and generating regression tests that compare the C serialization with the Python DroneCAN implementation.

MaintainerSteffen Moeller <moeller@debian.org>
Changed BySteffen Moeller <moeller@debian.org>
Sponsormoeller@debian.org
Distributionunstable
Architectureall
VCSgit: https://salsa.debian.org/robotics-team/dronecan-dsdlc.git (browse)
Closes#1153306
Trackerhttps://tracker.debian.org/pkg/dronecan-dsdlc
Uploaded3 hours ago

New Package Report

.changes◂
Architecturesource all
Distributionunstable
DateSat, 07 Nov 2026 05:20:28 +0100
Sourcedronecan-dsdlc
Version0.0+git20260323.431170f-1
Changed-BySteffen Moeller <moeller@debian.org>
Changelog◂
dronecan-dsdlc (0.0+git20260323.431170f-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #1153306)
   * Install an architecture-independent compiler, private templates and a
     manual page using Debian-packaged Python dependencies.
   * Use packaged libcanard sources for offline regression tests without
     writing beside installed development files.
   * Add build-time and installed-package message/service regression tests.
   * Track Git snapshots by their UTC commit date and document upstream's
     code-generation licence exception.
.dsc◂
Sectiondevel
Priorityoptional
Componentmain
Package-Listdronecan-dsdlc deb devel optional arch=all
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/DroneCAN/dronecan_dsdlc
Upstream-Name: dronecan_dsdlc
Upstream-Contact: https://github.com/DroneCAN/dronecan_dsdlc/issues

Files: *
Copyright:
 2021 Jonathan Challinger
 2021 Siddharth Bharat Purohit, CubePilot Pty. Ltd.
 The ArduPilot project
 CubePilot Pty. Ltd.
License: LGPL-3 with DroneCAN-code-generation exception
Comment:
 COPYING describes the generator as (L)GPL v3 and reproduces LGPL-3.
 The Python files carry explicit GPL-3+ notices, recorded separately below.
 The additional permission permits distribution of generator output under
 the Expat licence. Its terms and copyright notices are reproduced below.

Files: dronecan_dsdlc*.py
Copyright:
 2021 Jonathan Challinger
 2021 Siddharth Bharat Purohit, CubePilot Pty. Ltd.
License: GPL-3+ with DroneCAN-code-generation exception

Files: debian/*
Copyright: 2026 Steffen Moeller <moeller@debian.org>
License: Expat

License: LGPL-3 with DroneCAN-code-generation exception
 On Debian systems the complete text of the GNU Lesser General Public
 License version 3 is in /usr/share/common-licenses/LGPL-3, supplemented
 by /usr/share/common-licenses/GPL-3.
 .
 As an exception, if you use this Software to compile your source code and
 portions of this Software, including messages ("the generator output"), are embedded
 into the binary product as a result, you may redistribute such product and such
 product is hereby licensed under the following MIT license:
 .
 Copyright (C) the ArduPilot project
 http://ardupilot.org/
 Copyright (C) Cubepilot Pty. Ltd.
 https://cubepilot.com
 .
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of the generated software (the "Generated Software"), to deal
 in the Generated Software without restriction, including without limitation the
 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Generated Software, and to permit persons to whom the Generated
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Generated Software.
 .
 THE GENERATED SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE GENERATED SOFTWARE OR THE USE OR OTHER DEALINGS
 IN THE GENERATED SOFTWARE.

License: GPL-3+ with DroneCAN-code-generation exception
 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.
 .
 On Debian systems the complete text of the GNU General Public License
 version 3 is in /usr/share/common-licenses/GPL-3.
 .
 As an exception, if you use this Software to compile your source code and
 portions of this Software, including messages ("the generator output"), are embedded
 into the binary product as a result, you may redistribute such product and such
 product is hereby licensed under the following MIT license:
 .
 Copyright (C) the ArduPilot project
 http://ardupilot.org/
 Copyright (C) Cubepilot Pty. Ltd.
 https://cubepilot.com
 .
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of the generated software (the "Generated Software"), to deal
 in the Generated Software without restriction, including without limitation the
 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Generated Software, and to permit persons to whom the Generated
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Generated Software.
 .
 THE GENERATED SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE GENERATED SOFTWARE OR THE USE OR OTHER DEALINGS
 IN THE GENERATED SOFTWARE.

License: Expat
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
 to deal in the Software without restriction, including without limitation
 the rights to use, copy, modify, merge, publish, distribute, sublicense,
 and/or sell copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

DFSG Assistant LLM REVIEW 0 blocker, 0 important, 0 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 2 hours ago.

Report◂

DFSG NEW review for dronecan-dsdlc version 0.0+git20260323.431170f-1

Summary

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

Licensing

debian/copyright is DEP-5 and matches the evidence in the tree. COPYING declares the generator to be (L)GPL v3 and reproduces the LGPL-3 text plus a code-generation exception that lets generator output be distributed under Expat/MIT; the three top-level Python scripts carry their own Released under GNU GPL version 3 or later'' notice, and the file records them in a separate, later Files: dronecan_dsdlc*.py'' stanza as GPL-3+ with the same exception, so the overriding order is right. Both licence texts come from /usr/share/common-licenses (LGPL-3, GPL-3), the exception's text and its two copyright notices are reproduced verbatim, and ``debian/*'' is recorded as Expat. The exception adds permissions rather than restricting them, all licences combined in the package are free and mutually compatible, and the package ships no generated or built files whose source is missing.

Packaging

Clean, conventional packaging for a Python tool whose upstream has no build system: debhelper compat 14 with dh-sequence-python3, dh_python3 pointed at the /usr/share/dronecan-dsdlc private directory (which is the package's own default private dir), a /usr/bin launcher, man page, README.Debian and an installed example, and one DEP-3 patch that removes the sibling-checkout fallbacks and hardcodes libcanard-dev's source path. The test-only build dependencies are correctly marked <!nocheck> (dh skips override_dh_auto_test at compat 14, and rules checks nocheck itself anyway), the build-time test is the same offline script the autopkgtest runs (the upstream CI scripts that clone from GitHub are not used), and Standards-Version 4.7.4 is current against Policy 4.7.4.1.

Issues

None.

Verified ◂
  • No file listed by the prescan needed an account: it reported no built files, no non-free wording and no copyright holder missing from debian/copyright.
  • Read all of debian/ (changelog, control, copyright, rules, install, docs, manpages, examples, example/generate, scripts/dronecan-dsdlc, README.Debian, README.source, gbp.conf, salsa-ci.yml, source/format, upstream/metadata, tests/compiler, tests/control, patches/series and the patch, dronecan-dsdlc.1, watch seen but not reviewed).
  • Upstream tree: three Python scripts, seven EmPy/C templates, README.md, COPYING, requirements.txt, .gitignore, three GitHub workflow files, two tests/*.sh plus tests/test_windows.cmd, examples/test1/{Makefile,README.md}. No binaries, generated sources, minified files, fonts, images or PDFs; no vendored copy of libcanard or pydronecan.
  • Licence evidence tree-wide (Copyright, (C), SPDX, GPL/LGPL, permission, non-commercial, no-modification, all-rights-reserved): only COPYING, the three Python file notices and debian/; templates and the CI/test scripts carry no separate notice, so COPYING's blanket (L)GPL v3 statement is the only terms for them, as recorded.
  • dronecan_dsdlc.py:5-7, dronecan_dsdlc_helpers.py:5-7 and dronecan_dsdlc_tester.py:5-6 read ``Copyright Jonathan Challinger, 2021 / Copyright Siddharth Bharat Purohit, CubePilot Pty. Ltd. 2021 / Released under GNU GPL version 3 or later'', matching the GPL-3+ stanza; COPYING's exception matches the two standalone License paragraphs word for word.
  • The exception is an additional permission for generator output (MIT/Expat terms with the ArduPilot project and Cubepilot Pty. Ltd. notices), not a field-of-use or no-modification restriction, so it raises no DFSG problem; LGPL-3 and GPL-3+ together are compatible (LGPL-3 section 2b permits GPL-3).
  • debian/copyright points at /usr/share/common-licenses/LGPL-3 and GPL-3; both exist on this system. Expat-licensed debian/* and GPL-3+/LGPL-3 upstream files combine only in the source package.
  • compat 14: dh_python3 is invoked with /usr/share/dronecan-dsdlc, which is the binary package's own default private directory (man dh_python3, ``private dirs''); dh-python adds python3:any to ${python3:Depends} (MINPYCDEP in /usr/share/dh-python/dhpython/depends.py:191), so the interpreter dependency is not missing, and ${misc:Depends}/${python3:Depends} are named in Depends anyway.
  • dh_install(1): from compat 7 it looks in the current directory first and only falls back to debian/tmp, so the upstream-relative sources in debian/install (dronecan_dsdlc*.py, templates/*, debian/scripts/dronecan-dsdlc) resolve without a staging tree; the single-binary add-on only changes dh_auto_install's destdir and refuses multi-binary sources, which this source is not.
  • debian/rules:14 runs debian/tests/compiler with CC_FOR_BUILD/CXX_FOR_BUILD from /usr/share/dpkg/buildtools.mk; the test writes only into a tempfile.TemporaryDirectory, so the source tree is not modified and no debian/clean is needed.
  • Override targets are well formed for dh (empty combined override_dh_auto_configure/dh_auto_build, nocheck-guarded override_dh_auto_test), and the patch is DEP-3 with Description, Author, Forwarded: not-needed and Last-Update.
  • Standards-Version 4.7.4 has the same first two components as Debian Policy 4.7.4.1 (policy tool), so it is current; Section devel, Architecture all, Vcs-*, Homepage and upstream/metadata are present and consistent; changelog is an initial release to unstable with the ITP closed and a consistent date (7 Nov 2026 is a Saturday).
  • autopkgtest is offline: debian/tests/compiler uses python3-dronecan's dsdl_specs and libcanard-dev's sources (with Depends: @, build-essential, libcanard-dev and allow-stderr), unlike upstream's tests/*.sh, which clone from GitHub and are not installed.
  • python3-empy (4.2.1-1) and python3-pexpect (4.9-5) exist in the package lists; the runtime imports in the installed scripts (em, pexpect, dronecan) are all covered by Depends.
  • uscan found the packaged version as the newest upstream release (upstream 0.0+git20260323.431170f, packaged 0.0+git20260323.431170f).
  • Every pointer of debian/copyright to /usr/share/common-licenses names a file that is there (GPL-3, LGPL-3).
Not confirmed ◂
  • libcanard-dev (>= 0.2+git20250713.601ed35) and python3-dronecan (>= 1.0.27+ds1) are neither in the package lists the apt-cache tool reads nor among the uploads in the NEW queue as of 2026-11-07T06:07Z; the package cannot build (Build-Depends) or be installed (Depends) until those uploads are accepted, which the package itself cannot show.
  • Cannot confirm that libcanard-dev installs the development sources at the hardcoded path /usr/share/libcanard/canard.c (and canard.h in the same directory) that debian/patches/debian-system-dependencies.patch and templates/Makefile.em rely on, nor that python3-dronecan ships a complete dsdl_specs tree; libcanard-dev is not installed here, so a build or autopkgtest run would be needed to show it.
  • Could not verify that Debian's python3-empy 4.2.1 still provides the em.expand() API that dronecan_dsdlc.py:137 calls (empy is not installed on the reviewing system); the build-time test and the autopkgtest exercise exactly that path.
Proposed changes ◂

None.

Uploader's response to the LLM review

The uploader was emailed about the review 2 hours ago.

Back to Dashboard | View all reviews for this package