| From 9f826d903dabbc2ce199560e296224c320bb840f Mon Sep 17 00:00:00 2001 |
| From: Michael Schroeder <mls@suse.de> |
| Date: Wed, 29 Mar 2017 14:55:10 +0200 |
| Subject: [PATCH] Also add directories to split debuginfo packages |
| |
| This gets rid of the last difference between debuginfo subpackages |
| and normal debuginfo packages. |
| |
| (cherry picked from commit a517554e36666f58724620347a4b8224471d2225) |
| |
| build/files.c | 30 ++++++++++++++++++++++++++++-- |
| 1 file changed, 28 insertions(+), 2 deletions(-) |
| |
| diff --git a/build/files.c b/build/files.c |
| index 779a2a102..f27dcc7c1 100644 |
| |
| |
| @@ -2707,8 +2707,9 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, |
| { |
| rpmfi fi; |
| ARGV_t files = NULL; |
| - Package dbg = NULL; |
| - char *path = NULL; |
| + ARGV_t dirs = NULL; |
| + int lastdiridx = -1, dirsadded; |
| + char *path = NULL, *p, *pmin; |
| size_t buildrootlen = strlen(buildroot); |
| |
| /* ignore noarch subpackages */ |
| @@ -2741,12 +2742,37 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, |
| argvAdd(&files, "%defattr(-,root,root)"); |
| argvAddDir(&files, DEBUG_LIB_DIR); |
| } |
| + |
| /* Add the files main debug-info file */ |
| argvAdd(&files, path + buildrootlen); |
| + |
| + /* Add the dir(s) */ |
| + dirsadded = 0; |
| + pmin = path + buildrootlen + strlen(DEBUG_LIB_DIR); |
| + while ((p = strrchr(path + buildrootlen, '/')) != NULL && p > pmin) { |
| + *p = 0; |
| + if (lastdiridx >= 0 && !strcmp(dirs[lastdiridx], path + buildrootlen)) |
| + break; /* already added this one */ |
| + argvAdd(&dirs, path + buildrootlen); |
| + dirsadded++; |
| + } |
| + if (dirsadded) |
| + lastdiridx = argvCount(dirs) - dirsadded; /* remember longest dir */ |
| } |
| path = _free(path); |
| } |
| |
| + /* add collected directories to file list */ |
| + if (dirs) { |
| + int i; |
| + argvSort(dirs, NULL); |
| + for (i = 0; dirs[i]; i++) { |
| + if (!i || strcmp(dirs[i], dirs[i - 1]) != 0) |
| + argvAddDir(&files, dirs[i]); |
| + } |
| + dirs = argvFree(dirs); |
| + } |
| + |
| if (files) { |
| /* we have collected some files. Now put them in a debuginfo |
| * package. If this is not the main package, clone the main |