[Bug 1219011] New: cannot specify which multibuild package flavors to use for build in package metadata

https://bugzilla.suse.com/show_bug.cgi?id=1219011 Bug ID: 1219011 Summary: cannot specify which multibuild package flavors to use for build in package metadata Classification: Internal Novell Products Product: openSUSE Build Service Version: master Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: backend Assignee: mls@suse.com Reporter: msuchanek@suse.com QA Contact: adrian.schroeter@suse.com CC: adrian.schroeter@suse.com, mls@suse.com Depends on: 1219005 Blocks: 1211226, 1218184 Target Milestone: --- Found By: --- Blocker: --- +++ This bug was initially created as a clone of Bug #1219005 +++ For some packages a number of different builds uses the same source. For consistency and efficiency it is required to upload the sources only once, and run multiple builds against the same sources. Historically this has been done by package links: The sources would be uploaded with a number of spec files, and a number of package links created. Because OBS selects the spec file to build based on container name the different package links would build different spec files. In other ways these package links appear as any other build containers. In particular, it's possible to select in what repositories (if any) the individual spec files should be used for build in the package container metadata. There is a push to convert these packages to use multibuild instead. With multibuild a _multibuild file is created that lists the spec files to build but only one package container is created in which all these spec files are built. That results in only one container metadata, and inability to specify which packages to use for build. https://github.com/openSUSE/open-build-service/issues/3574 This is important functionality for development of core packages. The kernel is used for building the kernel, binutils are used for building binutils, etc. When a broken version of such core package is uploaded into a develproject the develproject breaks, and will no longer produce any binaries. The answer is 'You can wipe binaries', and that's clearly the case. The kernel is uploaded using a custom script, and it does wipe the binaries as part of the upload. In this particular case it's also not particularly disruptive because the package that can break the build is also fast to rebuild. That is not the case with all packages. Wiping the binaries can be forgotten if done by hand, and then it will. Wiping the binaries always might be disruptive for some packages. The other option is to use some sort of bootstrap project setup. The release projects do use the various ring projects, and some toolchains bootstrap in quite elaborate ways because that's required for those particular packages. What these bootstrap setups have in common is that they are each one of a kind, very hard to understand for people who are not experts on OBS, and very fiddly. For some packages the 'use for build' flag was enough for setting up a project that can continuously build binaries as the developers upload changes, without breaking when a broken version is uploaded, without using special tools. Given that people working on toolchain or kernel are experts in that area and not necessarily on OBS project setup this feature is valuable for streamlining development of these core packages. Given that these core packages also typically use multiple spec files with one source file the 'use for build' is not longer available with multibuild, nor is any replacement. Clearly, having streamlined, standardized, and well-documented bootstrap project setup would also help, and solve the problem even for the cases where 'use for build' is not sufficient. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 Michal Suchanek <msuchanek@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Depends on|1219005 | -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 Gustavo Yokoyama Ribeiro <gyribeiro@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks|1218184 | -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c1 --- Comment #1 from Michael Schröder <mls@suse.com> --- I'm not sure what it is exactly you're asking for. Using the package meta file (i.e. the xml containing <package>) is not an option, as it is not part of the sources, i.e. will get lost over the interconnect or if you branch/link. What's certainly possible is to add a new hint to the recipe parser, e.g. #!DisableUseforbuild or something similar. You can put that in an %if statement that tests the flavor to get the old functionality back. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c2 --- Comment #2 from Michal Suchanek <msuchanek@suse.com> --- And how would you release a package that has this #!DisableUseforbuild in the spec file? That makes absolutely no sense. What is built or not build, used for build or not is part of the project configuration, and it's completely fine and correct that it does not apply if the package is built in a different project. It might be worthwhile to have some helper that transfers this package-specific metadata when package is branched, and it seems to be done to some extent because some branched packages get branched with build disabled in some repositories sometimes. Nonetheless, this is property of the project, should be stored in the project, and in some format that can be parsed independently. While there is a XML parser that can parse prjmeta and package meta XML and extract specific data from it for pretty much any programming language I am not aware of any interpreter that can interpret the prjconf. Worse, the prjconf of the project is not the complete information. Looking at the project git repository is not sufficient to determine if something is built based on prjcon build flags. The OBS repository for which the git repository is the source needs to be located, and the combined prjconf from all projects used in build obtained from OBS, and that still does not give the settings but source code that needs to be interpreted. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c3 --- Comment #3 from Michael Schröder <mls@suse.com> --- Sorry, you were talking about multibuild flavors. That's part of the package source, not project configuration. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c4 --- Comment #4 from Michael Schröder <mls@suse.com> --- And why are you ranting about the prjconf? I didn't say anything about the project config. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c5 --- Comment #5 from Michal Suchanek <msuchanek@suse.com> --- multibuild flavors were forced on people who used package links to build multiple packages out of the same source. The concept did not change much: The package contains multiple spec files, and it's up to the project configuration which to build. Now the spec files are also listed in a _multibuild file which is kind of superfluous but whatever. Except with package links each spec file had its own package meta which made it possible to specify in which repository and for what architecture to build, publish, and use for build the build product of each individual spec file. With multibuild this is no longer the case, the package meta is shared for all the spec files in the multibuild file. As a replacement prjconf onlybuild/excludebuild flags were offered in another bug discussing this problem, as was discussed in the bug this was cloned from. -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c6 --- Comment #6 from Michael Schröder <mls@suse.com> --- Can you point my an OBS project where you're currently using useforbuild on some packages? -- You are receiving this mail because: You are on the CC list for the bug.

https://bugzilla.suse.com/show_bug.cgi?id=1219011 https://bugzilla.suse.com/show_bug.cgi?id=1219011#c7 --- Comment #7 from Michal Suchanek <msuchanek@suse.com> --- No, for kernel the feature is blocked by multibuild. IIRC devel:gcc uses it for some packages. -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@suse.com