Mailinglist Archive: opensuse-buildservice (136 mails)

< Previous Next >
Re: [opensuse-buildservice] questions about rebuild centos7 with openbuild service

On 8/19/2015 4:16 PM, Adrian Schröter wrote:
On Tuesday 18 August 2015, 23:23:32 wrote Wanghui:

I am rebuilding centos7 using a local openbuild service server,
which version is 2.6.2. Both server and worker are sles11 sp3.

First, I create a project names CentOS7, then put the content
below to Meta sheet through web page.

<repository name="standard">

Second, I connect the server, find the project repos, then create
":full" directory under x86_64 and i686 folder. After that, I copy
all x86_64 and noarch rpm packages to x86_64/:full, i686 and noarch
rpm packages to i686/:full. These rpm packages are from

Third, create another project names test, in its Meta I add below
<repository name="standard">
<path project="CentOS7" repository="standard"/>

Sorry, I mistaked, all above <arch>i586</arch> is actually <arch>i686</arch>

Here comes my questions.
1. I uploaded gcc's source, but it can't be built.
In x86_64 architecture the status is unresolvable with hint
"nothing provides /usr/bin/pod2man, nothing provides /lib/,
nothing provides /usr/lib/, nothing provides /lib64/,
nothing provides /usr/lib64/"

gcc.spec has BuildRequires that directly point to file like below
BuildRequires: /lib/ /usr/lib/ /lib64/

this is only supported via FileProvides: in project config

but openbuild service looks like can't analysis this kind BuildRequires,
so I
changed gcc.spec into
BuildRequires: glibc(x86-64) glibc(x86-32)

then hint changed into "nothing provides /usr/bin/pod2man, nothing
provides glibc(x86-32)"
looks like it can't find glibc-2.17-55.el7.i686.rpm which provides

How can I find 32bit BuildRequires while build x86_64 rpm packages?

this works only when using a different name for the package. You can't have
the same package
name for different architectures installed in parallel in OBS (and usually
also in real life).

Therefore we usually build the -32bit packages just providing a subset of
libraries which can
not be installed in parallel.

Yes, in suse, we find 32bit packages were provided as <name>-32bit like
But in centos, you can install glibc.i686 while glibc.x86_64 was installed.
just type command
"yum install glibc.i686", and so the others. Below command was executed on my
centos7.1 system

[root@localhost Packages]# rpm -qa | grep glibc

Compile gcc.x86_64 needs both glibc.x86_64 and glibc.i686 so that gcc.x86_64
can also build
32bit program with the option -m32.

But this works only for libs. Header files and executabels usually have the
same location
on disk and would replace the files. So the build script (or rpm) will abort
with file conflicts.

2. I uploaded glibc's source, x86_64 architecture was ok but can't build
i686 package
The status was also unresolvable, the hint is
"nothing provides gcc>=3.2 ………………"

seems build glibc.i686 rpm need gcc.i686, but actually, use gcc.x86_64
with option -m32
can build 32bit program, also "rpmbuild --target i686 glibc.spec" can
generate glibc's
i686 rpm on centos.

How can I cross build i686 package using x86_64 enviroment?

You may have some success using

Target: i686

in prjconf. But note that all packages in that repo will attempt to cross

Maybe it is easier to build it inside of i586 scheduler arch, but export the
result to
x86_64 repo using

I suppose so, but centos doesn't provide gcc.i686, sigh.
Anyway I will try Target: i686, thank you very much.



To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous Next >