Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rpm2docserv for openSUSE:Factory checked in at 2026-10-06 19:20:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rpm2docserv (Old) and /work/SRC/openSUSE:Factory/.rpm2docserv.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpm2docserv" Tue Oct 6 19:20:01 2026 rev:27 rq:1382743 version:20261006.d75a629 Changes: -------- --- /work/SRC/openSUSE:Factory/rpm2docserv/rpm2docserv.changes 2026-07-07 21:09:20.715039266 +0200 +++ /work/SRC/openSUSE:Factory/.rpm2docserv.new.3698736/rpm2docserv.changes 2026-10-06 19:20:09.130909941 +0200 @@ -1,0 +2,9 @@ +Tue Oct 06 10:37:23 UTC 2026 - Thorsten Kukuk <[email protected]> + +- Update to version 20261006.d75a629: + * Update go dependencies + * Dockerfile: Fix path to nginx.conf + * Add missing dependency in Makefile + * Fix rendering of fragment links (section links) with colons + +------------------------------------------------------------------- Old: ---- rpm2docserv-20260707.78c4c29.tar.xz New: ---- rpm2docserv-20261006.d75a629.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rpm2docserv.spec ++++++ --- /var/tmp/diff_new_pack.tfTvLu/_old 2026-10-06 19:20:10.720976700 +0200 +++ /var/tmp/diff_new_pack.tfTvLu/_new 2026-10-06 19:20:10.722976784 +0200 @@ -21,7 +21,7 @@ %endif Name: rpm2docserv -Version: 20260707.78c4c29 +Version: 20261006.d75a629 Release: 0 Summary: Make manpages from RPMs accessible in a web browser License: Apache-2.0 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.tfTvLu/_old 2026-10-06 19:20:10.787979514 +0200 +++ /var/tmp/diff_new_pack.tfTvLu/_new 2026-10-06 19:20:10.791979682 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/thkukuk/rpm2docserv.git</param> - <param name="changesrevision">78c4c290d5986ac6f490c9e0c03ef88888209a9b</param></service> + <param name="changesrevision">d75a62961d4f25c55336bd0074041f2bad1d8cb6</param></service> </servicedata> (No newline at EOF) ++++++ rpm2docserv-20260707.78c4c29.tar.xz -> rpm2docserv-20261006.d75a629.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/Dockerfile new/rpm2docserv-20261006.d75a629/Dockerfile --- old/rpm2docserv-20260707.78c4c29/Dockerfile 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/Dockerfile 2026-10-06 11:45:40.000000000 +0200 @@ -18,7 +18,7 @@ COPY --from=build-stage /srv/docserv /srv/docserv COPY --from=build-stage /src/rpm2docserv/bin/* /usr/local/bin -COPY nginx/nginx.conf /usr/local/nginx/etc/ +COPY nginx/nginx.conf /etc/nginx/ COPY nginx/*.sh /docker-entrypoint.d/ COPY --from=build-stage /usr/bin/openssl /usr/bin/ COPY --from=build-stage /etc/ssl/openssl.cnf /etc/ssl/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/Dockerfile.microos new/rpm2docserv-20261006.d75a629/Dockerfile.microos --- old/rpm2docserv-20260707.78c4c29/Dockerfile.microos 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/Dockerfile.microos 2026-10-06 11:45:40.000000000 +0200 @@ -18,7 +18,7 @@ COPY --from=build-stage /srv/docserv /srv/docserv COPY --from=build-stage /src/rpm2docserv/bin/* /usr/local/bin -COPY nginx/nginx.conf /usr/local/nginx/etc/ +COPY nginx/nginx.conf /etc/nginx/ COPY nginx/*.sh /docker-entrypoint.d/ COPY --from=build-stage /usr/bin/openssl /usr/bin/ COPY --from=build-stage /etc/ssl/openssl.cnf /etc/ssl/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/Makefile new/rpm2docserv-20261006.d75a629/Makefile --- old/rpm2docserv-20260707.78c4c29/Makefile 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/Makefile 2026-10-06 11:45:40.000000000 +0200 @@ -28,7 +28,7 @@ bundle: ## Generate embedded files $(GO) generate bundle.go -build: ## Build the binary files +build: bundle ## Build the binary files $(GO) build -v -o bin/ $(USE_VENDOR) $(LOCAL_LDFLAGS) ./cmd/... clean: ## Remove previous builds diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/cmd/rpm2docserv/rendermanpage.go new/rpm2docserv-20261006.d75a629/cmd/rpm2docserv/rendermanpage.go --- old/rpm2docserv-20260707.78c4c29/cmd/rpm2docserv/rendermanpage.go 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/cmd/rpm2docserv/rendermanpage.go 2026-10-06 11:45:40.000000000 +0200 @@ -64,9 +64,9 @@ "LongSection": func(section string) string { return longSections[section] }, - "FragmentLink": func(fragment string) string { + "FragmentLink": func(fragment string) template.URL { u := url.URL{Fragment: strings.Replace(fragment, " ", "_", -1)} - return u.String() + return template.URL(u.String()) }, }). Parse(bundled.Asset("manpage.tmpl"))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/go.mod new/rpm2docserv-20261006.d75a629/go.mod --- old/rpm2docserv-20260707.78c4c29/go.mod 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/go.mod 2026-10-06 11:45:40.000000000 +0200 @@ -1,13 +1,13 @@ module github.com/thkukuk/rpm2docserv -go 1.25.0 +go 1.26.0 require ( - github.com/knqyf263/go-rpm-version v0.0.0-20240918084003-2afd7dc6a38f - golang.org/x/net v0.56.0 - golang.org/x/sync v0.21.0 - golang.org/x/text v0.39.0 + github.com/knqyf263/go-rpm-version v0.0.0-20260811110310-1815e1f1b790 + golang.org/x/net v0.59.0 + golang.org/x/sync v0.23.0 + golang.org/x/text v0.42.0 gopkg.in/yaml.v3 v3.0.1 ) -require google.golang.org/protobuf v1.36.11 +require google.golang.org/protobuf v1.36.12 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpm2docserv-20260707.78c4c29/go.sum new/rpm2docserv-20261006.d75a629/go.sum --- old/rpm2docserv-20260707.78c4c29/go.sum 2026-07-07 16:03:17.000000000 +0200 +++ new/rpm2docserv-20261006.d75a629/go.sum 2026-10-06 11:45:40.000000000 +0200 @@ -1,15 +1,15 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/knqyf263/go-rpm-version v0.0.0-20240918084003-2afd7dc6a38f h1:xt29M2T6STgldg+WEP51gGePQCsQvklmP2eIhPIBK3g= -github.com/knqyf263/go-rpm-version v0.0.0-20240918084003-2afd7dc6a38f/go.mod h1:i4sF0l1fFnY1aiw08QQSwVAFxHEm311Me3WsU/X7nL0= -golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= -golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/text v0.39.0 h1:UbZz4pLOvn600D6Oh6GGEI6VAmndrEBLv8/6BEXzyus= -golang.org/x/text v0.39.0/go.mod h1:3UwRclnC2g0TU9x8PZiyfOajCd1zaUNHF9cvqcQZ+ZM= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +github.com/knqyf263/go-rpm-version v0.0.0-20260811110310-1815e1f1b790 h1:2R0QOkcV/csVHDigcH1sMNP3fQLw4Wi1ZxG0oC+29Ts= +github.com/knqyf263/go-rpm-version v0.0.0-20260811110310-1815e1f1b790/go.mod h1:i4sF0l1fFnY1aiw08QQSwVAFxHEm311Me3WsU/X7nL0= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= +golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= +golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= +golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/knqyf263/go-rpm-version/README.md new/vendor/github.com/knqyf263/go-rpm-version/README.md --- old/vendor/github.com/knqyf263/go-rpm-version/README.md 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/github.com/knqyf263/go-rpm-version/README.md 2026-10-06 11:45:40.000000000 +0200 @@ -10,7 +10,7 @@ go-rpm-version is a library for parsing and comparing rpm versions For the original C implementation, see: -https://github.com/rpm-software-management/rpm/blob/master/lib/rpmvercmp.c#L16 +https://github.com/rpm-software-management/rpm/blob/master/rpmio/rpmvercmp.cc OS: RedHat/CentOS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/knqyf263/go-rpm-version/version.go new/vendor/github.com/knqyf263/go-rpm-version/version.go --- old/vendor/github.com/knqyf263/go-rpm-version/version.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/github.com/knqyf263/go-rpm-version/version.go 2026-10-06 11:45:40.000000000 +0200 @@ -10,9 +10,10 @@ "unicode" ) -// alphanumPattern is a regular expression to match all sequences of numeric -// characters or alphanumeric characters. -var alphanumPattern = regexp.MustCompile("([a-zA-Z]+)|([0-9]+)|(~)") +// alphanumPattern is a regular expression to match all sequences of alphabetic +// or numeric characters, as well as the tilde and the caret, +// which are separators with a special meaning in RPM version comparison. +var alphanumPattern = regexp.MustCompile(`([a-zA-Z]+)|([0-9]+)|([~^])`) // Version represents a package version. type Version struct { @@ -110,11 +111,11 @@ return version } -// rpmcmpver compares two version or release strings. -// Lifted from https://github.com/cavaliercoder/go-rpm/blob/master/version.go +// rpmvercmp compares two version or release strings. +// Lifted from https://github.com/cavaliergopher/rpm/blob/main/version.go // // For the original C implementation, see: -// https://github.com/rpm-software-management/rpm/blob/master/lib/rpmvercmp.c#L16 +// https://github.com/rpm-software-management/rpm/blob/master/rpmio/rpmvercmp.cc func rpmvercmp(a, b string) int { // shortcut for equality if a == b { @@ -140,6 +141,22 @@ return -1 } } + + // compare carets. The concept is the same as the tilde, except that + // a caret sorts after the base version instead of before it: + // 1.0~rc1 < 1.0 < 1.0^git1 < 1.0.1 + // The loop walks the common segments only, so both versions always + // have a segment here, e.g. "^" against "1" in 1.0^git1 vs 1.0.1. + // The case where one of them runs out of segments, e.g. 1.0 vs 1.0^, + // is left to the "most segments wins" rule at the end of this function. + if []rune(a)[0] == '^' || []rune(b)[0] == '^' { + if []rune(a)[0] != '^' { + return 1 + } + if []rune(b)[0] != '^' { + return -1 + } + } if unicode.IsNumber([]rune(a)[0]) { // numbers are always greater than alphas diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/net/html/escape.go new/vendor/golang.org/x/net/html/escape.go --- old/vendor/golang.org/x/net/html/escape.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/golang.org/x/net/html/escape.go 2026-10-06 11:45:40.000000000 +0200 @@ -154,10 +154,7 @@ } else if x := entity2[entityName]; x[0] != 0 { return x[0], x[1], i } else if !attribute { - maxLen := len(entityName) - 1 - if maxLen > longestEntityWithoutSemicolon { - maxLen = longestEntityWithoutSemicolon - } + maxLen := min(len(entityName)-1, longestEntityWithoutSemicolon) for j := maxLen; j > 1; j-- { if x := entity[entityName[:j]]; x != 0 { return x, 0, j + 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/encoding/prototext/decode.go new/vendor/google.golang.org/protobuf/encoding/prototext/decode.go --- old/vendor/google.golang.org/protobuf/encoding/prototext/decode.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/encoding/prototext/decode.go 2026-10-06 11:45:40.000000000 +0200 @@ -8,6 +8,7 @@ "fmt" "unicode/utf8" + "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/encoding/messageset" "google.golang.org/protobuf/internal/encoding/text" "google.golang.org/protobuf/internal/errors" @@ -49,12 +50,19 @@ protoregistry.MessageTypeResolver protoregistry.ExtensionTypeResolver } + + // RecursionLimit limits how deeply messages may be nested. + // If zero, a default limit is applied. + RecursionLimit int } // Unmarshal reads the given []byte and populates the given [proto.Message] // using options in the UnmarshalOptions object. // The provided message must be mutable (e.g., a non-nil pointer to a message). func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } return o.unmarshal(b, m) } @@ -102,8 +110,14 @@ return errors.New(head+f, x...) } +var errRecursionDepth = errors.New("exceeded maximum recursion depth") + // unmarshalMessage unmarshals into the given protoreflect.Message. func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error { + if d.opts.RecursionLimit--; d.opts.RecursionLimit < 0 { + return errRecursionDepth + } + messageDesc := m.Descriptor() if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { return errors.New("no support for proto1 MessageSets") @@ -437,6 +451,10 @@ // unmarshalMap unmarshals into given protoreflect.Map. A map value is a // textproto message containing {key: <kvalue>, value: <mvalue>}. func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error { + if d.opts.RecursionLimit--; d.opts.RecursionLimit < 0 { + return errRecursionDepth + } + // Determine ahead whether map entry is a scalar type or a message type in // order to call the appropriate unmarshalMapValue func inside // unmarshalMapEntry. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go new/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go --- old/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go 2026-10-06 11:45:40.000000000 +0200 @@ -83,12 +83,13 @@ case protoreflect.FileImports: for i := 0; i < vs.Len(); i++ { var rs records - rv := reflect.ValueOf(vs.Get(i)) - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("IsPublic"), "IsPublic"}, - {rv.MethodByName("IsWeak"), "IsWeak"}, + fi := vs.Get(i) + rv := reflect.ValueOf(fi) + rs.Append(rv, []attrAndName{ + {fi.Path(), "Path"}, + {fi.Package(), "Package"}, + {fi.IsPublic, "IsPublic"}, + {fi.IsWeak, "IsWeak"}, }...) ss = append(ss, "{"+rs.Join()+"}") } @@ -104,9 +105,9 @@ } } -type methodAndName struct { - method reflect.Value - name string +type attrAndName struct { + attr any + name string } func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { @@ -126,58 +127,58 @@ start = rt.Name() + "{" } - _, isFile := t.(protoreflect.FileDescriptor) + fd, isFile := t.(protoreflect.FileDescriptor) rs := records{ allowMulti: allowMulti, record: record, } if t.IsPlaceholder() { if isFile { - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + rs.Append(rv, []attrAndName{ + {fd.Path(), "Path"}, + {fd.Package(), "Package"}, + {fd.IsPlaceholder(), "IsPlaceholder"}, }...) } else { - rs.Append(rv, []methodAndName{ - {rv.MethodByName("FullName"), "FullName"}, - {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + rs.Append(rv, []attrAndName{ + {t.FullName(), "FullName"}, + {t.IsPlaceholder(), "IsPlaceholder"}, }...) } } else { switch { case isFile: - rs.Append(rv, methodAndName{rv.MethodByName("Syntax"), "Syntax"}) + rs.Append(rv, attrAndName{fd.Syntax(), "Syntax"}) case isRoot: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Syntax"), "Syntax"}, - {rv.MethodByName("FullName"), "FullName"}, + rs.Append(rv, []attrAndName{ + {t.Syntax(), "Syntax"}, + {t.FullName(), "FullName"}, }...) default: - rs.Append(rv, methodAndName{rv.MethodByName("Name"), "Name"}) + rs.Append(rv, attrAndName{t.Name(), "Name"}) } switch t := t.(type) { case protoreflect.FieldDescriptor: - accessors := []methodAndName{ - {rv.MethodByName("Number"), "Number"}, - {rv.MethodByName("Cardinality"), "Cardinality"}, - {rv.MethodByName("Kind"), "Kind"}, - {rv.MethodByName("HasJSONName"), "HasJSONName"}, - {rv.MethodByName("JSONName"), "JSONName"}, - {rv.MethodByName("HasPresence"), "HasPresence"}, - {rv.MethodByName("IsExtension"), "IsExtension"}, - {rv.MethodByName("IsPacked"), "IsPacked"}, - {rv.MethodByName("IsWeak"), "IsWeak"}, - {rv.MethodByName("IsList"), "IsList"}, - {rv.MethodByName("IsMap"), "IsMap"}, - {rv.MethodByName("MapKey"), "MapKey"}, - {rv.MethodByName("MapValue"), "MapValue"}, - {rv.MethodByName("HasDefault"), "HasDefault"}, - {rv.MethodByName("Default"), "Default"}, - {rv.MethodByName("ContainingOneof"), "ContainingOneof"}, - {rv.MethodByName("ContainingMessage"), "ContainingMessage"}, - {rv.MethodByName("Message"), "Message"}, - {rv.MethodByName("Enum"), "Enum"}, + accessors := []attrAndName{ + {t.Number(), "Number"}, + {t.Cardinality(), "Cardinality"}, + {t.Kind(), "Kind"}, + {t.HasJSONName(), "HasJSONName"}, + {t.JSONName(), "JSONName"}, + {t.HasPresence(), "HasPresence"}, + {t.IsExtension(), "IsExtension"}, + {t.IsPacked(), "IsPacked"}, + {t.IsWeak(), "IsWeak"}, + {t.IsList(), "IsList"}, + {t.IsMap(), "IsMap"}, + {t.MapKey(), "MapKey"}, + {t.MapValue(), "MapValue"}, + {t.HasDefault(), "HasDefault"}, + {t.Default(), "Default"}, + {t.ContainingOneof(), "ContainingOneof"}, + {t.ContainingMessage(), "ContainingMessage"}, + {t.Message(), "Message"}, + {t.Enum(), "Enum"}, } for _, s := range accessors { switch s.name { @@ -223,58 +224,54 @@ } case protoreflect.FileDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("Imports"), "Imports"}, - {rv.MethodByName("Messages"), "Messages"}, - {rv.MethodByName("Enums"), "Enums"}, - {rv.MethodByName("Extensions"), "Extensions"}, - {rv.MethodByName("Services"), "Services"}, + rs.Append(rv, []attrAndName{ + {t.Path(), "Path"}, + {t.Package(), "Package"}, + {t.Imports(), "Imports"}, + {t.Messages(), "Messages"}, + {t.Enums(), "Enums"}, + {t.Extensions(), "Extensions"}, + {t.Services(), "Services"}, }...) case protoreflect.MessageDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("IsMapEntry"), "IsMapEntry"}, - {rv.MethodByName("Fields"), "Fields"}, - {rv.MethodByName("Oneofs"), "Oneofs"}, - {rv.MethodByName("ReservedNames"), "ReservedNames"}, - {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, - {rv.MethodByName("RequiredNumbers"), "RequiredNumbers"}, - {rv.MethodByName("ExtensionRanges"), "ExtensionRanges"}, - {rv.MethodByName("Messages"), "Messages"}, - {rv.MethodByName("Enums"), "Enums"}, - {rv.MethodByName("Extensions"), "Extensions"}, + rs.Append(rv, []attrAndName{ + {t.IsMapEntry(), "IsMapEntry"}, + {t.Fields(), "Fields"}, + {t.Oneofs(), "Oneofs"}, + {t.ReservedNames(), "ReservedNames"}, + {t.ReservedRanges(), "ReservedRanges"}, + {t.RequiredNumbers(), "RequiredNumbers"}, + {t.ExtensionRanges(), "ExtensionRanges"}, + {t.Messages(), "Messages"}, + {t.Enums(), "Enums"}, + {t.Extensions(), "Extensions"}, }...) case protoreflect.EnumDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Values"), "Values"}, - {rv.MethodByName("ReservedNames"), "ReservedNames"}, - {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, - {rv.MethodByName("IsClosed"), "IsClosed"}, + rs.Append(rv, []attrAndName{ + {t.Values(), "Values"}, + {t.ReservedNames(), "ReservedNames"}, + {t.ReservedRanges(), "ReservedRanges"}, + {t.IsClosed(), "IsClosed"}, }...) case protoreflect.EnumValueDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Number"), "Number"}, - }...) + rs.Append(rv, attrAndName{t.Number(), "Number"}) case protoreflect.ServiceDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Methods"), "Methods"}, - }...) + rs.Append(rv, attrAndName{t.Methods(), "Methods"}) case protoreflect.MethodDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Input"), "Input"}, - {rv.MethodByName("Output"), "Output"}, - {rv.MethodByName("IsStreamingClient"), "IsStreamingClient"}, - {rv.MethodByName("IsStreamingServer"), "IsStreamingServer"}, + rs.Append(rv, []attrAndName{ + {t.Input(), "Input"}, + {t.Output(), "Output"}, + {t.IsStreamingClient(), "IsStreamingClient"}, + {t.IsStreamingServer(), "IsStreamingServer"}, }...) } - if m := rv.MethodByName("GoType"); m.IsValid() { - rs.Append(rv, methodAndName{m, "GoType"}) + if m, ok := t.(interface{ GoType() reflect.Type }); ok { + rs.Append(rv, attrAndName{m.GoType(), "GoType"}) } } return start + rs.Join() + end @@ -297,68 +294,66 @@ rs.recs = append(rs.recs, newRecs) } -func (rs *records) Append(v reflect.Value, accessors ...methodAndName) { - for _, a := range accessors { - if rs.record != nil { - rs.record(a.name) - } - var rv reflect.Value - if a.method.IsValid() { - rv = a.method.Call(nil)[0] - } - if v.Kind() == reflect.Struct && !rv.IsValid() { - rv = v.FieldByName(a.name) - } - if !rv.IsValid() { - panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a.name)) - } - if _, ok := rv.Interface().(protoreflect.Value); ok { - rv = rv.MethodByName("Interface").Call(nil)[0] - if !rv.IsNil() { - rv = rv.Elem() - } - } +func (rs *records) Append(v reflect.Value, results ...attrAndName) { + for _, r := range results { + rs.appendAttribute(v, r.name, r.attr) + } +} - // Ignore zero values. - var isZero bool - switch rv.Kind() { - case reflect.Interface, reflect.Slice: - isZero = rv.IsNil() - case reflect.Bool: - isZero = rv.Bool() == false - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - isZero = rv.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - isZero = rv.Uint() == 0 - case reflect.String: - isZero = rv.String() == "" - } - if n, ok := rv.Interface().(list); ok { - isZero = n.Len() == 0 - } - if isZero { - continue +func (rs *records) appendAttribute(val reflect.Value, name string, attrVal any) { + if rs.record != nil { + rs.record(name) + } + if attrVal == nil { + return + } + rv := reflect.ValueOf(attrVal) + if _, ok := rv.Interface().(protoreflect.Value); ok { + rv = rv.MethodByName("Interface").Call(nil)[0] + if !rv.IsNil() { + rv = rv.Elem() } + } - // Format the value. - var s string - v := rv.Interface() - switch v := v.(type) { - case list: - s = formatListOpt(v, false, rs.allowMulti) - case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: - s = string(v.(protoreflect.Descriptor).Name()) - case protoreflect.Descriptor: - s = string(v.FullName()) - case string: - s = strconv.Quote(v) - case []byte: - s = fmt.Sprintf("%q", v) - default: - s = fmt.Sprint(v) - } - rs.recs = append(rs.recs, [2]string{a.name, s}) + // Ignore zero values. + var isZero bool + switch rv.Kind() { + case reflect.Interface, reflect.Slice: + isZero = rv.IsNil() + case reflect.Bool: + isZero = rv.Bool() == false + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + isZero = rv.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + isZero = rv.Uint() == 0 + case reflect.String: + isZero = rv.String() == "" + } + if n, ok := rv.Interface().(list); ok { + isZero = n.Len() == 0 + } + if isZero { + return + } + + // Format the value. + var s string + v := rv.Interface() + switch v := v.(type) { + case list: + s = formatListOpt(v, false, rs.allowMulti) + case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: + s = string(v.(protoreflect.Descriptor).Name()) + case protoreflect.Descriptor: + s = string(v.FullName()) + case string: + s = strconv.Quote(v) + case []byte: + s = fmt.Sprintf("%q", v) + default: + s = fmt.Sprint(v) } + rs.recs = append(rs.recs, [2]string{name, s}) } func (rs *records) Join() string { Binary files old/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb and new/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go new/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go --- old/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go 2026-10-06 11:45:40.000000000 +0200 @@ -69,19 +69,19 @@ } } case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - if v, err := strconv.ParseInt(s, 10, 32); err == nil { + if v, err := strconv.ParseInt(s, 0, 32); err == nil { return protoreflect.ValueOfInt32(int32(v)), nil, nil } case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - if v, err := strconv.ParseInt(s, 10, 64); err == nil { + if v, err := strconv.ParseInt(s, 0, 64); err == nil { return protoreflect.ValueOfInt64(int64(v)), nil, nil } case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - if v, err := strconv.ParseUint(s, 10, 32); err == nil { + if v, err := strconv.ParseUint(s, 0, 32); err == nil { return protoreflect.ValueOfUint32(uint32(v)), nil, nil } case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - if v, err := strconv.ParseUint(s, 10, 64); err == nil { + if v, err := strconv.ParseUint(s, 0, 64); err == nil { return protoreflect.ValueOfUint64(uint64(v)), nil, nil } case protoreflect.FloatKind, protoreflect.DoubleKind: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go new/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go --- old/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go 2026-10-06 11:45:40.000000000 +0200 @@ -26,6 +26,7 @@ Edition_EDITION_PROTO3_enum_value = 999 Edition_EDITION_2023_enum_value = 1000 Edition_EDITION_2024_enum_value = 1001 + Edition_EDITION_2026_enum_value = 1002 Edition_EDITION_UNSTABLE_enum_value = 9999 Edition_EDITION_1_TEST_ONLY_enum_value = 1 Edition_EDITION_2_TEST_ONLY_enum_value = 2 @@ -806,11 +807,13 @@ FieldOptions_FeatureSupport_EditionDeprecated_field_name protoreflect.Name = "edition_deprecated" FieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = "deprecation_warning" FieldOptions_FeatureSupport_EditionRemoved_field_name protoreflect.Name = "edition_removed" + FieldOptions_FeatureSupport_RemovalError_field_name protoreflect.Name = "removal_error" FieldOptions_FeatureSupport_EditionIntroduced_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_introduced" FieldOptions_FeatureSupport_EditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_deprecated" FieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.deprecation_warning" FieldOptions_FeatureSupport_EditionRemoved_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_removed" + FieldOptions_FeatureSupport_RemovalError_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.removal_error" ) // Field numbers for google.protobuf.FieldOptions.FeatureSupport. @@ -819,6 +822,7 @@ FieldOptions_FeatureSupport_EditionDeprecated_field_number protoreflect.FieldNumber = 2 FieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3 FieldOptions_FeatureSupport_EditionRemoved_field_number protoreflect.FieldNumber = 4 + FieldOptions_FeatureSupport_RemovalError_field_number protoreflect.FieldNumber = 5 ) // Names for google.protobuf.OneofOptions. @@ -1152,6 +1156,7 @@ FeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN_enum_value = 0 FeatureSet_STYLE2024_enum_value = 1 FeatureSet_STYLE_LEGACY_enum_value = 2 + FeatureSet_STYLE2026_enum_value = 3 ) // Names for google.protobuf.FeatureSet.VisibilityFeature. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/internal/version/version.go new/vendor/google.golang.org/protobuf/internal/version/version.go --- old/vendor/google.golang.org/protobuf/internal/version/version.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/internal/version/version.go 2026-10-06 11:45:40.000000000 +0200 @@ -52,7 +52,7 @@ const ( Major = 1 Minor = 36 - Patch = 11 + Patch = 12 PreRelease = "" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go new/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go --- old/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go 2026-10-06 11:45:40.000000000 +0200 @@ -546,6 +546,8 @@ b = p.appendSingularField(b, "deprecation_warning", nil) case 4: b = p.appendSingularField(b, "edition_removed", nil) + case 5: + b = p.appendSingularField(b, "removal_error", nil) } return b } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2026-07-07 16:03:17.000000000 +0200 +++ new/vendor/modules.txt 2026-10-06 11:45:40.000000000 +0200 @@ -1,23 +1,23 @@ -# github.com/knqyf263/go-rpm-version v0.0.0-20240918084003-2afd7dc6a38f +# github.com/knqyf263/go-rpm-version v0.0.0-20260811110310-1815e1f1b790 ## explicit github.com/knqyf263/go-rpm-version -# golang.org/x/net v0.56.0 -## explicit; go 1.25.0 +# golang.org/x/net v0.59.0 +## explicit; go 1.26.0 golang.org/x/net/context golang.org/x/net/html golang.org/x/net/html/atom -# golang.org/x/sync v0.21.0 -## explicit; go 1.25.0 +# golang.org/x/sync v0.23.0 +## explicit; go 1.26.0 golang.org/x/sync/errgroup -# golang.org/x/text v0.39.0 -## explicit; go 1.25.0 +# golang.org/x/text v0.42.0 +## explicit; go 1.26.0 golang.org/x/text/internal/format golang.org/x/text/internal/language golang.org/x/text/internal/language/compact golang.org/x/text/internal/tag golang.org/x/text/language golang.org/x/text/language/display -# google.golang.org/protobuf v1.36.11 +# google.golang.org/protobuf v1.36.12 ## explicit; go 1.23 google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire
