HELP: trouble building packages for optional_arches=i686 *after* upgrading to Plague-0.5.0 (from plague-0.4.3)

Dan Williams dcbw at redhat.com
Mon Jul 17 10:11:34 UTC 2006


On Sun, 2006-07-16 at 12:18 -0400, Joe Todaro wrote:
> 
> Dan Williams <dcbw at redhat.com> wrote on 07/16/2006 10:41:55 AM:
> 
> > 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. 
> 
> Do you think that re-installing plague-0.5 from scratch (rpm -e/rpm
> -ivh) might help?  
> If so, are there any "gotchas" I need to be aware of? 
> But hopefully this won't be necessary.

Hmm, this likely wouldn't change much.

> But also I have a question: Since i686 is a "subarch" of i386, do I
> need 
> to create any target config files specicially for i686, such as in
> the 
> following directories: 
> - /etc/plague/server/targets 
> - /etc/plague/builder/targets 
> - /etc/mock  

No, you shouldn't need to create target configs for that.  Only for
'base' architectures like i386, ppc, ppc64, x86_64, sparc, sparc64, etc.
Sub-architectures like i686, em64t, sparcv9, etc, don't need their own
target configs.

For the builder, you need one target config for every "repository" that
builder will be able to support.  For example, if the machine were an
x86-64-class machine able to build Fedora Core and Fedora Extras, you'd
have in /etc/plague/builder/targets:

fedora-devel-i386-core.cfg
fedora-5-i386-core.cfg
fedora-4-i386-core.cfg
fedora-devel-i386-extras.cfg
fedora-5-i386-extras.cfg
fedora-4-i386-extras.cfg
fedora-devel-x86_64-core.cfg
fedora-5-x86_64-core.cfg
...

and on the server, which has _no_ architecture at all, you'd have
in /etc/plague/server/targets:

fedora-devel-core.cfg
fedora-5-core.cfg
fedora-4-core.cfg
fedora-devel-extras.cfg
fedora-5-extras.cfg
fedora-4-extras.cfg

and on the server, if you care about depsolving (ie if you have the
"depsolve_jobs = yes" set in /etc/plague/server/plague-server.cfg) then
you actually do need mock target configs for everything too, because the
server will use those to depsolve.

> > 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.
> >  
> 
> I'm also really clear on this, too, now.  Well, at least this proves,
> to  
> me anyway, that I've had a pretty decent understanding of how things
> work 
> all along -- thanks to the great description you gave above, of
> course. 

No problem.  There's so many options to stuff like RPM and apt/dpkg that
it's hard to keep straight.

> > > 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.
> >  
> 
> Oh, cool, I've never done that before - thanks.   
> 
> Regardless, though, I still don't see any variable
> in /usr/bin/plague-server 
> that has *anything* to with "optional arches" or "base arches", which
> is  
> what the patch was for right? 

The patch would actually have been
against /usr/share/plague/server/Config.py.  That's where it gets
somewhat confusing, since in the build directory everything is together,
but during RPM creation and install the server's main.py file gets
renamed to /usr/bin/plague-server.  What I've said 'plague-server', I've
generally been referring to the server process as a whole, not specific
files.  Sorry for that.

> > > 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 at 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? 
> 
> ====================================== 
> Excerpt from lnxaddons-100-install.cfg 
> ====================================== 
> 
> -----------<snip>------------   
> [Arches] 
> base_arches=i386 
> optional_arches=i686 noarch 

Ok; I think this is the cause of the noarch problem.  Since 'noarch' is
a base architecture in itself, you don't need it in optional_arches.  If
you remove it, I think things will work as you expect.  Every builder
can build a 'noarch' package, so that architecture is essentially added
by default and you don't need to do anything explicit for it.  Yay for
documentation (or complete lack of it).

However, this does expose a bug.  If an architecture is listed in
optional_arches, it shouldn't actually be used by a package build unless
the package was going to build for noarch already.

> ----------</snip>------------   
> > 
> > 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
> >  
> 
> ======================== 
> Excerpt from WhoAmI.spec 
> ======================== 
> 
> -----------<snip>------------   
> %define rversion 4.00 
> %define rel      9 
> %define pkgname  WhoAmI 
> 
> Summary         : %{__distribution_long} system information 
> Name            : %{pkgname} 
> Version         : %{rversion} 
> Release         : %{rel}_%{__build_distribution}%{__build_release} 
> License         : %__spec_internal_license 
> Group           : System Environment/Base 
> Url             : %__repository_url 
> 
> Packager        : %{packager} 
> 
> Source0         : %{pkgname}.tar.gz 
> 
> %if %__build_rhel 
> Requires        : coreutils, bash, python, grep, rpm 
> %endif 
> 
> %if %__build_suse 
> Requires        : coreutils, bash, aaa_base, python, grep, rpm 
> %endif 
> 
> BuildArch       : noarch 

I'm getting slightly confused here.  Plague 0.4.3 was building this
package correctly as an i686 package?  Do you really _want_ this to
build as an i686 package?  If so, I think the "BuildArch: noarch" is
wrong then.  Typically, if you want a package to build noarch, you
specify "BuildArch: noarch" and it will then only build on noarch.  What
arch is this package supposed to be for, exactly?

Cheers,
Dan





More information about the Fedora-buildsys-list mailing list