Patchwork wipe-sysroot: explain what is being deleted and require confirmation

login
register
mail settings
Submitter Ross Burton
Date Nov. 1, 2013, 7:47 p.m.
Message ID <1383335233-12366-1-git-send-email-ross.burton@intel.com>
Download mbox | patch
Permalink /patch/61017/
State New
Headers show

Comments

Ross Burton - Nov. 1, 2013, 7:47 p.m.
Instead of rushing into deleting entire directory trees without any warning,
print the directories and files that will be deleted and require confirmation
from the user (via --force) that they want files to be deleted.

[ YOCTO #5423 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 scripts/wipe-sysroot |   27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)
Phil Blundell - Nov. 1, 2013, 9:04 p.m.
On Fri, 2013-11-01 at 19:47 +0000, Ross Burton wrote:
> Instead of rushing into deleting entire directory trees without any warning,
> print the directories and files that will be deleted and require confirmation
> from the user (via --force) that they want files to be deleted.

"--force" seems like a bit of an odd name for an argument that you have
to supply in order for the script to do anything useful.  Why would the
user be running a script named "wipe-sysroot" if they didn't want the
sysroot to be deleted?

p.
Ross Burton - Nov. 1, 2013, 11:21 p.m.
On 1 November 2013 21:04, Phil Blundell <pb@pbcl.net> wrote:
> On Fri, 2013-11-01 at 19:47 +0000, Ross Burton wrote:
>> Instead of rushing into deleting entire directory trees without any warning,
>> print the directories and files that will be deleted and require confirmation
>> from the user (via --force) that they want files to be deleted.
>
> "--force" seems like a bit of an odd name for an argument that you have
> to supply in order for the script to do anything useful.  Why would the
> user be running a script named "wipe-sysroot" if they didn't want the
> sysroot to be deleted?

I'm open to alternative wording but the essence is "don't delete stuff
if the user does something like wipe-sysroot --help".

Ross
Phil Blundell - Nov. 2, 2013, 4:19 p.m.
On Fri, 2013-11-01 at 23:21 +0000, Burton, Ross wrote:
> On 1 November 2013 21:04, Phil Blundell <pb@pbcl.net> wrote:
> > On Fri, 2013-11-01 at 19:47 +0000, Ross Burton wrote:
> >> Instead of rushing into deleting entire directory trees without any warning,
> >> print the directories and files that will be deleted and require confirmation
> >> from the user (via --force) that they want files to be deleted.
> >
> > "--force" seems like a bit of an odd name for an argument that you have
> > to supply in order for the script to do anything useful.  Why would the
> > user be running a script named "wipe-sysroot" if they didn't want the
> > sysroot to be deleted?
> 
> I'm open to alternative wording but the essence is "don't delete stuff
> if the user does something like wipe-sysroot --help".

How about:

if [ $# -gt 0 ]; then
  echo "Usage: $0" >&2
  exit 1
fi

p.

Patch

diff --git a/scripts/wipe-sysroot b/scripts/wipe-sysroot
index 7ca26fe..306c877 100755
--- a/scripts/wipe-sysroot
+++ b/scripts/wipe-sysroot
@@ -33,14 +33,23 @@  if [ -z "$SSTATE_MANIFESTS" -o -z "$STAGING_DIR" -o -z "$STAMPS_DIR" ]; then
     exit 1
 fi
 
-# The sysroots themselves
-rm -rf $STAGING_DIR
+echo "Will delete $STAGING_DIR."
+echo "Will also delete selected stamps from $SSTATE_MANIFESTS and $STAMPS_DIR."
 
-# The stamps that said the sysroot was populated
-rm -rf $STAMPS_DIR/*/*/*.do_populate_sysroot.*
-rm -rf $STAMPS_DIR/*/*/*.do_populate_sysroot_setscene.*
-rm -rf $STAMPS_DIR/*/*/*.do_packagedata.*
-rm -rf $STAMPS_DIR/*/*/*.do_packagedata_setscene.*
+if [ "$1" = "--force" ]; then
+    echo "Deleting..."
 
-# The sstate manifests
-rm -rf $SSTATE_MANIFESTS/manifest-*.populate-sysroot
+    # The sysroots themselves
+    rm -rf $STAGING_DIR
+
+    # The stamps that said the sysroot was populated
+    rm -rf $STAMPS_DIR/*/*/*.do_populate_sysroot.*
+    rm -rf $STAMPS_DIR/*/*/*.do_populate_sysroot_setscene.*
+    rm -rf $STAMPS_DIR/*/*/*.do_packagedata.*
+    rm -rf $STAMPS_DIR/*/*/*.do_packagedata_setscene.*
+
+    # The sstate manifests
+    rm -rf $SSTATE_MANIFESTS/manifest-*.populate-sysroot
+else
+    echo "\nThis was a dry-run.  Run with --force to delete the files."
+fi