Re: rpmbuild-nonroot %{version} interpreted incorrectly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I wrote:

> When using Mike Harris' rpmbuild-nonroot setup (except for the no archs
> hack) I have a problem building rpm. See
> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=124364 .
> 
> rpmbuild -bp rpm.spec fails:
> error: File /data/rpmbuild-fc1/rpm-1.8.1/rpm-4.2.1.tar.gz: No such
> file or directory
> 
> It looks like the last "Version:" (popt's) is being used in the path
> expansion for %setup.

I've come up with a patch that fixes the macros %{PACKAGE_VERSION} and
%{PACKAGE_RELEASE} so one can use

%_sourcedir	%{_topdir}/%{name}-%{PACKAGE_VERSION}

Fixing the preferred macros %{version} and %{release} via
headerAddEntry() is much more intrusive, so I'm not sure if creating
such a patch is worth the time spent (not even sure if inclusion would
be considered as the above bug is a WONTFIX).

I hope this patch is of use to those who use the non root rpm build
setup.

Inlining it here for reference, it's also attached to the above bug
report. Note the line wraps.

--- rpm-4.2.1/build/parsePreamble.c.000	2002-12-21 18:26:43.000000000
+0100
+++ rpm-4.2.1/build/parsePreamble.c	2004-06-21 00:56:37.000000000 +0200
@@ -459,7 +459,7 @@
  */
 /*@-boundswrite@*/
 static int handlePreambleTag(Spec spec, Package pkg, int tag, const
char *macro,
-			     const char *lang)
+			     const char *lang, const int initialPackage)
 	/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
 	/*@modifies spec->macros, spec->st, spec->buildRootURL,
 		spec->sources, spec->numSources, spec->noSource,
@@ -521,14 +521,16 @@
 		    spec->lineNum, "version", spec->line);
 		return RPMERR_BADSPEC;
 	    }
-	    addMacro(spec->macros, "PACKAGE_VERSION", NULL, field,
RMIL_OLDSPEC);
+	    if (initialPackage)
+		addMacro(spec->macros, "PACKAGE_VERSION", NULL, field, RMIL_OLDSPEC);
 	} else if (tag == RPMTAG_RELEASE) {
 	    if (strchr(field, '-') != NULL) {
 		rpmError(RPMERR_BADSPEC, _("line %d: Illegal char '-' in %s: %s\n"),
 		    spec->lineNum, "release", spec->line);
 		return RPMERR_BADSPEC;
 	    }
-	    addMacro(spec->macros, "PACKAGE_RELEASE", NULL, field,
RMIL_OLDSPEC-1);
+	    if (initialPackage)
+		addMacro(spec->macros, "PACKAGE_RELEASE", NULL, field,
RMIL_OLDSPEC-1);
 	}
 	(void) headerAddEntry(pkg->header, tag, RPM_STRING_TYPE, field, 1);
 	break;
@@ -906,7 +908,7 @@
 				spec->lineNum, spec->line);
 		    return RPMERR_BADSPEC;
 		}
-		if (handlePreambleTag(spec, pkg, tag, macro, lang))
+		if (handlePreambleTag(spec, pkg, tag, macro, lang, initialPackage))
 		    return RPMERR_BADSPEC;
 		if (spec->BANames && !spec->recursing)
 		    return PART_BUILDARCHITECTURES;

Leonard.

-- 
mount -t life -o ro /dev/dna /genetic/research




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux