From: David Uhden Collado Subject: [UPDATE] devel/shfmt 3.6.0 -> 3.14.1 To: ports@openbsd.org Date: Sat, 19 Sep 2026 02:28:00 +0000 Hello, Please find attached an updated version of the patch I sent previously. Since shfmt 3.14.1 has now been released, I updated the port directly from 3.6.0 to 3.14.1. Please disregard the previous 3.14.0 patch. The upstream release notes and full comparison are available at: https://github.com/mvdan/sh/releases/tag/v3.14.1 https://github.com/mvdan/sh/compare/v3.6.0...v3.14.1 The changes described in my previous email remain applicable. In short, the releases since 3.6.0 include substantial improvements to the parser, formatter, interpreter, shell expansion, script detection and EditorConfig support, as well as initial Zsh parser and formatter support. Version 3.14.1 is primarily a bugfix release. It fixes several here-document formatting issues, including indentation inside command substitutions and preservation of literal tabs in <<- heredocs. It also fixes Zsh short parameter-expansion forms, escaped characters being incorrectly treated as glob metacharacters, and a panic caused by unclosed extended pattern groups. The interpreter also receives a fix for builds on 32-bit FreeBSD and NetBSD. The main port-specific change in this revision is that I have enabled the complete upstream test suite. The default Go module test target only tests the module root, which does not contain any Go files. I therefore added: TEST_TARGET = ./... so that "make test" runs all upstream package tests rather than effectively testing nothing. For the port, MODGO_VERSION is now set to v3.14.1 and distinfo has been regenerated for the new source archive. The Go dependency set remains the same as in the previous 3.14.0 patch. No local patches or package list changes are required. This revised patch supersedes the 3.14.0 update I sent previously. Thank you for your time and consideration. Best regards, David. Index: devel/shfmt/Makefile =================================================================== RCS file: /cvs/ports/devel/shfmt/Makefile,v diff -u -p -u -p -r1.9 Makefile --- devel/shfmt/Makefile 18 Jun 2023 10:14:22 -0000 1.9 +++ devel/shfmt/Makefile 19 Sep 2026 01:27:59 -0000 @@ -1,7 +1,7 @@ COMMENT = shell parser, formatter, and interpreter MODGO_MODNAME = mvdan.cc/sh/v3 -MODGO_VERSION = v3.6.0 +MODGO_VERSION = v3.14.1 DISTNAME = shfmt-${MODGO_VERSION} @@ -15,6 +15,10 @@ PERMIT_PACKAGE = Yes WANTLIB += c pthread MODULES = lang/go + +# The module default tests only the root package, which has no Go files; +# run the whole upstream suite instead. +TEST_TARGET = ./... BUILD_DEPENDS = textproc/groff \ textproc/scdoc Index: devel/shfmt/distinfo =================================================================== RCS file: /cvs/ports/devel/shfmt/distinfo,v diff -u -p -u -p -r1.5 distinfo --- devel/shfmt/distinfo 18 Jun 2023 10:14:22 -0000 1.5 +++ devel/shfmt/distinfo 19 Sep 2026 01:27:59 -0000 @@ -1,52 +1,88 @@ -SHA256 (go_modules/github.com/creack/pty/@v/v1.1.18.mod) = BBOkGR3M1sdbDMdMtxrxVkBw8uy/zjq0ujzMnXAf2Cw= -SHA256 (go_modules/github.com/creack/pty/@v/v1.1.18.zip) = fcrad4LgTw1LR9UNTvNfNvLID5CSMQGRSUgEKb2xduU= +SHA256 (go_modules/github.com/creack/pty/@v/v1.1.24.mod) = o5ef0ywA810X6zuX0LPMb077BXv3gnE2H6dzUx5gFTE= +SHA256 (go_modules/github.com/creack/pty/@v/v1.1.24.zip) = dU4lJT52pVg7gNV9Ot06/mj8TZ8qSQloqdHtqMj9iBU= SHA256 (go_modules/github.com/creack/pty/@v/v1.1.9.mod) = 6rBwW8ShjdMVwnpOPbqPIKnhIwZfogYzlmMytczPdzE= -SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = aLKthKInPSO6xKV0F3Wj+llKB9KnH4DoR6fWPFOlvZ8= -SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 3uueG53Rg2Lt50i1+TfQguZ8Q/J5wmWnOxT1yDbvXWo= -SHA256 (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0= -SHA256 (go_modules/github.com/google/go-cmp/@v/v0.5.9.zip) = MkUIdKx1bvXUf2uBkwUQUwS5gZBFoW4/EFKJt88lLFE= -SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.0.mod) = dqhi31Livy4fWN833CgRSk8HwOrf4uWGaUd1HY1/S0w= -SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.0.zip) = bis93O3Wu1/2abjilL78mjXAHt4w/QChg/xjfOfJ/Y4= +SHA256 (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.mod) = L5/jytzHuu7ucGhRCkrgJIa9OAeyIhE+hxHoGxSlrWU= +SHA256 (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.zip) = y81WfUgggfY3nYRManUTfyv5qJ3v0GBGZZlRygOkQTQ= +SHA256 (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0= +SHA256 (go_modules/github.com/google/go-cmp/@v/v0.7.0.mod) = Mch0odKhjmKwVQ+CPOeldcjex/j9nU+hlZuxLX98DxQ= +SHA256 (go_modules/github.com/google/go-cmp/@v/v0.7.0.zip) = ZKnOBG8sMg43g/ug0fShX4oY8LAJtnvyf3YwkZ2z9Tk= +SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.2.mod) = Jc2c5ds2RAvoazVyXTJRmcxWBjKcAq6R0GPTYnU6osA= +SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.2.zip) = TqH37JOMwiBoJ/Ep9A7Zomb03zAZj8/wjeB9pLcidss= SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = hPPkCAOx69SoAuVXlLmZffCxc8SAnoVy/5BC7FWMobw= SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 7PWkrySCbDrXWM4GQQygji1Y5NlQU747nd4uFIUsDNw= SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 9jh5sgT2zolc6lNZS4FPWsCvCEhrM7HKecZXOE77xyY= SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.zip) = No6zGPkaW2e+kFxHAyq1wxodSal4SLEBGg0KISKzC6Q= SHA256 (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.mod) = XVuUVOLQIK8MdgNWjoaQS5m+/E1dZ8OoUF9hIVib0R8= SHA256 (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.zip) = 81sj/dK5Ui3dRsxcAWG08HZcUUR11dTKKoasoxOIyL0= +SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.12.0.mod) = e/5bA6stTZVNm3TqzbLMv2ve9jQgGwALl/mg0gIx3H4= +SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.mod) = H/o/PB0q2dQFE69mEMIdUq4oOWKGeYVN9CEhL2op7Cc= +SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.zip) = yE2VgYFhhAfmHw+DfAoiYBbMe7DebSbS2C/UduO/H3A= SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = kFmpfaKZDIGaCXZ6XpvYeEtFpXt6JeKQVbvRsKqhRP8= -SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = fXd5CLnJGhaF8tcJVQ5rdHjhTpxGmd/9fwoVDjbbx+k= -SHA256 (go_modules/golang.org/x/sync/@v/v0.1.0.mod) = Qh9hOWhtWJHz3FpWPQmVeA0yefZcrU0iXOpSaGeUFhw= -SHA256 (go_modules/golang.org/x/sync/@v/v0.1.0.zip) = 9RC+xgCeGYgtGZU+cnMTfTTfhsZZSTRdcvEjolXC7NI= -SHA256 (go_modules/golang.org/x/sys/@v/v0.3.0.mod) = 8DMzMJb+GY8xUd7tk/LeunTlC7/nc5E0BFvDt85KUCQ= -SHA256 (go_modules/golang.org/x/sys/@v/v0.3.0.zip) = y98Y476fIRypYmhKwZ1B1L4kBCiY7AzGZL+NHClV04Q= -SHA256 (go_modules/golang.org/x/term/@v/v0.3.0.mod) = HlYfdBO3S00wyi1smHTM0Tu4yU2qDmwjd7rZ6c9tvlg= -SHA256 (go_modules/golang.org/x/term/@v/v0.3.0.zip) = HNnVjqLYYpm4VphyOOY5KlDmiNBGnMs7SkaTSfJDlQc= -SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.mod) = 9Zm959knns+MkZaERhjWNHJZ0j2u5YLTb+XzjOUfLIo= -SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.zip) = qeQ61HQvJ/ey+yeCDTalFxxUD6Q/nsXZK5tm0KA7ctE= -SHA256 (shfmt-v3.6.0.zip) = 9O0sWTiojonGHIm/fzUzgo8k/2LTdOdTohl++rmIJ5Y= -SIZE (go_modules/github.com/creack/pty/@v/v1.1.18.mod) = 38 -SIZE (go_modules/github.com/creack/pty/@v/v1.1.18.zip) = 26597 +SHA256 (go_modules/github.com/yuin/goldmark/@v/v1.4.13.mod) = 7n/kRmIDoB06wZrcE0zeyZvG3nGZLCjz3Zp0SAv/BgM= +SHA256 (go_modules/github.com/yuin/goldmark/@v/v1.4.13.zip) = u0GmArF0NF/aOSyK2D/MkyF8KFx2NplndjC+kP63peM= +SHA256 (go_modules/golang.org/x/mod/@v/v0.21.0.mod) = 6+gZF0QRVCmfcyuKoJ8plSl1LfKYVcpNcCaUbRu+zYI= +SHA256 (go_modules/golang.org/x/mod/@v/v0.29.0.mod) = JVIB9tCpC4BHCwKdVrR5GONXy9PkO0bHgKxWEqWmgAQ= +SHA256 (go_modules/golang.org/x/mod/@v/v0.29.0.zip) = fHNmcscqpXG2XBEGu7KmTlh91CZaGPAFnJkPlcUReWI= +SHA256 (go_modules/golang.org/x/net/@v/v0.46.0.mod) = emR2w8b4a8zBMPw6Vb6bXiULng3PVNjLndixT5LXVBE= +SHA256 (go_modules/golang.org/x/net/@v/v0.46.0.zip) = qxdIsqUJqxf9ynoRAfrw4MGHnewO2Y4qcoMESTVtcNI= +SHA256 (go_modules/golang.org/x/sync/@v/v0.17.0.mod) = 0zPFS3SviguOx0jTfFly0nudCIueRci/XDq1INIRMJA= +SHA256 (go_modules/golang.org/x/sync/@v/v0.17.0.zip) = xdz9MuIj7cegA6UaFmqBdZpL7MuakeuFOFtNZ6HIIMY= +SHA256 (go_modules/golang.org/x/sys/@v/v0.26.0.mod) = 0iezJfYh9OvijTm6dz6pm4cPOTt8CcNFksNlsW3VYN4= +SHA256 (go_modules/golang.org/x/sys/@v/v0.37.0.mod) = 9BGBTYOpboZ4Gx3uQcEluVBNpUItujfMHWOwFq45z+I= +SHA256 (go_modules/golang.org/x/sys/@v/v0.47.0.mod) = V/Q5PqGNVEahI2OzXCOmFthD+hZpxxIacKK8OpZ31mU= +SHA256 (go_modules/golang.org/x/sys/@v/v0.47.0.zip) = zawBPdztAmKSbsKf/NpkXaOWcOYcflt2HlcraxgJuxs= +SHA256 (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.mod) = CRcBZmyGkD4z/5OVCq72lOYEvvD15Egv9oag8V7RSPA= +SHA256 (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.zip) = dljysAuB37X94CdwwuCW+gelxuO0XTn2zwrMzqaOL7M= +SHA256 (go_modules/golang.org/x/term/@v/v0.45.0.mod) = YsP50aWuEiZKtI4siswIyfIBvalhneFxVE61cUt0rsU= +SHA256 (go_modules/golang.org/x/term/@v/v0.45.0.zip) = s6OvaJcotDASrhshSCVxo1wDPFRemOAhYGvU/PH3kQg= +SHA256 (go_modules/golang.org/x/tools/@v/v0.26.0.mod) = L/wCTGvxTRRqy+FH+5gQTfO8Zgz7Fqdd4chP5QyKNNA= +SHA256 (go_modules/golang.org/x/tools/@v/v0.37.0.mod) = 29BOzSltTasnBnZq383S1SwnNFYT1jFoL4+kNxr1Su8= +SHA256 (go_modules/golang.org/x/tools/@v/v0.38.0.mod) = qViO2A/jO7EIuMicDihsTlyC+UqYJWSWrqCy5T3+yRQ= +SHA256 (go_modules/golang.org/x/tools/@v/v0.38.0.zip) = f1hwDaXDnY0ZWHIn0kIQEdTMoEB2wcE+u74Ui4UWd8Y= +SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.mod) = 6hl29DmEYwNahO3PuerQWQ4aqP3tMefo/3oNyjEOIuY= +SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.zip) = qlDEPnibAl8EvqlQ8QQxSUbS+qUDVEK/X3QV65eGD+E= +SHA256 (shfmt-v3.14.1.zip) = dEtRiyjbSyVviJVLf1Rh/i0oIvb1gYsTeIe/lxMXXiU= +SIZE (go_modules/github.com/creack/pty/@v/v1.1.24.mod) = 38 +SIZE (go_modules/github.com/creack/pty/@v/v1.1.24.zip) = 40880 SIZE (go_modules/github.com/creack/pty/@v/v1.1.9.mod) = 39 -SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = 121 -SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 55637 -SIZE (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 41 -SIZE (go_modules/github.com/google/go-cmp/@v/v0.5.9.zip) = 130220 -SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.0.mod) = 46 -SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.0.zip) = 22986 +SIZE (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.mod) = 504 +SIZE (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.zip) = 35901 +SIZE (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 41 +SIZE (go_modules/github.com/google/go-cmp/@v/v0.7.0.mod) = 41 +SIZE (go_modules/github.com/google/go-cmp/@v/v0.7.0.zip) = 130179 +SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.2.mod) = 46 +SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.2.zip) = 24151 SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = 117 SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 13388 SIZE (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 68 SIZE (go_modules/github.com/kr/text/@v/v0.2.0.zip) = 12607 SIZE (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.mod) = 36 SIZE (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.zip) = 219375 +SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.12.0.mod) = 167 +SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.mod) = 141 +SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.zip) = 196760 SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = 112 -SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = 210263 -SIZE (go_modules/golang.org/x/sync/@v/v0.1.0.mod) = 25 -SIZE (go_modules/golang.org/x/sync/@v/v0.1.0.zip) = 27781 -SIZE (go_modules/golang.org/x/sys/@v/v0.3.0.mod) = 33 -SIZE (go_modules/golang.org/x/sys/@v/v0.3.0.zip) = 1862151 -SIZE (go_modules/golang.org/x/term/@v/v0.3.0.mod) = 67 -SIZE (go_modules/golang.org/x/term/@v/v0.3.0.zip) = 19924 -SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.mod) = 38 -SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.zip) = 12867 -SIZE (shfmt-v3.6.0.zip) = 244864 +SIZE (go_modules/github.com/yuin/goldmark/@v/v1.4.13.mod) = 41 +SIZE (go_modules/github.com/yuin/goldmark/@v/v1.4.13.zip) = 229017 +SIZE (go_modules/golang.org/x/mod/@v/v0.21.0.mod) = 86 +SIZE (go_modules/golang.org/x/mod/@v/v0.29.0.mod) = 86 +SIZE (go_modules/golang.org/x/mod/@v/v0.29.0.zip) = 172650 +SIZE (go_modules/golang.org/x/net/@v/v0.46.0.mod) = 157 +SIZE (go_modules/golang.org/x/net/@v/v0.46.0.zip) = 1923996 +SIZE (go_modules/golang.org/x/sync/@v/v0.17.0.mod) = 36 +SIZE (go_modules/golang.org/x/sync/@v/v0.17.0.zip) = 25707 +SIZE (go_modules/golang.org/x/sys/@v/v0.26.0.mod) = 33 +SIZE (go_modules/golang.org/x/sys/@v/v0.37.0.mod) = 35 +SIZE (go_modules/golang.org/x/sys/@v/v0.47.0.mod) = 35 +SIZE (go_modules/golang.org/x/sys/@v/v0.47.0.zip) = 2022425 +SIZE (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.mod) = 133 +SIZE (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.zip) = 1017205 +SIZE (go_modules/golang.org/x/term/@v/v0.45.0.mod) = 70 +SIZE (go_modules/golang.org/x/term/@v/v0.45.0.zip) = 21694 +SIZE (go_modules/golang.org/x/tools/@v/v0.26.0.mod) = 341 +SIZE (go_modules/golang.org/x/tools/@v/v0.37.0.mod) = 301 +SIZE (go_modules/golang.org/x/tools/@v/v0.38.0.mod) = 301 +SIZE (go_modules/golang.org/x/tools/@v/v0.38.0.zip) = 2822153 +SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.mod) = 38 +SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.zip) = 13853 +SIZE (shfmt-v3.14.1.zip) = 347003 Index: devel/shfmt/modules.inc =================================================================== RCS file: /cvs/ports/devel/shfmt/modules.inc,v diff -u -p -u -p -r1.5 modules.inc --- devel/shfmt/modules.inc 18 Jun 2023 10:14:22 -0000 1.5 +++ devel/shfmt/modules.inc 19 Sep 2026 01:27:59 -0000 @@ -1,17 +1,30 @@ MODGO_MODULES = \ - github.com/creack/pty v1.1.18 \ - github.com/frankban/quicktest v1.14.4 \ - github.com/google/go-cmp v0.5.9 \ - github.com/google/renameio/v2 v2.0.0 \ + github.com/creack/pty v1.1.24 \ + github.com/go-quicktest/qt v1.102.0 \ + github.com/google/go-cmp v0.7.0 \ + github.com/google/renameio/v2 v2.0.2 \ github.com/kr/pretty v0.3.1 \ github.com/kr/text v0.2.0 \ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e \ - github.com/rogpeppe/go-internal v1.9.0 \ - golang.org/x/sync v0.1.0 \ - golang.org/x/sys v0.3.0 \ - golang.org/x/term v0.3.0 \ - mvdan.cc/editorconfig v0.2.0 + github.com/rogpeppe/go-internal v1.15.0 \ + github.com/yuin/goldmark v1.4.13 \ + golang.org/x/mod v0.29.0 \ + golang.org/x/net v0.46.0 \ + golang.org/x/sync v0.17.0 \ + golang.org/x/sys v0.47.0 \ + golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 \ + golang.org/x/term v0.45.0 \ + golang.org/x/tools v0.38.0 \ + mvdan.cc/editorconfig v0.3.0 MODGO_MODFILES = \ - github.com/creack/pty v1.1.9 + github.com/creack/pty v1.1.9 \ + github.com/google/go-cmp v0.6.0 \ + github.com/rogpeppe/go-internal v1.12.0 \ + github.com/rogpeppe/go-internal v1.9.0 \ + golang.org/x/mod v0.21.0 \ + golang.org/x/sys v0.26.0 \ + golang.org/x/sys v0.37.0 \ + golang.org/x/tools v0.26.0 \ + golang.org/x/tools v0.37.0