RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Per Øyvind Karlsen
Root: /v/rpm/cvs Email: pkarlsen@rpm5.org
Module: rpm Date: 09-Dec-2007 18:42:24
Branch: rpm-4_5 Handle: 2007120917422400
Modified files: (Branch: rpm-4_5)
rpm/build files.c
Log:
Allow to set %_srcdefattr for src.rpm
Summary:
Revision Changes Path
1.243.2.3 +28 -2 rpm/build/files.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/build/files.c
============================================================================
$ cvs diff -u -r1.243.2.2 -r1.243.2.3 files.c
--- rpm/build/files.c 12 Jul 2007 10:54:53 -0000 1.243.2.2
+++ rpm/build/files.c 9 Dec 2007 17:42:24 -0000 1.243.2.3
@@ -2374,6 +2374,7 @@
}
fl.fileList = freeFileList(fl.fileList, fl.fileListRecsUsed);
+
while (fl.docDirCount--)
fl.docDirs[fl.docDirCount] = _free(fl.docDirs[fl.docDirCount]);
return fl.processingFailed;
@@ -2488,10 +2489,22 @@
struct FileList_s fl;
char **files, **fp;
int rc;
+ char *_srcdefattr;
+ char buf[BUFSIZ];
+
+ _srcdefattr = rpmExpand("%{?_srcdefattr}", NULL);
+
*sfp = newStringBuf();
x = initSourceHeader(spec, sfp);
+ /* Init the file list structure */
+ memset(&fl, 0, sizeof(fl));
+ if (_srcdefattr && *_srcdefattr) {
+ sprintf(buf, "%%defattr %s", _srcdefattr);
+ parseForAttr(buf, &fl);
+ }
+
/* Construct the SRPM file list. */
fl.fileList = xcalloc((spec->numSources + 1), sizeof(*fl.fileList));
rc = fl.processingFailed = 0;
@@ -2542,8 +2555,19 @@
rc = 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;
+ }
+
+ flp->uname = fl.def_ar.ar_user ?
+ getUnameS(fl.def_ar.ar_user):
+ getUname(flp->fl_uid);
+
+ flp->gname = fl.def_ar.ar_group ?
+ getGnameS(fl.def_ar.ar_group) :
+ getGname(flp->fl_gid);
+
flp->langs = xstrdup("");
fl.totalFileSize += flp->fl_size;
@@ -2568,6 +2592,8 @@
exit:
*sfp = freeStringBuf(*sfp);
fl.fileList = freeFileList(fl.fileList, fl.fileListRecsUsed);
+ _free(_srcdefattr);
+ freeAttrRec(&fl.def_ar);
return rc;
}
@@ .
Received on Sun Dec 9 18:42:24 2007