teknoraver / rpms / rpm

Forked from rpms/rpm 7 months ago
Clone

Blame 0003-exclude-respective-debug-files-for-files-which-are-e.patch

Igor Gnatenko 53960f
From 651d9355f6db9f4d1305c25af5a953289dc8ef47 Mon Sep 17 00:00:00 2001
Igor Gnatenko 53960f
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Igor Gnatenko 53960f
Date: Fri, 28 Jul 2017 15:21:00 +0200
Igor Gnatenko 53960f
Subject: [PATCH] exclude respective debug files for files which are excluded
Igor Gnatenko 53960f
Igor Gnatenko 53960f
Closes: https://github.com/rpm-software-management/rpm/issues/284
Igor Gnatenko 53960f
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Igor Gnatenko 53960f
---
Igor Gnatenko 53960f
 build/files.c | 17 ++++++++++++++++-
Igor Gnatenko 53960f
 1 file changed, 16 insertions(+), 1 deletion(-)
Igor Gnatenko 53960f
Igor Gnatenko 53960f
diff --git a/build/files.c b/build/files.c
Igor Gnatenko 53960f
index 988b3b315..a29730998 100644
Igor Gnatenko 53960f
--- a/build/files.c
Igor Gnatenko 53960f
+++ b/build/files.c
Igor Gnatenko 53960f
@@ -1062,7 +1062,7 @@ static void genCpioListAndHeader(FileList fl, Package pkg, int isSrc)
Igor Gnatenko 53960f
 	/* Skip files that were marked with %exclude. */
Igor Gnatenko 53960f
 	if (flp->flags & RPMFILE_EXCLUDE)
Igor Gnatenko 53960f
 	{
Igor Gnatenko 53960f
-	    argvAdd(&pkg->fileExcludeList, flp->diskPath);
Igor Gnatenko 53960f
+	    argvAdd(&pkg->fileExcludeList, flp->cpioPath);
Igor Gnatenko 53960f
 	    continue;
Igor Gnatenko 53960f
 	}
Igor Gnatenko 53960f
 
Igor Gnatenko 53960f
@@ -2802,6 +2802,21 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg,
Igor Gnatenko 53960f
 	}
Igor Gnatenko 53960f
 	path = _free(path);
Igor Gnatenko 53960f
     }
Igor Gnatenko 53960f
+    /* Exclude debug files for files which were excluded in respective non-debug package */
Igor Gnatenko 53960f
+    for (ARGV_const_t excl = pkg->fileExcludeList; excl && *excl; excl++) {
Igor Gnatenko 53960f
+        const char *name = *excl;
Igor Gnatenko 53960f
+
Igor Gnatenko 53960f
+	/* generate path */
Igor Gnatenko 53960f
+	rasprintf(&path, "%s%s%s%s.debug", buildroot, DEBUG_LIB_DIR, name, uniquearch);
Igor Gnatenko 53960f
+	/* Exclude only debuginfo files which actually exist */
Igor Gnatenko 53960f
+	if (access(path, F_OK) == 0) {
Igor Gnatenko 53960f
+	    char *line = NULL;
Igor Gnatenko 53960f
+	    rasprintf(&line, "%%exclude %s", path + buildrootlen);
Igor Gnatenko 53960f
+	    argvAdd(&files, line);
Igor Gnatenko 53960f
+	    _free(line);
Igor Gnatenko 53960f
+	}
Igor Gnatenko 53960f
+	path = _free(path);
Igor Gnatenko 53960f
+    }
Igor Gnatenko 53960f
 
Igor Gnatenko 53960f
     /* add collected directories to file list */
Igor Gnatenko 53960f
     if (dirs) {