On Sun, 2006-07-16 at 09:48 -0400, Joe Todaro wrote:
Thanks Dan.
So I ran a quick regression test, just to make sure that *i386* is
still working, but, it *failed* ... (also note that i686 gave
basically the same errors..)
SEE BELOW for *regression* test results, both BEFORE and AFTER
applying patch 'plague-opt-arches-fix.patch' to server/Config.py. I
repeated that test sequence several times, by the way. Also, I was
surprised to see that 'WhoAmI' was trying to build as an 'i686' rpm
rather than a 'noarch' which is what it really is. So, since I can't
Hmm... Building an i386 package worked for me when I tested it with
current CVS HEAD, as did an i686 package.
be exactly sure at this point how the "optional_arches"
design is
supposed to tie-in with the "base_arches" design, it doesn't make
much sense for me (with my limited Python skills) to try and dig in
any further..
Ok; most distributions have a "base" architecture for any given
architecture family. For RHEL & FC, that's 'i386' for x86 processors,
and for POWER, that's 'ppc'. We only build specific RPMs as i686 since
not every RPM requires it, and building many RPMs for i686 can actually
_hurt_ performance. In the same vein, we don't build both 'em64t' and
x86-64 packages for everything either, because the difference between
EM64T and x86-64 only matters for stuff like the kernel.
Given a set of packages, you _don't_ want to build every package on
every architecture the buildsystem supports, unless the package
explicitly asks for it. Given a specfile with _no_ ExcludeArch or
IncludeArch, plague will build that package only for the "base"
architecture, in this case i386.
So what happens when you want a package to explicitly build on i686 or
i586 or em64t? In this case, the specfile for the package must
explicitly request to be built as such, using ExclusiveArch.
Coming back to the original question, optional_arches gives buildsystem
administrators a filter on arches to build. For example, Fedora Extras
doesn't necessarily want to allow packages to be built for i486, even if
the RPM requests it, because we don't support i486. So if you add i686
to 'optional_arches', then packages that request to be built for i686
with ExclusiveArch will be allowed to build for i686, otherwise not.
Also, could you please explain/elaborate when you say: "Patch
attached
that should apply against an installed copy of plague-server as
well."
Um, your patch is clearly intended to update file server/Config.py
file, so I really don't understand how I can also use *it* to update
file *plague-server* (/usr/bin/plague-server?) as well, which appears
to be a start-up script -- am I missing something here?
I had meant to change the paths such that you could apply the patch
from / using patch -p0 or such; I did that and then re-diffed and likely
forgot to update the patch bits again. Since the 'cvs diff' is rooted
at a different directory than the installed plague server directory, I
was trying to make life simpler for you. My bad.
For the good news (for me anyway), I'm also trying to learn
Python
(Diving Into Python) on my own time, so that hopefully one day I might
be able help squash some of these bugs.. However, in the meantime,
I/we very much appreciate your help and expertise..
REGRESSION TEST RESULTS ARE BELOW...
Dan Williams <dcbw(a)redhat.com> wrote on 07/15/2006 01:20:54 PM:
> On Tue, 2006-07-04 at 09:58 -0400, Joe Todaro wrote:
> >
> > Hi,
> > I'm having a problem *not* being able to build 'i686' packages
(i.e.
> > optional_arches=i686) anymore *after* having upgraded our plague
> > server/builder (Opteron x86_64) a couple of weeks ago from
> > plague-0.4.3 to *plague-0.5.0*. The problem happens only with i686
> > (optional_arches=i686) -- not with i386 (base_arches=i386) which
> > continues to work flawlessly.
>
> Found and fixed in CVS HEAD. Patch attached that should apply
against
> an installed copy of plague-server as well. Thanks for the report,
and
> sorry for the lag.
>
> Cheers,
> Dan
>
>
> [attachment "plague-opt-arches-fix.patch" deleted by Joe
> Todaro/Poughkeepsie/IBM]
626 (WhoAmI): Requesting depsolve...
626 (WhoAmI): Starting depsolve for arches: ['i386', 'i686',
'noarch'].
Ok; what do you have in the 'optional_arches' for this target?
What do the top bits of the specfile for WhoAmI look like? i.e., are
there any of the following specfile tags, and what are their values?
BuildArch
ExclusiveArch
ExcludeArch
626 (WhoAmI/i686): Depsolve Error: WARNING: bad yum config for arch
i686.
Exception in thread PackageJob: 626/WhoAmI:
Traceback (most recent call last):
File "/usr/lib64/python2.3/threading.py", line 436, in __bootstrap
self.run()
File "/usr/share/plague/server/PackageJob.py", line 86, in run
self._pkg_job.process()
File "/usr/share/plague/server/PackageJob.py", line 719, in process
if func():
File "/usr/share/plague/server/PackageJob.py", line 587, in
_stage_depsolve
if self._arch_deps_solved(arch) == False:
File "/usr/share/plague/server/PackageJob.py", line 540, in
_arch_deps_solved
if base:
UnboundLocalError: local variable 'base' referenced before assignment
To get rid of this error, remove the marked line around line 490 of
PackageJob.py:
base = yum.YumBase()
yum_config = self._write_yum_conf(arch)
if not yum_config:
- del base
raise DepError("WARNING: bad yum config for arch %s." % arch)
depsolve_root = os.path.dirname(yum_config) + '/'
base.doConfigSetup(fn=yum_config, root=depsolve_root)
That's a bug. Hope we can get this fixed.
Dan
Thanks again,
-Joe