summaryrefslogtreecommitdiffstats
path: root/patches/dracut/dracut-install-ash.patch
blob: 5cae3d9b7479839364e4e75daa5491dbfeb7dd96 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
index b1b2391b..6cee3f8e 100644
--- a/src/install/dracut-install.c
+++ b/src/install/dracut-install.c
@@ -440,7 +440,7 @@ normal_copy:
         const char *preservation = (geteuid() == 0
                                     && no_xattr == false) ? "--preserve=mode,xattr,timestamps,ownership" : "--preserve=mode,timestamps,ownership";
         if (pid == 0) {
-                execlp("cp", "cp", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL);
+                execlp("cp", "cp", "--remove-destination", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL);
                 _exit(errno == ENOENT ? 127 : 126);
         }
 
@@ -1203,6 +1203,8 @@ static int resolve_deps(const char *src, Hashmap *pdeps)
                 char *p, *q;
                 for (p = &shebang[2]; *p && isspace(*p); p++) ;
                 for (q = p; *q && (!isspace(*q)); q++) ;
+                if (strncmp(p, "/bin/ash", q - p) == 0)
+                        goto finish;
                 char *interpreter = strndup(p, q - p);
                 log_debug("Script install: '%s'", interpreter);
                 ret = dracut_install(interpreter, interpreter, false, true, false);