Main Page Modules Data Structures File List Data Fields Globals Related Pages

# build/pack.c File Reference

Assemble components of an RPM package. More...

`#include "system.h"`
`#include <rpmio_internal.h>`
`#include <rpmbuild.h>`
`#include "buildio.h"`
`#include "misc.h"`
`#include "signature.h"`
`#include "rpmlead.h"`
`#include "debug.h"`

Go to the source code of this file.

## Defines

#define | RPMPKGVERSION_MIN 30004
#define | RPMPKGVERSION_MAX 40003

## Functions

int | genSourceRpmName (Spec spec)
int | cpio_doio (FD_t fdo, Header h, CSA_t csa, const char *fmodeMacro)
int | cpio_copy (FD_t fdo, CSA_t csa)
StringBuf | addFileToTagAux (Spec spec, const char *file, StringBuf sb)
int | addFileToTag (Spec spec, const char *file, Header h, int tag)
int | addFileToArrayTag (Spec spec, const char *file, Header h, int tag)
int | processScriptFiles (Spec spec, Package pkg)
int | readRPM (const char *fileName, Spec *specp, struct rpmlead *lead, Header *sigs, CSA_t csa)
| Read rpm package components from file. More...
int | rpmLeadVersion (void)
int | writeRPM (Header *hdrp, const char *fileName, int type, CSA_t csa, char *passPhrase, const char **cookie)
| Write rpm package to file. More...
int | packageBinaries (Spec spec)
int | packageSources (Spec spec)

## Variables

int | _noDirTokens
unsigned char | header_magic [8]
int | rpmpkg_version = -1
int_32 | copyTags []

## Detailed Description

Assemble components of an RPM package.

Definition in file pack.c.

## Define Documentation

#define RPMPKGVERSION_MAX 40003

| Definition at line 360 of file pack.c. Referenced by rpmLeadVersion.

#define RPMPKGVERSION_MIN 30004

| Definition at line 359 of file pack.c. Referenced by rpmLeadVersion.

## Function Documentation

int addFileToArrayTag | ( | Spec | spec,
|  | const char * | file,
|  | Header | h,
|  | int | tag
| ) | `[static]`

| Definition at line 187 of file pack.c. References addFileToTagAux, freeStringBuf, getStringBuf, headerAddOrAppendEntry, newStringBuf, and RPM_STRING_ARRAY_TYPE. Referenced by processScriptFiles.

int addFileToTag | ( | Spec | spec,
|  | const char * | file,
|  | Header | h,
|  | int | tag
| ) | `[static]`

| Definition at line 162 of file pack.c. References addFileToTagAux, appendLineStringBuf, freeStringBuf, getStringBuf, headerAddEntry, headerRemoveEntry, HGE_t, newStringBuf, and RPM_STRING_TYPE. Referenced by processScriptFiles.

StringBuf addFileToTagAux | ( | Spec | spec,
|  | const char * | file,
|  | StringBuf | sb
| ) | `[static]`

| Definition at line 123 of file pack.c. References _, _free, appendStringBuf, expandMacros, Fclose, fdGetFp, Ferror, Fopen, freeStringBuf, and rpmGetPath. Referenced by addFileToArrayTag, and addFileToTag.

int cpio_copy | ( | FD_t | fdo,
|  | CSA_t | csa
| ) | `[static]`

| Definition at line 98 of file pack.c. References _, Ferror, Fread, Fstrerror, and Fwrite. Referenced by writeRPM.

int cpio_doio | ( | FD_t | fdo,
|  | Header | h,
|  | CSA_t | csa,
|  | const char * | fmodeMacro
| ) | `[static]`

Todo:
  Create transaction set *much* earlier.

Definition at line 48 of file pack.c.

References _, _free, Fclose, fdDup, Fdopen, Fflush, Fileno, rpmExpand, rpmtransCreateSet, rpmtransFree, TFI_t, and xstrdup.

Referenced by writeRPM.

int genSourceRpmName | ( | Spec | spec | ) | `[inline, static]`

| Definition at line 29 of file pack.c. References headerNVR, and xstrdup. Referenced by packageBinaries, and packageSources.

int processScriptFiles | ( | Spec | spec,
|  | Package | pkg
| ) | `[static]`

| Definition at line 207 of file pack.c. References _, addFileToArrayTag, addFileToTag, TriggerFileEntry::fileName, headerAddOrAppendEntry, TriggerFileEntry::next, TriggerFileEntry::prog, RPM_STRING_ARRAY_TYPE, RPMTAG_POSTIN, RPMTAG_POSTUN, RPMTAG_PREIN, RPMTAG_PREUN, RPMTAG_TRIGGERSCRIPTPROG, RPMTAG_TRIGGERSCRIPTS, RPMTAG_VERIFYSCRIPT, and TriggerFileEntry::script. Referenced by packageBinaries.

int readRPM | ( | const char * | fileName,
|  | Spec * | specp,
|  | struct rpmlead * | lead,
|  | Header * | sigs,
|  | CSA_t | csa
| ) |

Read rpm package components from file.

Parameters:

  fileName | file name of package (or NULL to use stdin)

Return values:

  specp | spec structure to carry package header (or NULL)
  lead | package lead
  sigs | package signature

Parameters:

  csa |

Returns:
  0 on success

Definition at line 277 of file pack.c.

References _, cpioSourceArchive_s::cpioFdIn, Fclose, fdDup, Ferror, Fopen, Fread, freeSpec, Fseek, Fstrerror, PackageStruct::header, headerFree, newPackage, newSpec, SpecStruct::packages, rpmRC, RPMRC_BADMAGIC, RPMRC_BADSIZE, RPMRC_FAIL, RPMRC_OK, RPMRC_SHORTREAD, rpmReadPackageInfo, and SEEK_SET.

Referenced by rewriteRPM.

int rpmLeadVersion | ( | void |  | ) | `[static]`

| Definition at line 364 of file pack.c. References _noDirTokens, rpmExpandNumeric, rpmpkg_version, RPMPKGVERSION_MAX, and RPMPKGVERSION_MIN. Referenced by writeRPM.

int writeRPM | ( | Header * | hdrp,
|  | const char * | fileName,
|  | int | type,
|  | CSA_t | csa,
|  | char * | passPhrase,
|  | const char ** | cookie
| ) |

Write rpm package to file.

Warning:
  The first argument (header) is now passed by reference in order to return a reloaded contiguous header to the caller.

Return values:

  hdrp | header to write (final header is returned).

Parameters:

  fileName | file name of package
  type | RPMLEAD_SOURCE/RPMLEAD_BINARY
  csa |
  passPhrase |

Return values:

  cookie | generated cookie (i.e build host/time)

Returns:
  0 on success

Definition at line 385 of file pack.c.

References _, _free, buildHost, cpio_copy, cpio_doio, cpioSourceArchive_s::cpioArchiveSize, cpioSourceArchive_s::cpioFdIn, cpioSourceArchive_s::cpioList, Fclose, fdFiniDigest, fdInitDigest, Ferror, Fflush, Fileno, Fopen, Fread, Fseek, Fstrerror, Fwrite, getBuildTime, HEADER_MAGIC_YES, headerAddEntry, headerFree, headerLink, headerMergeLegacySigs, headerNVR, headerRead, headerReload, headerWrite, HGE_t, int_32, cpioSourceArchive_s::lead, makeTempFile, PGPHASHALGO_SHA1, providePackageNVR, RPM_INT32_TYPE, RPM_STRING_TYPE, rpmAddSignature, rpmExpand, rpmFreeSignature, rpmGetArchInfo, rpmGetOsInfo, RPMLEAD_BINARY, RPMLEAD_SOURCE, rpmLeadVersion, rpmlibNeedsFeature, RPMLOOKUPSIG_QUERY, rpmLookupSignatureType, rpmNewSignature, RPMSIGTYPE_HEADERSIG, RPMTAG_ARCHIVESIZE, RPMTAG_COOKIE, RPMTAG_HEADERIMMUTABLE, RPMTAG_HEADERSIGNATURES, RPMTAG_PAYLOADCOMPRESSOR, RPMTAG_PAYLOADFLAGS, RPMTAG_PAYLOADFORMAT, RPMTAG_SHA1HEADER, rpmWriteSignature, SEEK_SET, Unlink, writeLead, and xstrdup.

Referenced by packageBinaries, packageSources, and rewriteRPM.

## Variable Documentation

int _noDirTokens

| Definition at line 18 of file pack.c. Referenced by rpmLeadVersion.

int_32 copyTags[]`[static]`

Initial value:

     {
        RPMTAG_CHANGELOGTIME,
        RPMTAG_CHANGELOGNAME,
        RPMTAG_CHANGELOGTEXT,
        0
    }

Definition at line 682 of file pack.c.

Referenced by packageBinaries.

unsigned char header_magic[8]`[static]`

Initial value:

     {
            0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
    }

Definition at line 355 of file pack.c.

int rpmpkg_version = -1`[static]`

| Definition at line 362 of file pack.c. Referenced by rpmLeadVersion.