DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: golang-github-josephburnett-jd 2.3.0+ds-1

Package Information

DescriptionJSON diff and patch (library)

jd is a commandline utility and Go library for diffing and patching JSON and YAML values. It supports a native jd format (similar to unified format) as well as JSON Merge Patch (RFC 7386) and a subset of JSON Patch (RFC 6902).

This package contains the Go library (module github.com/josephburnett/jd/v2).

MaintainerDebian Go Packaging Team <team+pkg-go@tracker.debian.org>
Changed ByJuan Manuel Méndez Rey <juan.mendezr@proton.me>
Sponsortsimonq2@debian.org
Distributionunstable
Architectureall
VCSgit: https://salsa.debian.org/go-team/packages/golang-github-josephburnett-jd.git (browse)
Closes#1152529
Trackerhttps://tracker.debian.org/pkg/golang-github-josephburnett-jd
Uploaded2 days ago

New Package Report

.changes◂
Sourcegolang-github-josephburnett-jd
Version2.3.0+ds-1
Changed-ByJuan Manuel Méndez Rey <juan.mendezr@proton.me>
Architecturesource all
Distributionunstable
DateFri, 30 Oct 2026 10:49:03 +0100
Changelog◂
golang-github-josephburnett-jd (2.3.0+ds-1) unstable; urgency=medium
 .
   * Initial release (Closes: #1152529)
.dsc◂
Componentmain
Package-Listgolang-github-josephburnett-jd-v2-dev deb golang optional arch=all
Sectiongolang
Priorityoptional
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/josephburnett/jd
Upstream-Name: jd
Upstream-Contact: https://github.com/josephburnett/jd/issues
Files-Excluded:
 action.yml
 doc
 Dockerfile
 ebnf.png
 fuzz-1bn.png
 go.mod
 go.sum
 lib
 main.go
 main_test.go
 Makefile
 logo.png
 logo_small.png
Comment: The top level is the v1 module, which nothing in Debian needs; only
 the v2 module in v2/ is packaged.

Files: *
Copyright: 2016 Joseph Burnett
License: Expat

Files: debian/*
Copyright: 2026 Juan Manuel Méndez Rey <juan.mendezr@proton.me>
License: Expat
Comment: Debian packaging is licensed under the same terms as upstream

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, 1 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 1 day ago.

Report◂

DFSG NEW review for golang-github-josephburnett-jd version 2.3.0+ds-1

Summary

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

Licensing

The whole of the shipped source is MIT (DEP-5 short name Expat) under one root LICENSE, and debian/copyright describes it accurately: a Files: * stanza naming Joseph Burnett, a debian/* stanza, the full Expat text as a stand-alone License paragraph, and a Files-Excluded list that matches the +ds repack exactly. No other copyright holder or licence notice exists anywhere in the tree, there is no vendored third-party code, no non-free wording, and no built file without its source. The prescan's author check also found every holder it detected named in debian/copyright.

Packaging

Conventional, competent Go packaging: dh-go with debhelper-compat 14 and dpkg-build-api 1, one Architecture: all -v2-dev library package whose Depends mirror the imports of the installed sources, autopkgtest-pkg-go, salsa-ci and gbp configuration, and a Standards-Version current against Policy 4.7.4.1. One fix is needed: debian/rules moves the debhelper build directory to debian/_build, which the dh_golang_autopkgtest helper cannot follow, so the autopkgtest build fails on every run.

Issues

minor packaging 1. --builddirectory=debian/_build breaks the generated autopkgtest, which only populates the default _build ◂
  • Files: debian/rules:14, debian/control:13, /usr/bin/dh_golang_autopkgtest:84-95
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/rules:14 dh $@ --builddirectory=debian/_build --buildsystem=golang --with=golang; /usr/bin/dh_golang_autopkgtest computes its own path with no builddir option: APT_BDIR := $(shell env --unset=DH_VERBOSE perl -w -MDebian::Debhelper::Dh_Buildsystems -e 'buildsystems_init(); print load_buildsystem("golang")->get_builddir()') and then override_dh_auto_configure: mkdir -p "${APT_BDIR}" / cp -a /usr/share/gocode/src "${APT_BDIR}".
  • Problem: debian/control:13 requests Testsuite: autopkgtest-pkg-go, so autodep8 runs /usr/bin/dh_golang_autopkgtest. Because the -dev package installs the sources at /usr/share/gocode/src/github.com/josephburnett/jd, the helper appends an override_dh_auto_configure that copies the installed sources into APT_BDIR instead of letting the golang buildsystem configure the tree. The helper passes no --builddirectory to load_buildsystem(), so it gets DEFAULT_BUILD_DIRECTORY, which golang.pm returns as _build at compat 14 (return $this->SUPER::DEFAULT_BUILD_DIRECTORY() if compat(13); is false at 14); the package's own dh runs, however, set the build directory to debian/_build, and golang.pm's _set_gopath exports GOPATH=$PWD/debian/_build. The override replaces dh_auto_configure entirely, so nothing is ever copied into debian/_build and that directory is not even created. dh_auto_build then expands go list -e github.com/josephburnett/jd/v2/... against an empty GOPATH (no targets) and calls doit_in_builddir("go", "install", ...), which chdirs into the non-existent debian/_build and fails. Every autopkgtest run therefore fails, which keeps the package out of testing.
  • Fix: Drop --builddirectory=debian/_build and let compat 14's default _build apply, so the helper's APT_BDIR and the package's GOPATH coincide; or ship the package's own debian/tests/ and drop Testsuite: autopkgtest-pkg-go.
Verified ◂
  • Prescan: it listed no files, only the author check, whose result is that every holder it found is named in debian/copyright; I confirmed the only copyright notice in the tree is Copyright (c) 2016 Joseph Burnett in LICENSE.
  • debian/copyright: DEP-5, correct Format URL, header (Source, Upstream-Name, Upstream-Contact, Files-Excluded, Comment), Files: * 2016 Joseph Burnett / Expat, Files: debian/* 2026 Juan Manuel Méndez Rey / Expat, full Expat text; Expat is not in /usr/share/common-licenses, so reproducing it is required and done.
  • LICENSE is the MIT/Expat text with the same holder and year as the Files: * stanza; LICENSE is present at the top level only, and there is no LICENSE/COPYING/NOTICE in v2/ or any other subdirectory.
  • A case-insensitive grep of the whole tree (gitignore: false, .pc/ and debian/ observations noted separately) for Copyright, (C), ©, SPDX-License-Identifier, 'Licensed under', 'Permission is hereby granted', 'GNU General Public', 'GNU Lesser', 'Apache License', 'Mozilla Public', 'public domain' and 'All rights reserved' found matches only in LICENSE, debian/copyright and three false positives (string literals string(c) in v2/diff_write.go and v2/e2e_test.go).
  • Files-Excluded names action.yml, doc, Dockerfile, ebnf.png, fuzz-1bn.png, go.mod, go.sum, lib, main.go, main_test.go, Makefile, logo.png and logo_small.png; none of them is in the unpacked tree, and because the patterns are anchored at the top of the tree, v2/go.mod and v2/go.sum are correctly retained (present at v2/go.mod and v2/go.sum).
  • The 12 files under v2/testdata/fuzz/FuzzJd/ are Go fuzz corpus text (go test fuzz v1 followed by string("[[],[]]") and the like), upstream test data covered by the MIT licence.
  • v2/web/assets/index.html is hand-written HTML/CSS with a small inline script; it contains no bundled or minified third-party JavaScript, and it is only consumed by v2/web (excluded from the build, not shipped).
  • No vendored code and no embedded copies of Debian libraries: no vendor/ directory, and the only external imports are github.com/go-openapi/jsonpointer (v2/pointer.go), golang.org/x/exp/slices (v2/diff_write.go), gopkg.in/yaml.v3 (v2/node_read.go, v2/node_write.go) and github.com/stretchr/testify/require (three _test.go files), which are exactly the Build-Depends/Depends in debian/control.
  • apt-cache: golang-any 2:1.271, dh-go 1.69, golang-github-go-openapi-jsonpointer-dev 1:0.23.1-1, golang-github-stretchr-testify-dev 1.11.1-2, golang-golang-x-exp-dev 0.0git20261009.ca0d7ba-1 and golang-gopkg-yaml.v3-dev 3.0.5-1 all exist; dh-go 1.69 provides the golang sequence addon and buildsystem used by debian/rules and conflicts with dh-golang.
  • debhelper-compat 14: ${misc:Depends} is present anyway; dh_missing fails on uninstalled files by default from compat 13, and the golang buildsystem installs straight into debian/, so nothing is left in debian/tmp.
  • dh_golang_autopkgtest is only reached through autodep8's go template (/usr/share/autodep8/support/go/generate runs /usr/bin/dh_golang_autopkgtest); the package has no debian/tests/ of its own, which is normal for Testsuite: autopkgtest-pkg-go.
  • The 32-bit test skip is sound: /usr/share/dpkg/architecture.mk does define DEB_HOST_ARCH_BITS (included before the override, so it is expanded at parse time), and TestContextCancel is in v2/lcs_test.go, part of the v2 root package that is a build target.
  • DH_GOLANG_EXCLUDES (v2/jd, v2/web) is a list of Perl regexes matched against targets and against paths relative to $GOPATH/src/$DH_GOPKG; at compat 14 DH_GOLANG_EXCLUDES_ALL defaults to on, so v2/jd and v2/web are neither built nor installed, which matches the rules comment and leaves the -dev package with the /v2 library only.
  • XS-Go-Import-Path: github.com/josephburnett/jd is the correct value: golang.pm copies v2/... to $GOPATH/src/github.com/josephburnett/jd/v2/..., so the module path in v2/go.mod matches the installed path.
  • Standards-Version 4.7.4 against Policy 4.7.4.1 (first two components equal) is current; dpkg-build-api 1 is declared in Build-Depends and its required targets are all covered by the %: rule.
  • 3.0 (quilt) with no debian/patches, no maintainer scripts, no *.maintscript, no dirs/links/docs files, no debian/tests; changelog is a well-formed initial release closing the ITP, and gbp.conf, salsa-ci.yml and upstream/metadata are conventional.
  • Tree coverage: all files outside .pc/ and debian/ were enumerated (71 files), including hidden ones; no binary, image, archive or PDF files remain after the repack.
  • uscan found upstream releases with debian/watch; a newer upstream version is available (upstream 2.5.0, packaged 2.3.0+ds), which is not a fault of the package.
Not confirmed ◂
  • Whether the jd command-line tool, upstream's main product, is meant to be shipped: debian/rules excludes v2/jd and v2/web deliberately, no binary named jd exists in the archive, and the ITP's intent (Closes: #1152529) could not be consulted without network access.
  • The comment at debian/rules:8-10 says dh-go 1.69 writes a go.work with use and replace entries under autopkgtest, but the installed dh-go 1.69 contains no go.work handling in /usr/share/perl5/Debian/Debhelper/Buildsystem/golang.pm, /usr/share/perl5/Debian/Debhelper/Sequence/golang.pm, /usr/bin/dh_golang or /usr/bin/dh_golang_autopkgtest, so I could not reproduce the situation that comment describes.
Proposed changes ◂

None.

Uploader's response to the LLM review

False positive, so no change. With dh-go 1.69 the autopkgtest helper uses --builddirectory. The autopkgtest log of this package shows mkdir -p "debian/_build", cp -a /usr/share/gocode/src "debian/_build", then cd debian/_build && go install and go test, and ends with "dh-golang-autopkgtest PASS".

— Juan Manuel Méndez Rey (mendezr), 1 day ago

Review Information

accepted — allocated to mechtilde 1 day ago, started 1 day ago, completed 1 day ago.

Final Comment

Back to Dashboard | View all reviews for this package