diff --git a/internal/translations/default.pot b/internal/translations/default.pot index d878495..5c6c28b 100644 --- a/internal/translations/default.pot +++ b/internal/translations/default.pot @@ -343,35 +343,35 @@ msgstr "" msgid "Installing build dependencies" msgstr "" -#: pkg/build/build.go:468 +#: pkg/build/build.go:498 msgid "Installing dependencies" msgstr "" -#: pkg/build/build.go:521 +#: pkg/build/build.go:533 msgid "The checksums array must be the same length as sources" msgstr "" -#: pkg/build/build.go:572 +#: pkg/build/build.go:584 msgid "Would you like to remove the build dependencies?" msgstr "" -#: pkg/build/build.go:635 +#: pkg/build/build.go:647 msgid "Executing prepare()" msgstr "" -#: pkg/build/build.go:645 +#: pkg/build/build.go:657 msgid "Executing build()" msgstr "" -#: pkg/build/build.go:675 pkg/build/build.go:695 +#: pkg/build/build.go:687 pkg/build/build.go:707 msgid "Executing %s()" msgstr "" -#: pkg/build/build.go:754 +#: pkg/build/build.go:766 msgid "Error installing native packages" msgstr "" -#: pkg/build/build.go:795 +#: pkg/build/build.go:790 msgid "Error installing package" msgstr "" diff --git a/internal/translations/po/ru/default.po b/internal/translations/po/ru/default.po index dad9ff6..7f6d85d 100644 --- a/internal/translations/po/ru/default.po +++ b/internal/translations/po/ru/default.po @@ -360,36 +360,36 @@ msgstr "Этот пакет уже установлен" msgid "Installing build dependencies" msgstr "Установка зависимостей сборки" -#: pkg/build/build.go:468 +#: pkg/build/build.go:498 msgid "Installing dependencies" msgstr "Установка зависимостей" -#: pkg/build/build.go:521 +#: pkg/build/build.go:533 msgid "The checksums array must be the same length as sources" msgstr "Массив контрольных сумм должен быть той же длины, что и источники" -#: pkg/build/build.go:572 +#: pkg/build/build.go:584 msgid "Would you like to remove the build dependencies?" msgstr "Хотели бы вы удалить зависимости сборки?" -#: pkg/build/build.go:635 +#: pkg/build/build.go:647 msgid "Executing prepare()" msgstr "Исполнение prepare()" -#: pkg/build/build.go:645 +#: pkg/build/build.go:657 msgid "Executing build()" msgstr "Исполнение build()" -#: pkg/build/build.go:675 pkg/build/build.go:695 +#: pkg/build/build.go:687 pkg/build/build.go:707 #, fuzzy msgid "Executing %s()" msgstr "Исполнение files()" -#: pkg/build/build.go:754 +#: pkg/build/build.go:766 msgid "Error installing native packages" msgstr "Ошибка при установке нативных пакетов" -#: pkg/build/build.go:795 +#: pkg/build/build.go:790 msgid "Error installing package" msgstr "Ошибка при установке пакета" diff --git a/pkg/build/build.go b/pkg/build/build.go index facdc7a..ccda8d7 100644 --- a/pkg/build/build.go +++ b/pkg/build/build.go @@ -463,6 +463,36 @@ func (b *Builder) installBuildDeps(ctx context.Context, buildDepends []string) ( return buildDeps, nil } +func (b *Builder) getBuildersForPackages(pkgs []db.Package) []*Builder { + type item struct { + pkg *db.Package + packages []string + } + pkgsMap := make(map[string]*item) + for _, pkg := range pkgs { + if pkgsMap[pkg.BasePkgName] == nil { + pkgsMap[pkg.BasePkgName] = &item{ + pkg: &pkg, + } + } + pkgsMap[pkg.BasePkgName].packages = append( + pkgsMap[pkg.BasePkgName].packages, + pkg.Name, + ) + } + + builders := []*Builder{} + + for basePkgName := range pkgsMap { + pkg := pkgsMap[basePkgName].pkg + builder := *b + builder.UpdateOptsFromPkg(pkg, pkgsMap[basePkgName].packages) + builders = append(builders, &builder) + } + + return builders +} + func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPaths, builtNames, repoDeps []string, err error) { if len(depends) > 0 { slog.Info(gotext.Get("Installing dependencies")) @@ -475,28 +505,10 @@ func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPath // Если для некоторых пакетов есть несколько опций, упрощаем их все в один срез pkgs := cliutils.FlattenPkgs(ctx, found, "install", b.opts.Interactive) - - type x struct { - pkg *db.Package - packages []string - } - xx := make(map[string]*x) - for _, pkg := range pkgs { - if xx[pkg.BasePkgName] == nil { - xx[pkg.BasePkgName] = &x{ - pkg: &pkg, - } - } - xx[pkg.BasePkgName].packages = append(xx[pkg.BasePkgName].packages, pkg.Name) - } - - for basePkgName := range xx { - pkg := xx[basePkgName].pkg - newB := *b - newB.UpdateOptsFromPkg(pkg, xx[basePkgName].packages) - + builders := b.getBuildersForPackages(pkgs) + for _, builder := range builders { // Собираем зависимости - pkgPaths, pkgNames, err := newB.BuildPackage(ctx) + pkgPaths, pkgNames, err := builder.BuildPackage(ctx) if err != nil { return nil, nil, nil, err } @@ -762,25 +774,8 @@ func (b *Builder) InstallPkgs( } func (b *Builder) InstallALRPackages(ctx context.Context, pkgs []db.Package, opts types.BuildOpts) { - type x struct { - pkg *db.Package - packages []string - } - xx := make(map[string]*x) - for _, pkg := range pkgs { - if xx[pkg.BasePkgName] == nil { - xx[pkg.BasePkgName] = &x{ - pkg: &pkg, - } - } - xx[pkg.BasePkgName].packages = append(xx[pkg.BasePkgName].packages, pkg.Name) - } - - for basePkgName := range xx { - pkg := xx[basePkgName].pkg - builder := *b - builder.UpdateOptsFromPkg(pkg, xx[basePkgName].packages) - + builders := b.getBuildersForPackages(pkgs) + for _, builder := range builders { builtPkgs, _, err := builder.BuildPackage(ctx) // Выполняем сборку пакета if err != nil {