Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package melange for openSUSE:Factory checked in at 2024-07-22 17:15:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/melange (Old) and /work/SRC/openSUSE:Factory/.melange.new.17339 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "melange" Mon Jul 22 17:15:08 2024 rev:29 rq:1188524 version:0.11.1 Changes: -------- --- /work/SRC/openSUSE:Factory/melange/melange.changes 2024-07-17 15:15:57.119827343 +0200 +++ /work/SRC/openSUSE:Factory/.melange.new.17339/melange.changes 2024-07-22 17:15:25.099068765 +0200 @@ -1,0 +2,6 @@ +Fri Jul 19 05:38:35 UTC 2024 - opensuse_buildserv...@ojkastl.de + +- Update to version 0.11.1: + * feat(sca): Generate dependency on Ruby when building gems + +------------------------------------------------------------------- Old: ---- melange-0.11.0.obscpio New: ---- melange-0.11.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ melange.spec ++++++ --- /var/tmp/diff_new_pack.dr0fku/_old 2024-07-22 17:15:28.155191658 +0200 +++ /var/tmp/diff_new_pack.dr0fku/_new 2024-07-22 17:15:28.175192463 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: melange -Version: 0.11.0 +Version: 0.11.1 Release: 0 Summary: Build APKs from source code License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.dr0fku/_old 2024-07-22 17:15:28.447203401 +0200 +++ /var/tmp/diff_new_pack.dr0fku/_new 2024-07-22 17:15:28.475204526 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/chainguard-dev/melange</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.11.0</param> + <param name="revision">v0.11.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.dr0fku/_old 2024-07-22 17:15:28.623210478 +0200 +++ /var/tmp/diff_new_pack.dr0fku/_new 2024-07-22 17:15:28.659211926 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/chainguard-dev/melange</param> - <param name="changesrevision">751494ab1c257e8e03ce3ec76bfb521846b032f9</param></service></servicedata> + <param name="changesrevision">a52edcc075ebf1dc89aea87893e3821944171ee3</param></service></servicedata> (No newline at EOF) ++++++ melange-0.11.0.obscpio -> melange-0.11.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/melange-0.11.0/pkg/sca/sca.go new/melange-0.11.1/pkg/sca/sca.go --- old/melange-0.11.0/pkg/sca/sca.go 2024-07-16 18:52:12.000000000 +0200 +++ new/melange-0.11.1/pkg/sca/sca.go 2024-07-19 03:42:34.000000000 +0200 @@ -556,6 +556,86 @@ return nil } +// generateRubyDeps generates a ruby-X.Y dependency for packages which ship +// Ruby gems. +func generateRubyDeps(ctx context.Context, hdl SCAHandle, generated *config.Dependencies) error { + log := clog.FromContext(ctx) + log.Infof("scanning for ruby gems...") + + fsys, err := hdl.Filesystem() + if err != nil { + return err + } + + var rubyGemVer string + if err := fs.WalkDir(fsys, ".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + // Ruby gems are installed in paths such as /usr/lib/ruby/gems/X.Y.Z/gems/..., + // so if we find a directory named gems, and its parent is a ruby directory, + // then we have a Ruby gem directory. + basename := filepath.Base(path) + if basename != "gems" { + return nil + } + + parent := filepath.Dir(path) + basename = filepath.Base(parent) + + // The gems path we want is nested in another gems directory, where the parent + // contains the Ruby version. Return if the parent is the Ruby directory + if basename == "ruby" { + return nil + } + + // Ruby versions are formatted as major.minor.patch + majorMinorPatch := `^\d+\.\d+\.\d+$` + + // Compile expected Ruby version format + re := regexp.MustCompile(majorMinorPatch) + + // Match the directory against version format + if !re.MatchString(basename) { + return nil + } + + // This probably shouldn't ever happen, but lets check to make sure. + if !d.IsDir() { + return nil + } + + // This takes the X.Y part of the ruby/gems/X.Y.Z directory name as the version to pin against. + // If the X.Y part is not present, then rubyModuleVer will remain an empty string and + // no dependency will be generated. + rubyGemVer = basename[:3] + return nil + }); err != nil { + return err + } + + // Nothing to do... + if rubyGemVer == "" { + return nil + } + + // Do not add a Ruby dependency if one already exists. + for _, dep := range hdl.BaseDependencies().Runtime { + if strings.HasPrefix(dep, "ruby") { + log.Warnf("%s: Ruby dependency %q already specified, consider removing it in favor of SCA-generated dependency", hdl.PackageName(), dep) + return nil + } + } + + log.Infof(" found ruby gem, generating ruby-%s dependency", rubyGemVer) + if !hdl.Options().NoDepends { + generated.Runtime = append(generated.Runtime, fmt.Sprintf("ruby-%s", rubyGemVer)) + } + + return nil +} + func sonameLibver(soname string) string { parts := strings.Split(soname, ".so.") if len(parts) < 2 { @@ -677,6 +757,7 @@ generateCmdProviders, generatePkgConfigDeps, generatePythonDeps, + generateRubyDeps, generateShbangDeps, } ++++++ melange.obsinfo ++++++ --- /var/tmp/diff_new_pack.dr0fku/_old 2024-07-22 17:15:29.215234284 +0200 +++ /var/tmp/diff_new_pack.dr0fku/_new 2024-07-22 17:15:29.235235089 +0200 @@ -1,5 +1,5 @@ name: melange -version: 0.11.0 -mtime: 1721148732 -commit: 751494ab1c257e8e03ce3ec76bfb521846b032f9 +version: 0.11.1 +mtime: 1721353354 +commit: a52edcc075ebf1dc89aea87893e3821944171ee3 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/melange/vendor.tar.gz /work/SRC/openSUSE:Factory/.melange.new.17339/vendor.tar.gz differ: char 5, line 1