openSUSE / obs-build

OBS build script, can be used with OBS or stand alone
GNU General Public License v2.0
132 stars 184 forks source link

Have 32bit choice when build with pkgconfig #724

Open zyppe opened 3 years ago

zyppe commented 3 years ago

When I build rpm with build script, if my spec has pkgconfig something, build will say have choice for pkgconfig (): ... ...-32bit An example is: When I build grub2 My command is sudo build --debug --repo https://mirror.sjtu.edu.cn/opensuse/update/leap/15.3/sle/ --repo https://mirror.sjtu.edu.cn/opensuse/update/leap/15.3/backports/ --repo https://mirror.sjtu.edu.cn/opensuse/update/leap/15.3/leap/ --repo https://mirror.sjtu.edu.cn/opensuse/update/leap/15.3/oss/ --repo https://mirrors.huaweicloud.com/opensuse/distribution/leap/15.3/repo/oss/ --dist sle15.3 grub2-2.04-20.4.src.rpm It will tell me expansion error have choice for pkgconfig (libudev) needed by device-mapper-devel: libudev-devel libudev-devel-32bit have choice for pkgconfig (bzip2) needed by freetype2-devel: libbz2-devel libbz2-devel-32bit I know maybe it is not a bug, but could you tell my how to resolve it?

zyppe commented 3 years ago

PS: Could you tell me how to generate lib with -32bit suffix?

mlschroe commented 3 years ago

Usually the 32bit packages are de-preferred in the project config, so this may be called a bug.

For now you should be able to tell the build program which package to use by calling it with -X libudev-devel -X libbz2-devel.

mlschroe commented 3 years ago

The -32bit packages are created by adding the --baselibs option and doing a build for the i586 arch, i.e. by prepending a linux32 call to the command line:

sudo linux32 build --baselibs...
zyppe commented 3 years ago

I found this bug in openSUSE 15.3, in openSUSE 15.2, it doesn't have this bug. You can just ust --dist sle15.3 and this will trigger this fault. Could you leave me a command example for generate 32bit package such as zlib?

zyppe commented 2 years ago

[ 4s] expansion error [ 4s] have choice for pkgconfig(libudev) needed by device-mapper-devel: libudev-devel libudev-devel-32bit [ 4s] have choice for pkgconfig(bzip2) needed by freetype2-devel: libbz2-devel libbz2-devel-32bit [ 4s] have choice for libffi.so.7()(64bit) needed by python3-base: ghc-bootstrap libffi7 [ 4s] have choice for libffi.so.7(LIBFFI_BASE_7.0)(64bit) needed by python3-base: ghc-bootstrap libffi7 [ 4s] have choice for libffi.so.7(LIBFFI_CLOSURE_7.0)(64bit) needed by python3-base: ghc-bootstrap libffi7 This bug still has not been fixed

zyppe commented 2 years ago

It seems that this bug is not from obs-build, because I used Leap 15.2 version of build, but is there anyone could tell me what cause it, is there any method to fix it?

badshah400 commented 5 months ago

This is in my opinion a baselibs issue. Having developers manually specify a preference order for pkgconfig deps in every project is asking too much.

A workaround, at the package level is to manually drop the pkgconfig file from the baselibs generated packages as done here: https://build.opensuse.org/request/show/1172098 but that is also very unwieldy.

I suggest that baselibs should not automatically package anything except the libs. That is, please drop the .pc from https://github.com/openSUSE/obs-build/blob/1bc1805b0b46e2f082357b893c4c075219e15bfd/baselibs_configs/baselibs_global.conf#L27

Of course if a developer specifically want, say their -32bit-devel package to carry the pkgconf file, they can add it manually to their baselibs.conf, but I doubt this is needed in most cases.