[opensuse-buildservice] questions about rebuild centos7 with openbuild service
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 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? 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? Anyone can help? Thank you hui.wang -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
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
On Wednesday 2015-08-19 10:16, Adrian Schröter wrote:
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).
In real life, it is possible, yet is cumbersome, and with pains - that's probably why Fedora and derivatives use it. If you ever have/want to use plain /usr/bin/rpm, rpm -U would obsolete all versions of the (same-name) package, creating one kind of problem. The other is overlapping files, since they do not use SLPP and library files and configs/etc are not separated. -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On 8/19/2015 4:16 PM, Adrian Schröter wrote:
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>
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/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.
Yes, in suse, we find 32bit packages were provided as <name>-32bit like glibc-32bit. 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 glibc-common-2.17-78.el7.x86_64 glibc-devel-2.17-78.el7.x86_64 glibc-2.17-78.el7.x86_64 glibc-2.17-78.el7.i686 glibc-headers-2.17-78.el7.x86_64 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.
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
I suppose so, but centos doesn't provide gcc.i686, sigh. Anyway I will try Target: i686, thank you very much.
ExportFilter:
syntax
-- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
participants (3)
-
Adrian Schröter
-
Jan Engelhardt
-
Wanghui (John)