diff --git a/internal/build/utils.go b/internal/build/utils.go index b5bb92f..f19dc53 100644 --- a/internal/build/utils.go +++ b/internal/build/utils.go @@ -19,6 +19,7 @@ package build import ( "fmt" "io" + "log/slog" "os" "path/filepath" "regexp" @@ -51,8 +52,9 @@ func prepareDirs(dirs types.Directories) error { // Пробуем удалить базовую директорию, если она существует err := os.RemoveAll(dirs.BaseDir) if err != nil { - // Если не можем удалить (например, принадлежит root), игнорируем - // и попробуем создать новые директории + // Если не можем удалить (например, принадлежит root), логируем и продолжаем + // Новые директории будут созданы или перезаписаны + slog.Debug("Failed to remove base directory", "path", dirs.BaseDir, "error", err) } // Создаем директории с правильным владельцем для /tmp/alr с setgid битом diff --git a/internal/gen/aur.go b/internal/gen/aur.go index 99c1236..9356128 100644 --- a/internal/gen/aur.go +++ b/internal/gen/aur.go @@ -206,11 +206,7 @@ func (r aurResult) GenerateInstallCommands() string { // install-license команды for _, license := range r.LicenseFiles { - if license == "LICENSE" || license == "./LICENSE" { - commands = append(commands, fmt.Sprintf("\tinstall-license %s %s/LICENSE", license, r.Name)) - } else { - commands = append(commands, fmt.Sprintf("\tinstall-license %s %s/LICENSE", license, r.Name)) - } + commands = append(commands, fmt.Sprintf("\tinstall-license %s %s/LICENSE", license, r.Name)) } // install-manual команды @@ -302,7 +298,6 @@ func parseSources(pkgbuild string) []string { source = strings.ReplaceAll(source, "${pkgname}", "${name}") // Обрабатываем другие переменные (упрощенно) source = strings.ReplaceAll(source, "$_commit", "${_commit}") - source = strings.ReplaceAll(source, "${_commit}", "${_commit}") sources = append(sources, source) } } diff --git a/pkg/dlcache/dlcache.go b/pkg/dlcache/dlcache.go index 5207d37..1a1cbb0 100644 --- a/pkg/dlcache/dlcache.go +++ b/pkg/dlcache/dlcache.go @@ -62,8 +62,8 @@ func (dc *DownloadCache) New(ctx context.Context, id string) (string, error) { } } - // Используем специальную функцию для создания каталогов - err = utils.EnsureTempDirWithRootOwner(itemPath, 0o755) + // Используем специальную функцию для создания каталогов с setgid битом + err = utils.EnsureTempDirWithRootOwner(itemPath, 0o2775) if err != nil { return "", err } diff --git a/pkg/dlcache/dlcache_test.go b/pkg/dlcache/dlcache_test.go index 247bad6..a7ccb8e 100644 --- a/pkg/dlcache/dlcache_test.go +++ b/pkg/dlcache/dlcache_test.go @@ -82,6 +82,12 @@ func TestNew(t *testing.T) { fi, err := os.Stat(dir) if err != nil { t.Errorf("stat: expected no error, got %s", err) + return + } + + if fi == nil { + t.Errorf("Expected file info to not be nil") + return } if !fi.IsDir() {