i have been looking around and i can't see a way to figure out what --define options might be used for rpmbuild by rh. i want to build the rhwas 5 non-java srpms but there is lots of ifdef magic in the spec that could be important to building.
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
i'm not even thinking about mock type stuff right now, just trying to figure out the actual rpmbuild command line to use.
any clues out there? i've heard that 4.7 is brewing right now, so i understand that the people in the know may be off waving wands over the build gnomes and not paying much attention here...
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
i'm not even thinking about mock type stuff right now, just trying to figure out the actual rpmbuild command line to use.
Well, you should think about mock in that case - because that is how it is built.
Cheers,
Ralph
Ralph Angenendt wrote:
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
i'm not even thinking about mock type stuff right now, just trying to figure out the actual rpmbuild command line to use.
Well, you should think about mock in that case - because that is how it is built.
Cheers,
Ralph
Hmm, afaik Upstream doesn't use mock for EL .. i think they use a 'homebrew' builder system and they don't publish the logs/builder system specs/etc .... Talk to several CentOS developers and they confirm that it sometimes hard to guess what's the minimal chroot they use to build the package .. sometimes BuildRequires: are missing if you want to build it with a buildsys group like the one CentOS is using (http://dev.centos.org/centos/buildsys/) However using mock is surely the best way to rebuild such SRPMs .. and that's what a lot of people do (including CentOS project)
Fabian Arrotin wrote:
Ralph Angenendt wrote:
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
i'm not even thinking about mock type stuff right now, just trying to figure out the actual rpmbuild command line to use.
Well, you should think about mock in that case - because that is how it is built.
Hmm, afaik Upstream doesn't use mock for EL .. i think they use a 'homebrew' builder system and they don't publish the logs/builder system specs/etc
That is true for up to CentOS 4. EL 5 seems to be built on the same systems they build fedora on.
.... Talk to several CentOS developers and they confirm that it sometimes hard to guess what's the minimal chroot they use to build the package .. sometimes BuildRequires: are missing if you want to build it with a buildsys group like the one CentOS is using (http://dev.centos.org/centos/buildsys/)
As said: Not true anymore for EL 5.
Ralph
On Fri, 29 Aug 2008, Ralph Angenendt wrote:
Fabian Arrotin wrote:
Ralph Angenendt wrote:
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
i'm not even thinking about mock type stuff right now, just trying to figure out the actual rpmbuild command line to use.
Well, you should think about mock in that case - because that is how it is built.
Hmm, afaik Upstream doesn't use mock for EL .. i think they use a 'homebrew' builder system and they don't publish the logs/builder system specs/etc
That is true for up to CentOS 4. EL 5 seems to be built on the same systems they build fedora on.
.... Talk to several CentOS developers and they confirm that it sometimes hard to guess what's the minimal chroot they use to build the package .. sometimes BuildRequires: are missing if you want to build it with a buildsys group like the one CentOS is using (http://dev.centos.org/centos/buildsys/)
As said: Not true anymore for EL 5.
What is still true is that it is not defined on what environment a given package was built. Given the fact that a big chunk of the RHEL packages came directly from FC6 build on whatever was current then.
CentOS-5 is build on a CentOS-5 system that was build on CentOS-4.
Please update me if I am wrong on this :) Otherwise I need more story to be corrected...
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
first off, i don't seem to be getting all of centos-devel. of this thread (6 messages on lists.centos.org), i only seemed to receive my initial post and the one from dag. are there any known problems with the devel email list?
second, even though karanbir will be trying to build the rpms i am interested in, so far no one has actually answered how we know what rpmbuild command line to give. there are lots of --define possibilities and i don't see that info available from a binary rpm. so how do we know how to build a package?
Joe Pruett wrote:
so in general, how do we know how the upstream builds things? are there logs somewhere on ftp.redhat.com to look at? or do we have moles that tell us?
first off, i don't seem to be getting all of centos-devel. of this thread (6 messages on lists.centos.org), i only seemed to receive my initial post and the one from dag. are there any known problems with the devel email list?
You are the first to complain. So - no, there aren't known problems. All mails to your address I can find in the maillog have been taken by the MX for your domain with a status of 250.
second, even though karanbir will be trying to build the rpms i am interested in, so far no one has actually answered how we know what rpmbuild command line to give. there are lots of --define possibilities and i don't see that info available from a binary rpm. so how do we know how to build a package?
As said (for CentOS 5): If you build an SRPM via mock/plague, you're doing it nearly the same as Red Hat does: In a clean environment.
Ralph
Ralph Angenendt napsal(a):
You are the first to complain. So - no, there aren't known problems. All mails to your address I can find in the maillog have been taken by the MX for your domain with a status of 250.
Ralph, I'm the second to complain. I can mention e.g. http://lists.centos.org/pipermail/centos-devel/2008-August/003171.html Thanks, David
David Hrbáč wrote:
Ralph Angenendt napsal(a):
You are the first to complain. So - no, there aren't known problems. All mails to your address I can find in the maillog have been taken by the MX for your domain with a status of 250.
Ralph, I'm the second to complain. I can mention e.g. http://lists.centos.org/pipermail/centos-devel/2008-August/003171.html
You didn't get that mail?
Ralph
David Hrbáč wrote:
Ralph Angenendt napsal(a):
You didn't get that mail?
Ralph
Didn't.
Strange:
Aug 31 17:54:55 centosg postfix/smtp[3429]: ED5B3F3C270: to=hrbac.conf@seznam.cz, relay=mx1.seznam.cz[77.75.72.42], delay=96, status=sent (250 Mail 261272498 queued for delivery in session 5ac10000103f.)
Ralph
On Aug 31, 2008, at 8:15 PM, Joe Pruett wrote:
second, even though karanbir will be trying to build the rpms i am interested in, so far no one has actually answered how we know what rpmbuild command line to give. there are lots of --define possibilities and i don't see that info available from a binary rpm. so how do we know how to build a package?
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.
-Jeff
On Sep 1, 2008, at 11:17 AM, Jeff Sheltren wrote:
On Aug 31, 2008, at 8:15 PM, Joe Pruett wrote:
second, even though karanbir will be trying to build the rpms i am interested in, so far no one has actually answered how we know what rpmbuild command line to give. there are lots of --define possibilities and i don't see that info available from a binary rpm. so how do we know how to build a package?
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".
73 de Jeff
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?
On Sep 1, 2008, at 4:58 PM, Joe Pruett wrote:
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.
Yup. too bad for you & Centos.
FWIW, adding %dump at the very end of spec file, and grep'ping out the used macros which are marked in the %dump spewage (unused macros look like "^-14:..." while used macros look like ("-14=..." iirc) will work with all versions of rpm I've ever touched.
FYI, the "-14" is "the level of macro recursion", and negative numbers are global. The value identifies where the macro was defined. Not useful at all, but that's what the "-14" is and does.
Porting --macrosused to rpm-4.5.6.7.8.9. ain't rocket science either ...
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?
I'd guess that all the --with/--without "stuff" is hard wired into a macro config file (or perhaps done directly by mock), another reason why "No --define in mock ..." Simply Does Not Matter.
73 de Jeff
Ralph Angenendt wrote:
That is true for up to CentOS 4. EL 5 seems to be built on the same systems they build fedora on.
My best guess would be that FC6 and El5 used the same build software: - The were in beta together - The share many packages - Whatever RH was using before must surely have required a lot of maintenance and thsi, I speculate, would be driving the initiative for a replacement.
Joe Pruett wrote:
any clues out there? i've heard that 4.7 is brewing right now, so i understand that the people in the know may be off waving wands over the build gnomes and not paying much attention here...
the rhwas, along with updates released so far is on the buildsystem waiting to clear through a few issues. I'll try and push it out over the weekend. If there is nothing in c-testing by monday, feel free to poke me.
- KB