teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone

Blame 0015-reset-buildid-file-attrs.patch

Mark Wielaard 3e1463
diff --git a/build/files.c b/build/files.c
Mark Wielaard 3e1463
index 6021643..9479e6e 100644
Mark Wielaard 3e1463
--- a/build/files.c
Mark Wielaard 3e1463
+++ b/build/files.c
Mark Wielaard 3e1463
@@ -1797,6 +1797,7 @@ static int generateBuildIDs(FileList fl)
Mark Wielaard 3e1463
 	char *mainiddir = NULL;
Mark Wielaard 3e1463
 	char *debugiddir = NULL;
Mark Wielaard 3e1463
 	if (rc == 0) {
Mark Wielaard 3e1463
+	    char *attrstr;
Mark Wielaard 3e1463
 	    /* Add .build-id directories to hold the subdirs/symlinks.  */
Mark Wielaard 3e1463
             #define BUILD_ID_DIR "/usr/lib/.build-id"
Mark Wielaard 3e1463
             #define DEBUG_ID_DIR "/usr/lib/debug/.build-id"
Mark Wielaard 3e1463
@@ -1804,6 +1805,18 @@ static int generateBuildIDs(FileList fl)
Mark Wielaard 3e1463
 	    mainiddir = rpmGetPath(fl->buildRoot, BUILD_ID_DIR, NULL);
Mark Wielaard 3e1463
 	    debugiddir = rpmGetPath(fl->buildRoot, DEBUG_ID_DIR, NULL);
Mark Wielaard 3e1463
 
Mark Wielaard 3e1463
+	    /* Make sure to reset all file flags to defaults.
Mark Wielaard 3e1463
+	       Uses parseForAttr to reset ar, arFlags, and specdFlags.
Mark Wielaard 3e1463
+	       Note that parseForAttr pokes at the attrstr, so we cannot
Mark Wielaard 3e1463
+	       just pass a static string. */
Mark Wielaard 3e1463
+	    fl->def.verifyFlags = RPMVERIFY_ALL;
Mark Wielaard 3e1463
+	    fl->cur.verifyFlags = RPMVERIFY_ALL;
Mark Wielaard 3e1463
+	    fl->def.specdFlags |= SPECD_VERIFY;
Mark Wielaard 3e1463
+	    fl->cur.specdFlags |= SPECD_VERIFY;
Mark Wielaard 3e1463
+	    attrstr = xstrdup ("%defattr(-,root,root)");
Mark Wielaard 3e1463
+	    parseForAttr(fl->pool, attrstr, 1, &fl->def);
Mark Wielaard 3e1463
+	    free (attrstr);
Mark Wielaard 3e1463
+
Mark Wielaard 3e1463
 	    /* Supported, but questionable.  */
Mark Wielaard 3e1463
 	    if (needMain && needDbg)
Mark Wielaard 3e1463
 		rpmlog(RPMLOG_WARNING,
Mark Wielaard 3e1463
@@ -1813,8 +1826,12 @@ static int generateBuildIDs(FileList fl)
Mark Wielaard 3e1463
 		if ((rc = rpmioMkpath(mainiddir, 0755, -1, -1)) != 0) {
Mark Wielaard 3e1463
 		    rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, mainiddir);
Mark Wielaard 3e1463
 		} else {
Mark Wielaard 3e1463
+		    rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ",
Mark Wielaard 3e1463
+			       mainiddir);
Mark Wielaard 3e1463
+		    parseForAttr(fl->pool, attrstr, 0, &fl->cur);
Mark Wielaard 3e1463
 		    fl->cur.isDir = 1;
Mark Wielaard 3e1463
 		    rc = addFile(fl, mainiddir, NULL);
Mark Wielaard 3e1463
+		    free (attrstr);
Mark Wielaard 3e1463
 		}
Mark Wielaard 3e1463
 	    }
Mark Wielaard 3e1463
 
Mark Wielaard 3e1463
@@ -1822,8 +1839,12 @@ static int generateBuildIDs(FileList fl)
Mark Wielaard 3e1463
 		if ((rc = rpmioMkpath(debugiddir, 0755, -1, -1)) != 0) {
Mark Wielaard 3e1463
 		    rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, debugiddir);
Mark Wielaard 3e1463
 		} else {
Mark Wielaard 3e1463
+		    rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ",
Mark Wielaard 3e1463
+			       debugiddir);
Mark Wielaard 3e1463
+		    parseForAttr(fl->pool, attrstr, 0, &fl->cur);
Mark Wielaard 3e1463
 		    fl->cur.isDir = 1;
Mark Wielaard 3e1463
 		    rc = addFile(fl, debugiddir, NULL);
Mark Wielaard 3e1463
+		    free (attrstr);
Mark Wielaard 3e1463
 		}
Mark Wielaard 3e1463
 	    }
Mark Wielaard 3e1463
 	}