From cf804ec66ba490cf09d8f4df4ed867f35f5d57f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=28=D0=A5?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D1=8B=D1=87=D0=AA=29=20=D0=A5=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Sun, 21 Sep 2025 17:50:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B0=20=D1=81=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=B8=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20(=D0=B2?= =?UTF-8?q?=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B5=20=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.go | 7 +++++++ internal/build/script_executor.go | 19 +++++++++++++++++-- internal/build/utils.go | 13 ++++++++----- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/build.go b/build.go index dd947cd..91f30fd 100644 --- a/build.go +++ b/build.go @@ -197,6 +197,13 @@ func BuildCmd() *cli.Command { for _, pkg := range res { name := filepath.Base(pkg.Path) + + // Проверяем, существует ли файл перед перемещением + if _, err := os.Stat(pkg.Path); os.IsNotExist(err) { + slog.Info("Package file already moved or removed, skipping", "path", pkg.Path) + continue + } + err = osutils.Move(pkg.Path, filepath.Join(wd, name)) if err != nil { return cliutils.FormatCliExit(gotext.Get("Error moving the package"), err) diff --git a/internal/build/script_executor.go b/internal/build/script_executor.go index 18417d5..1bd1b11 100644 --- a/internal/build/script_executor.go +++ b/internal/build/script_executor.go @@ -167,15 +167,30 @@ func (e *LocalScriptExecutor) ExecuteSecondPass( pkgName := packager.ConventionalFileName(pkgInfo) // Получаем имя файла пакета pkgPath := filepath.Join(dirs.BaseDir, pkgName) // Определяем путь к пакету + slog.Info("Creating package file", "path", pkgPath, "name", pkgName) + pkgFile, err := os.Create(pkgPath) if err != nil { + slog.Error("Failed to create package file", "path", pkgPath, "error", err) + return nil, err + } + defer pkgFile.Close() + + slog.Info("Packaging with nfpm", "format", pkgFormat) + err = packager.Package(pkgInfo, pkgFile) + if err != nil { + slog.Error("Failed to create package", "path", pkgPath, "error", err) return nil, err } - err = packager.Package(pkgInfo, pkgFile) - if err != nil { + slog.Info("Package created successfully", "path", pkgPath) + + // Проверяем, что файл действительно существует + if _, err := os.Stat(pkgPath); err != nil { + slog.Error("Package file not found after creation", "path", pkgPath, "error", err) return nil, err } + slog.Info("Package file verified to exist", "path", pkgPath) builtDeps = append(builtDeps, &BuiltDep{ Name: vars.Name, diff --git a/internal/build/utils.go b/internal/build/utils.go index e6efc75..914a80f 100644 --- a/internal/build/utils.go +++ b/internal/build/utils.go @@ -49,12 +49,15 @@ import ( // Функция prepareDirs подготавливает директории для сборки. func prepareDirs(dirs types.Directories) error { - // Пробуем удалить базовую директорию, если она существует - err := os.RemoveAll(dirs.BaseDir) + // Удаляем только директории источников и упаковки, не трогаем файлы пакетов в BaseDir + err := os.RemoveAll(dirs.SrcDir) if err != nil { - // Если не можем удалить (например, принадлежит root), логируем и продолжаем - // Новые директории будут созданы или перезаписаны - slog.Debug("Failed to remove base directory", "path", dirs.BaseDir, "error", err) + slog.Debug("Failed to remove src directory", "path", dirs.SrcDir, "error", err) + } + + err = os.RemoveAll(dirs.PkgDir) + if err != nil { + slog.Debug("Failed to remove pkg directory", "path", dirs.PkgDir, "error", err) } // Создаем базовую директорию для пакета с setgid битом