69 lines
1.9 KiB
Diff
69 lines
1.9 KiB
Diff
Add new srcdefattr macro. Usefull for assuring that all files
|
|
in the src rpms belong to root:root [#48870] rh#125515
|
|
|
|
--- ./build/files.c.orig 2005-12-14 19:22:43.000000000 +0000
|
|
+++ ./build/files.c 2006-02-17 13:57:25.000000000 +0000
|
|
@@ -2260,7 +2274,15 @@ int processSourceFiles(Spec spec)
|
|
struct FileList_s fl;
|
|
char *s, **files, **fp;
|
|
Package pkg;
|
|
+ static char *_srcdefattr;
|
|
+ static int oneshot;
|
|
|
|
+ if (!oneshot) {
|
|
+ _srcdefattr = rpmExpand("%{?_srcdefattr}", NULL);
|
|
+ if (_srcdefattr && !*_srcdefattr)
|
|
+ _srcdefattr = _free(_srcdefattr);
|
|
+ oneshot = 1;
|
|
+ }
|
|
sourceFiles = newStringBuf();
|
|
|
|
/* XXX
|
|
@@ -2311,6 +2333,15 @@ int processSourceFiles(Spec spec)
|
|
|
|
spec->sourceCpioList = NULL;
|
|
|
|
+ /* Init the file list structure */
|
|
+ memset(&fl, 0, sizeof(fl));
|
|
+ if (_srcdefattr) {
|
|
+ char *a = xmalloc(strlen(_srcdefattr) + 9 + 1);
|
|
+ strcpy(a, "%defattr ");
|
|
+ strcpy(a + 9, _srcdefattr);
|
|
+ parseForAttr(a, &fl);
|
|
+ a = _free(a);
|
|
+ }
|
|
fl.fileList = xcalloc((spec->numSources + 1), sizeof(*fl.fileList));
|
|
fl.processingFailed = 0;
|
|
fl.fileListRecsUsed = 0;
|
|
@@ -2359,8 +2390,20 @@ int processSourceFiles(Spec spec)
|
|
fl.processingFailed = 1;
|
|
}
|
|
|
|
- flp->uname = getUname(flp->fl_uid);
|
|
- flp->gname = getGname(flp->fl_gid);
|
|
+ if (fl.def_ar.ar_fmodestr) {
|
|
+ flp->fl_mode &= S_IFMT;
|
|
+ flp->fl_mode |= fl.def_ar.ar_fmode;
|
|
+ }
|
|
+ if (fl.def_ar.ar_user) {
|
|
+ flp->uname = getUnameS(fl.def_ar.ar_user);
|
|
+ } else {
|
|
+ flp->uname = getUname(flp->fl_uid);
|
|
+ }
|
|
+ if (fl.def_ar.ar_group) {
|
|
+ flp->gname = getGnameS(fl.def_ar.ar_group);
|
|
+ } else {
|
|
+ flp->gname = getGname(flp->fl_gid);
|
|
+ }
|
|
flp->langs = xstrdup("");
|
|
|
|
fl.totalFileSize += flp->fl_size;
|
|
@@ -2384,6 +2427,7 @@ int processSourceFiles(Spec spec)
|
|
|
|
sourceFiles = freeStringBuf(sourceFiles);
|
|
fl.fileList = freeFileList(fl.fileList, fl.fileListRecsUsed);
|
|
+ freeAttrRec(&fl.def_ar);
|
|
return fl.processingFailed;
|
|
}
|
|
|