Review: golang-github-josephburnett-jd 2.3.0+ds-1
Package Information
| Description | JSON 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). |
|---|---|
| Maintainer | Debian Go Packaging Team <team+pkg-go@tracker.debian.org> |
| Changed By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Sponsor | tsimonq2@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/go-team/packages/golang-github-josephburnett-jd.git (browse) |
| Closes | #1152529 |
| Tracker | https://tracker.debian.org/pkg/golang-github-josephburnett-jd |
| Uploaded | 2 days ago |
New Package Report
.changes
| Source | golang-github-josephburnett-jd |
|---|---|
| Version | 2.3.0+ds-1 |
| Changed-By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Architecture | source all |
| Distribution | unstable |
| Date | Fri, 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
| Component | main |
|---|---|
| Package-List | golang-github-josephburnett-jd-v2-dev deb golang optional arch=all |
| Section | golang |
| Priority | optional |
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/copyrightis 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 thenoverride_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_buildat 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 todebian/_build, and golang.pm's_set_gopathexports 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 expandsgo list -e github.com/josephburnett/jd/v2/...against an empty GOPATH (no targets) and callsdoit_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/_buildand let compat 14's default_buildapply, 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 Burnettin 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 v1followed bystring("[[],[]]")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.27
1, 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 thegolangsequence 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 (upstream2.5.0, packaged2.3.0+ds), which is not a fault of the package.
Not confirmed ◂
- Whether the
jdcommand-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.