RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm-4_5: rpm/build/ files.c

From: Per Øyvind Karlsen <pkarlsen@rpm5.org>
Date: Sun 09 Dec 2007 - 18:42:24 CET
Message-Id: <20071209174224.A4E56348457@rpm5.org>
  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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.