Differences between mock and koji?

Richard W.M. Jones rjones at redhat.com
Wed Jun 5 22:08:01 UTC 2013


On Wed, Jun 05, 2013 at 01:38:33PM -0600, Kevin Fenzi wrote:
> On Wed, 5 Jun 2013 20:33:14 +0100
> "Richard W.M. Jones" <rjones at redhat.com> wrote:
> 
> > On Tue, Jun 04, 2013 at 04:52:14PM +0200, Simone Caronni wrote:
> > > Hello,
> > > 
> > > I have a package that builds fine in a fresh rawhide mock chroot
> > > and not in a koji build. Is there any difference between the two?
> > 
> > The other thing they don't tell you ... and it's an endless source of
> > "fun" ... is that Koji runs the whole Fedora userspace on top of a
> > RHEL 6 kernel.
> > 
> > This causes some extremely obscure bugs.
> 
> I'm not sure how you intended this, but it reads like there's some
> cabal hiding setup details from you. This is not at all the case. ;) 
> 
> I'm happy to gather information about or relate information about our
> setup to anyone who asks. 
> 
> If you can think of places we could document things better, please do
> add the details there. 

Sorry I didn't mean to imply this was hidden.

> There are some oddities due to running RHEL on builders, but I would
> call it a pretty corner set of cases, not something to panic about. 

Actually the worse case is EPEL 6 / RHEL 6 which seem to use a RHEL 5
kernel.  I have to use an LD_PRELOAD hack to get things to to run
there [attached].  The issue wasn't with the LD_PRELOAD hack itself
which is quite small, but with the amount of days I spent debugging
this.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
-------------- next part --------------
/* LD_PRELOAD library used as a workaround for RHBZ#563103 & RHBZ#968905. */

#define _GNU_SOURCE 1
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <dlfcn.h>

ssize_t
preadv (int fd, ...)
{
  errno = ENOSYS;
  return -1;
}

ssize_t
preadv64 (int fd, ...)
{
  errno = ENOSYS;
  return -1;
}

ssize_t
pwritev(int fd, ...)
{
  errno = ENOSYS;
  return -1;
}

ssize_t
pwritev64 (int fd, ...)
{
  errno = ENOSYS;
  return -1;
}

static int (*orig_socket) (int domain, int type, int protocol);

int
socket (int domain, int type, int protocol)
{
  /* Remove SOCK_CLOEXEC flag. */
  return orig_socket (domain, type & ~02000000, protocol);
}

static void init (void) __attribute__((constructor));

static void
init (void)
{
  orig_socket = dlsym (RTLD_NEXT, "socket");
}


More information about the devel mailing list