From e774bcd9099e9ebc7a01139e9114ac63a5f57db0 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 14 Nov 2022 17:33:12 +0300 Subject: [PATCH] Do not remove .lock --- cleanup.go | 10 ++++++++++ doc/news.texi | 9 +++++++++ run.go | 1 - usage.go | 8 ++++---- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/cleanup.go b/cleanup.go index d25aa3d..09a7220 100644 --- a/cleanup.go +++ b/cleanup.go @@ -32,6 +32,7 @@ const ( CleanupFull = "full" CleanupLog = "log" CleanupTmp = "tmp" + CleanupLock = "lock" ) var DryRun *bool @@ -75,6 +76,15 @@ func redoDirClean(root, what string) error { } } } + case CleanupLock: + if strings.HasSuffix(fi.Name(), LockSuffix) { + fmt.Println(pth) + if !*DryRun { + if err = os.Remove(pth); err != nil { + return err + } + } + } case CleanupTmp: if strings.HasPrefix(fi.Name(), TmpPrefix) { fmt.Println(pth) diff --git a/doc/news.texi b/doc/news.texi index 2e4a72b..fbfc811 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -2,6 +2,15 @@ @cindex news @unnumbered News +@anchor{Release 1_28_0} +@section Release 1.28.0 +@itemize +@item + Do not remove @file{.lock} files, that leads to possible races + between running targets. Although @command{nncp-cleanup lock} + can be used to cleanup. +@end itemize + @anchor{Release 1_27_1} @section Release 1.27.1 @itemize diff --git a/run.go b/run.go index 985db83..01da3b2 100644 --- a/run.go +++ b/run.go @@ -577,7 +577,6 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { os.Remove(fdDep.Name()) os.Remove(fdStdout.Name()) os.Remove(tmpPath) - os.Remove(fdLock.Name()) if FdStatus != nil { if _, err = FdStatus.Write([]byte{StatusDone}); err != nil { log.Fatalln(err) diff --git a/usage.go b/usage.go index a4db6e4..0b5fcf0 100644 --- a/usage.go +++ b/usage.go @@ -24,7 +24,7 @@ import ( ) const ( - Version = "1.27.1" + Version = "1.28.0" Warranty = `Copyright (C) 2020-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify @@ -62,10 +62,10 @@ Record ifcreate dependency for current target. Unusable outside .do.` Always build current target. Unusable outside .do.` case CmdNameRedoCleanup: - d = `Usage: redo-cleanup [-n] {full,log,tmp} [...] + d = `Usage: redo-cleanup [-n] {full,log,lock,tmp} [...] -Remove either all goredo's related temporary files, or kept stderr -logs, or everything (including .redo directories) related.` +Remove either all of goredo's related temporary files, or kept stderr +logs, or lock files, or everything (including .redo directories) related.` case CmdNameRedoLog: d = `Usage: redo-log [-c] [-r] target [ | tai64nlocal ] -- 2.44.0