On Mon, Dec 16, 2019 at 4:59 AM Ludwig Nussel <ludwig.nussel@suse.de> wrote:
Adrian Schröter schrieb:
On Montag, 9. Dezember 2019, 13:21:13 CET Ludwig Nussel wrote:
Hi,
Trying to figure out a way to use multibuild for mingw packages. The challenge there is that almost all packages need to be built for 32bit as well as 64bit Windows. So currently we have mingw32-foo and mingw64-foo packages. With exactly identical spec files except for s/mingw64/mingw32/ and vice versa. So sounds like a job for multibuild with flavors mingw32 and mingw64 to produce those packages from a common mingw-foo package. Now there are also packages that have multiple spec files though like gcc and pkgconf. Looks like that case was somehow forseen for multibuild as there are 'flavor' and 'package' tags. In the end both are treated the same though and end up as @BUILD_FLAVOR@ in spec files.
Are there any plans to change that? So one could write something like
<multibuild> <flavor>mingw64</flavor> <flavor>mingw32</flavor> <package>mingw-gcc</package> <package>mingw-cross-gcc</package> <package>mingw-cross-gcc-bootstrap</package> </multibuild>
to produce six packages?
Short of that would it work to have both links and multibuild? Ie links according to spec file names and only mingw flavors?
hm, not sure if it makes sense to use _multibuild here. Isn't this more like python2 vs python3 stuff?
So, one spec, one build enviroment where you could pull in both works and build multiple binary rpm's?
After looking at a more elaborate spec file I'm quite sure that using multibuild would be superior to complex macro magic. Much easier to handle and understand for packagers.
Rpm macros like done with python and also how Fedora does mingw have to hide the fact that things are done multiple times.
So when calling something like eg. %make that wouldn't actually call "make" but eg
cd build_win32 make cd ../build_win64 make cd ..
All commands to deal with the sources have to be duplicated that way, either hidden by macros or manually. Look at this for example:
https://src.fedoraproject.org/rpms/mingw-qt5-qtbase/blob/master/f/mingw-qt5-...
The spec is long enough without the duplication already.
Also, by building both flavors in the same spec the build gets serialized whereas multibuild could build on two hosts in parallel.
There are major downsides too: using multibuild means that local development of such packages is functionally impossible. You are also saying it's okay to occupy more builders at a time (which is probably not actually okay to do at scale). You also lose the guarantee that the binary artifacts are always in sync, since a failure for one flavor doesn't stop another. That is a subtle kind of breakage that's hard to perceive and fix. Duplication in the spec is something that is solvable (cf. SUSE-style single-spec for Python and Ruby). But losing understandability and coherence is something I'd rather not see us do. -- 真実はいつも一つ!/ Always, there's only one truth! -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org