Mailinglist Archive: opensuse-buildservice (170 mails)

< Previous Next >
[opensuse-buildservice] different packages installed in local build chroot than in OBS build
Hi!

As already initially discussed on IRC I have observed that my local
chroot build environments get different packages installed than the build
environment on the OBS workers.

I think the discussion there confirmed my assumption that the local chroot
should have exactly the same contents as the build environment on the
host[1].

Both OBS and my local environment are just chroot, no virtualization[2].

I have a hierarchy (<path> in buildinfo) of 4 projects, the "lowest" one has
a project configuration. I'm using the highest one and there I see the
difference in the build roots.

The main properties are:

- worker architecture is x86_64, same for my local machine
- target architecture is arm, all execection uses binfmt_misc and
qemu-arm-static


The differences are related to some preinstalls. The preinstalls are
defined in the project configuration of the "lowest" project, e. g. like
this

%if %speedbash
Preinstall: bash-x86-arm ncurses-libs-x86-arm
Runscripts: bash-x86-arm
%endif

(This is just one example, there are several similar cases in the whole
project config)

This configuration is copied correctly into .osc/_buildconfig... when
I run osc build.

However, it appears that on the OBS the %speedbash macro is true
(resulting in some x86 preinstalls), in my local builds it must be false
(these preinstalls are missing). So I end up with different preinstalls
locally than remote.

The %speedbash macro depends on other %if macros, but in the beginning
of the chain some macro must just be initialized differently on the
worker host than locally. How can I find out where these macros are
actually intialized and where the difference comes from?

When looking at http://en.opensuse.org/openSUSE:Build_Service_prjconf, I
read:

The prjconf denotes the (build) configuration of a project. The main
part of this file (/usr/lib/build/configs/$distro.conf) is the
definition of the build environment

So do these conf files actually play a role in the initialization of the
macros? If yes, is it the one on the host or the one in the chroot? I
don't really understand how that should work: We are talking about the
initialization of the chroot, so I can't see how the conf files from
inside the chroot could be used, because they are not there yet when we
need to decide our preinstalls. But on the other side if the ones of
the host are used, the host could influence the contents of the chroot,
contradicting the purpose of the chroot being a well-defined isolated
build envoironment. Any explanations to solve this knot are welcome.
Or are these conf files for the "second" kind of macros only, which are
used by rpmbuild, not those used in the prjconf?

Any hints to trace down were the difference is created? I have already
tried to debug osc a bit, but at least so far I have not found any place
where these macros are handled. When I execute "osc build", is the
difference likely to be caused already on the OBS (I don't have any
access to the installation than a normal user account) and included
e.g. in the buildinfo sent from the OBS to my local build or does the
relevant processing happen first locally in my own machine (where I
could debug it)?

Regards,

Uwe Geuder
Nomovok Ltd.
Tampere, Finland
uwe.gxuder@xxxxxxxxxxx (bot check: humans correct 1 obvious spelling error)



[1] As far as installed packages are concerned. Of course there will be
other differences like the kernel, the amount of memory and a million
other parameters that could cause nasty problems if things go really wrong.

[2] chroot in OBS is a security risk. This is a private OBS instance
in a closed intranet with only "trusted" users.
--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups