Error during yq COPR build: p.Comment undefined (type printer.Printer has no field or method Comment)

I’m trying to get a Fedora package build together for yq 4.45.4, on COPR. I’m using this spec file. During rpmbuild, I get this full output, with this error:

/usr/lib/golang/pkg/tool/linux_amd64/compile -o $WORK/b056/_pkg_.a -trimpath "$WORK/b056=>" -p github.com/mikefarah/yq/pkg/yqlib -lang=go1.23 -complete -installsuffix shared -buildid p_allGbTh1ZPO-mIXNIA/p_allGbTh1ZPO-mIXNIA -goversion go1.23.10 -c=4 -shared -nolocalimports -importcfg $WORK/b056/importcfg -pack ./_build/src/github.com/mikefarah/yq/pkg/yqlib/all_at_once_evaluator.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/candidate_node.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/candidate_node_goccy_yaml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/candidate_node_yaml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/candidiate_node_json.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/chown_linux.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/color_print.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/context.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/csv.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/data_tree_navigator.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_base64.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_csv_object.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_goccy_yaml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_json.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_lua.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_properties.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_toml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_uri.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_xml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/decoder_yaml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_base64.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_csv.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_json.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_lua.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_properties.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_sh.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_shellvariables.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_toml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_uri.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_xml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/encoder_yaml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/expression_parser.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/expression_postfix.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/file_utils.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/format.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/front_matter.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/json.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/lexer.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/lexer_participle.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/lib.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/lua.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/matchKeyString.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operation.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_add.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_alternative.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_anchors_aliases.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_assign.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_booleans.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_collect.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_collect_object.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_column.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_comments.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_compare.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_contains.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_create_map.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_datetime.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_delete.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_divide.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_document_index.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_encoder_decoder.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_entries.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_env.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_equals.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_error.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_eval.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_expression.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_file.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_filter.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_flatten.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_group_by.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_has.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_keys.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_kind.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_length.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_line.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_load.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_map.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_modulo.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_multiply.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_omit.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_parent.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_path.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_pick.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_pipe.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_pivot.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_recursive_descent.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_reduce.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_reverse.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_select.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_self.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_shuffle.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_slice.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_sort.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_sort_keys.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_split_document.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_strings.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_style.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_subtract.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_tag.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_to_number.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_traverse_path.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_union.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_unique.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_value.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_variables.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operator_with.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/operators.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/printer.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/printer_writer.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/properties.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/stream_evaluator.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/string_evaluator.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/utils.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/write_in_place_handler.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/xml.go ./_build/src/github.com/mikefarah/yq/pkg/yqlib/yaml.go
# github.com/mikefarah/yq/pkg/yqlib
_build/src/github.com/mikefarah/yq/pkg/yqlib/color_print.go:59:4: p.Comment undefined (type printer.Printer has no field or method Comment)
error: Bad exit status from /var/tmp/rpm-tmp.ettcXl (%build)
    Bad exit status from /var/tmp/rpm-tmp.ettcXl (%build)

I went ahead and asked in yq’s discussion board if they had any ideas around the compilation error itself. But I’m wondering if anybody can give me direction on how I would go about getting past this error? I used go2rpm, and it originally had an autopatch call, but I’m not sure how I’d go about actually generating that patch, even if I understood the error.

For what it’s worth, I checked out that release tag and was able to run a naive go build locally. I also scanned the go packaging guidelines, and while I did see mention of patching, I didn’t see a clear walkthrough of how I would go about doing that.

Thanks ahead of time for any guidance people can offer!

It works for me using the Fedora’s specfile:
Tree - rpms/yq - src.fedoraproject.org

--- a/yq.spec
+++ b/yq.spec
@@ -6 +6 @@
-Version:                4.43.1
+Version:                4.45.4
@@ -26 +25,0 @@ Source:         %{gosource}
-Patch:          https://github.com/mikefarah/yq/commit/6908161f1fb6713db8259909c606109770fe7673.patch#/yq-go1_24-replace_error_creation.diff
@@ -34 +32,0 @@ Patch:          https://github.com/mikefarah/yq/commit/6908161f1fb6713db8259909c
-%autopatch -p1

Ah! Fedora started packaging it when I wasn’t looking! Most excellent - that works for me.

1 Like

I did do some investigation here, and I did - I think - find the issue. The go.mod for yq calls for goccy/go-yaml version 1.18.0, but Fedora 41 packages 1.11.3. I suspect that the “comment” feature was added after that version. It looks like you were able to build - I’m guessing that’s against F42.

Still, my immediate problem is solved by Fedora having started packaging yq when I wasn’t looking.