- completely rewrote queryformat code
- added fsnames, fssizes virtual query tags
- added rpmdbFindByHeader() and rpmdbFindByTag() public functions
+ - added rpmfilename tag to rpmrc to define the filename format to
+ use for binary packages (note the rpmdir is prepended to it)
2.4 -> 2.4.1:
- take advantage of lchown() if it's available
char *nametmp;
char filename[1024];
char sourcerpm[1024];
+ char * binrpm;
char *icon;
int iconFD;
struct stat statbuf;
char *packager;
char *packageVersion, *packageRelease;
char *prefix, *prefixSave;
+ char * binformat, * errorString;
int prefixLen;
int size;
StringBuf cpioFileList;
version = strdup(version);
release = strdup(release);
- sprintf(sourcerpm, "%s-%s-%s.%ssrc.rpm", s->name, version, release,
+ sprintf(sourcerpm, "%s-%s-%s.%sprc.rpm", s->name, version, release,
(s->numNoPatch + s->numNoSource) ? "no" : "");
vendor = NULL;
/* Make the output RPM filename */
if (doPackage == PACK_PACKAGE) {
- sprintf(filename, "%s/%s/%s.%s.rpm", rpmGetVar(RPMVAR_RPMDIR),
- rpmGetArchName(), name, rpmGetArchName());
+ binformat = rpmGetVar(RPMVAR_RPMFILENAME);
+ binrpm = headerSprintf(outHeader, binformat, rpmTagTable,
+ rpmHeaderFormats, &errorString);
+
+ if (!binrpm) {
+ rpmError(RPMERR_BADFILENAME, "could not generate output "
+ "filename for package %s: %s\n", name, binrpm);
+ }
+
+ sprintf(filename, "%s/%s", rpmGetVar(RPMVAR_RPMDIR), binrpm);
+ free(binrpm);
if (generateRPM(name, filename, RPMLEAD_BINARY, outHeader, NULL,
getStringBuf(cpioFileList), passPhrase, prefix)) {
gzipbin: @GZIPBIN@
defaultdocdir: @prefix@/doc
fixperms: @FIXPERMS@
+rpmfilename: %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm
#############################################################
#define RPMVAR_DEFAULTDOCDIR 34
#define RPMVAR_FIXPERMS 35
#define RPMVAR_GZIPBIN 36
-#define RPMVAR_LASTVAR 37 /* IMPORTANT to keep right! */
+#define RPMVAR_RPMFILENAME 37
+#define RPMVAR_LASTVAR 38 /* IMPORTANT to keep right! */
char *rpmGetVar(int var);
int rpmGetBooleanVar(int var);
#define RPMERR_GZIP -117
#define RPMERR_BADSPEC -118
#define RPMERR_LDD -119 /* couldn't understand ldd output */
+#define RPMERR_BADFILENAME -120
#define RPMERR_BADSIGTYPE -200 /* Unknown signature type */
#define RPMERR_SIGGEN -201 /* Error generating signature */
{ "require_vendor", RPMVAR_REQUIREVENDOR, 0, 0 },
{ "root", RPMVAR_ROOT, 0, 0 },
{ "rpmdir", RPMVAR_RPMDIR, 0, 0 },
+ { "rpmfilename", RPMVAR_RPMFILENAME, 0, 1 },
{ "signature", RPMVAR_SIGTYPE, 0, 0 },
{ "sourcedir", RPMVAR_SOURCEDIR, 0, 0 },
{ "specdir", RPMVAR_SPECDIR, 0, 0 },
#define GETMNTENT_ONE 1
#define GETMNTENT_TWO 0
#define our_mntent struct mntent
-#defeine our_mntdir mnt_dir
+#define our_mntdir mnt_dir
#elif HAVE_SYS_MNTTAB_H
#include <stdio.h>
#include <sys/mnttab.h>