[CentOS-devel] still trying to build upstream srpms

Mon Sep 1 20:58:02 UTC 2008
Joe Pruett <joey at clean.q7.com>

>> What's implied when people say mock is being used, is that there are no 
>> special '--define', etc. flags passed to rpmbuild from within mock.
>> 
>
> Hmmm, and why is passing --define (or not) relevant to anything in the real 
> world?
>
> Yes, the CentOS issue is trying to identify a "reproducible build", as 
> defined by the
> RHEL build system, and rpm macros are often different and continuously 
> changing.
>
> If the macros used were the only part of the "reproducible build" problem,
> then --macrosused (and the RPMTAG_BUILDMACROS header extension)
> solves the problem by spewing the list of all macros used
> by rpmbuild (or any other rpm command) at termination,
> and/or by including the equivalent list of used macros (and definitions) 
> within a *.src.rpm
> header.
>
> But the real problem is that all build systems contain versions of compilers 
> and toolchains
> that are different. That's a whole different class of problem.
>
> So not passing --define is hardly relevant imho, the tool chains used for 
> building
> are what is very tricky to identify and attempt to "reproduce".

a lot of rpms use --define to control how the package is built, what 
functions to enable in the package.  postgresql is a good example.  it has 
47 %if clauses in the spec file that directly or indirectly rely on 
--define switches at rpmbuild time.

this --macrosused/RPMTAG_BUILDMACROS sounds like exactly what i'm looking 
for, but it doesn't appear to be part of the rpm system used by rh/centos.

but without the newer rpm system, how do the centos builders know what 
flags to use to build an rpm?  are they all built without any --define 
flags?  do we know that is how rh does it?