>> 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?