zypper up systemd
Loading repository data...
Reading installed packages...
Resolving package dependencies...
Problem: nothing provides this-is-only-for-build-envs needed by systemd-228-14.1.x86_64
Solution 1: do not install systemd-228-14.1.x86_64
Solution 2: break systemd-228-14.1.x86_64 by ignoring some of its dependencies
‘option 2’ will do exactly what it offers … ignore the dependency.
I don’t want to ignore it. I want to understand/fix it. The goal is to get to a production quality build, not a kludge/workaround.
The prjconf required the Ignores just to build.
TBH, I’ve no idea why these “nothing-provides-this-is-only-for-build-envs-quot” refs are used in the first place. There’s also a ‘bootstrap’ flag that appears to toggle these.
I was advised to ask ‘systemd-maintainers’ about this build/spec, as it’s “theirs”. I asked a couple of times; once, just ignored the question, the other I can’t manage to even get posted to the list.
So moved here, hoping to bump into some expertise on this build.
Unless someone else speaks up,
I suspect the dependency you’ve run into is only a way to warn the User some software critical to functionality (The subsystem systemd is absolutely critical to functionality from which there may not be any recoverable option if it fails). This is OK if you’re building only for yourself or Users are building only for specific targets but could be extremely damaging if it’s faulty and is installed by some unknown person.
So, in this case the dependency is likely not related directly to the systemd you’re running.
I don’t see that your dependency is actually an RPM but you could search your system for any files with that name and if found inspect its contents.
And why did you set this flag in the first place if you do not even know what it does? Do not set it and you won’t get this strange dependency. Do not touch it in spec file at all.
And created minimal package intended to be used only in build root. This package is also stripped down and exists mostly to satisfy dependencies during packages build, not to be actually used on any real system.
I assume Leap is disabled for systemd in Base:System for a reason (most likely newer systemd requires newer versions of some other software). But to know for sure - please show build logs with bootstrap == 0.
It does not build systemd-remote (at least) because Leap has too old version of microhttpd. I doubt you actually need it, so just remove related files from file list. Or build newer microhttpd as part of your project. The latter is probably preferable if you want exactly the same package.
And there may be other missing dependencies, you need to analyze why it fails and fix root cause.
I’ve addded devel:c_c++ as a project build dep – I think that should do it; building now.
More interesting to me is where/how you tracked down the too-old mictohttpd? I didn’t see any microhttpd-specific complaint in the buildlog for systemd, so clearly I’m not looking in the right place.
Unfortunately, this OBS build is a kludge atm. systemd-maintainers have refused to build/release a current systemd for Leap, stating only to use TW, which is not an option here. Ideally, I’d like to use online OBS to provide the solution; not yet clear if that’s worth the continued effort, versus a clean upstream build locally.