[opensuse-buildservice] Project linking of type linkedbuild="localdep"
Hi! I tried to use a linked project of type linkedbuild="localdep", and I expect some packages from the base project to become visible in the linked project and be built there, but nothing happens. Only packages existing locally in the linked project are visible. So here is the whole story: In a private OBS instance I have a couple of bigger projects with deep dependencies. One of the "patterns" I saw, is that a package has 2 alternative implementations. To just limit the explanation to a small core, let's say package "a" depends on package "b" (actually it depends on pkgconfig(some-stuff-provided-by-b), but I think that should not make a difference. Now "b" exists in 2 alternative implementations, which cannot co-exist in the same installation. So my idea was: 1. Make a "base project", which contains everything except any implementation of "b". Quite many packages are built inside the "base project" but of course "a" is not because "b" is missing. (In reality I have many "a"s in different depths of dependencies, but again I guess this should not change the basic concepts) 2. Make a linked project of type linkedbuild="localdep" (http://en.opensuse.org/openSUSE:Build_Service_Concept_project_linking) , which contains one implementation of "b" The project meta is like this: <project name="linked"> <title>Linked project</title> <description></description> <link project="base"/> <person userid="uwe.geuder" role="maintainer"/> <person userid="uwe.geuder" role="bugowner"/> <repository linkedbuild="localdep" name="foo"> <path project="base" repository="foo"/> <arch>armv8el</arch> </repository> </project> Now "b" is built successfully and thereafter I would expect OBS to automatically build "a" in the linked project. But simply nothing happens. What am I missing here? Admittedly the "documentation" at http://en.opensuse.org/openSUSE:Build_Service_Concept_project_linking talks about rebuilding if a dependency changes. In my case that would be a bit stretched, because I expect the *first* build to happen when the dependency becomes available. Is it really so strict that the latter case is not supported at all? Obviously, after 2. I wanted to do 3., but as long 2. doesn't work it makes little sense 3. Make another linked project of type linkedbuild="localdep", which contains another implementation of "b" The whole idea is to have OBS to determine the minimal set of packages needing rebuild and have a "natural set" of packages in my "base" project. I guess the problem can be solved in 2 ways: I. Split the "base" project into a lower layer not depending on "b" and a higher level depending on "b". Then the higher layer could have 2 repos, each depending on a different project providing an implementation of "b" II. use linkedbuild="all" Because the project contains quite some packages I have not yet played with these alternatives, rebuilding will take time. Primarily I would like to understand what was wrong with my initial plan and can it be salvaged somehow. Regards, Uwe Geuder Nomovok Ltd. Tampere, Finland uwe.gxuder@nomovok.com (bot check: humans correct 1 obvious spelling error) P.S. After rereading the documentation, I started to wonder... Is the localdep in 'linkedbuild="localdep"' really a keyword or does it somehow refer to the name in 'name="localdep"' in the same XML element? I did not call my new repo "localdep", could that make the whole repo definition wrong? -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Montag, 25. August 2014, 16:15:08 wrote Uwe Geuder:
Hi!
I tried to use a linked project of type linkedbuild="localdep", and I expect some packages from the base project to become visible in the linked project and be built there, but nothing happens. Only packages existing locally in the linked project are visible.
they do not become visible as sources, when you list package eg via osc ls $PROJECT but they should become visible on the build monitor. (with newer osc versions you can also list the expanded sources using the -e switch).
So here is the whole story:
In a private OBS instance I have a couple of bigger projects with deep dependencies.
One of the "patterns" I saw, is that a package has 2 alternative implementations.
To just limit the explanation to a small core, let's say package "a" depends on package "b" (actually it depends on pkgconfig(some-stuff-provided-by-b), but I think that should not make a difference.
Now "b" exists in 2 alternative implementations, which cannot co-exist in the same installation.
So my idea was:
1. Make a "base project", which contains everything except any implementation of "b". Quite many packages are built inside the "base project" but of course "a" is not because "b" is missing. (In reality I have many "a"s in different depths of dependencies, but again I guess this should not change the basic concepts)
2. Make a linked project of type linkedbuild="localdep" (http://en.opensuse.org/openSUSE:Build_Service_Concept_project_linking) , which contains one implementation of "b"
The project meta is like this:
<project name="linked"> <title>Linked project</title> <description></description> <link project="base"/> <person userid="uwe.geuder" role="maintainer"/> <person userid="uwe.geuder" role="bugowner"/> <repository linkedbuild="localdep" name="foo"> <path project="base" repository="foo"/> <arch>armv8el</arch> </repository> </project>
Now "b" is built successfully and thereafter I would expect OBS to automatically build "a" in the linked project. But simply nothing happens. What am I missing here?
a does not depend on b? try to use linkedbuild="all" if you really want to build it again nevertheless. ...
II. use linkedbuild="all"
Because the project contains quite some packages I have not yet played with these alternatives, rebuilding will take time. Primarily I would like to understand what was wrong with my initial plan and can it be salvaged somehow.
okay, then you can of course still create a single package branch to enforce the build of that package.
P.S. After rereading the documentation, I started to wonder... Is the localdep in 'linkedbuild="localdep"' really a keyword or does it somehow refer to the name in 'name="localdep"' in the same XML element? I did not call my new repo "localdep", could that make the whole repo definition wrong?
this is perfectly fine. localdep says trigger only the build of the linked packages if another package in your layered project affects a build dependency. otherwise OBS assumes that you just can add both repos and have no dependency problems. -- Adrian Schroeter email: adrian@suse.de SUSE LINUX GmbH, GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer, 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
participants (2)
-
Adrian Schröter
-
Uwe Geuder