On Tuesday 18 August 2015, 23:23:32 wrote Wanghui:
Hi,
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"> <arch>x86_64</arch> <arch>i586</arch> </repository>
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 CentOS-7-x86_64-Everything-1503-01.iso
Third, create another project names test, in its Meta I add below <repository name="standard"> <path project="CentOS7" repository="standard"/> <arch>x86_64</arch> <arch>i586</arch> </repository>
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/libc.so.6, nothing provides /usr/lib/libc.so, nothing provides /lib64/libc.so.6, nothing provides /usr/lib64/libc.so"
gcc.spec has BuildRequires that directly point to file like below BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
this is only supported via FileProvides: in project config http://openbuildservice.org/help/manuals/obs-reference-guide/cha.obs.build_c...
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 glibc(x86-32)
Question: 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. 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.
Question: 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 build. Maybe it is easier to build it inside of i586 scheduler arch, but export the result to x86_64 repo using ExportFilter: syntax -- Adrian Schroeter email: adrian@suse.de SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org