On Thu, Jul 03, 2014 at 10:19:46AM -0400, Daniel Kahn Gillmor wrote:
> It sounds like upstream is willing to include these headers for whatever
> architecture we want, and it looks like it should be pretty
> straightforward to add headers as a stopgap to new debian releases of
> libgpg-error should we need to do that.

I do not think that this is a good solution, because it is hard to
maintain. These headers may need changes with updated versions of glibc
(or with a different libc) and for new ports the header will always be
missing. Ultimately, this is not a good solution.

> Helmut, can you try doing that for some of our more obscure
> architectures, or for ones you're trying to cross-build?  I'm happy to
> forward any platform-specific generated header files upstream.

I'm sorry, I cannot do that for two reasons:
 * The list of Debian architectures I am trying to crossbuild for is:
   alpha, arm, arm64, armel, armhf, hppa, i386, ia64, m68k, mips,
   mips64el, mipsel, or1k, powerpc, powerpcspe, ppc64, ppc64el, s390,
   s390x, sh4, sparc, sparc64, x32.
   I hope you agree with me that this is simply infeasible for me to do.
 * For many of these architectures executing code is non-trivial. For
   example, it is still hard to obtain hardware access for arm64, or1k,
   and ppc64el. Also the qemu emulation is lacking (segfaults etc) for
   some architectures.

On Thu, 03 Jul 2014 08:46:00 +0200, Werner Koch wrote:
> By means of configure's AC_CHECK_SIZEOF - pretty standard for
> cross-compiling.

I'd much prefer a solution based on AC_CHECK_SIZEOF (which works without
executing binaries for the host), but I am not an autofoo expert. It
seems that gen-posix-lock-obj examines the following aspects:

 * sizeof(pthread_mutex_t)
 * sizeof(_gpgrt_lock_t)
 * Assumes that reordering a long in a struct retains size. I am not
   sure why this assumption should be safe. (_gpgrt_lock_t vs. dummyobj)
   Explanation welcome.
 * Assumes that sizeof(long) <= sizeof(long*). I am not sure why this
   assumption should be safe. (_gpgrt_lock_t vs. gpgrt_lock_t)
   Explanation welcome.
 * Explicitly assumes that a union of long long* has the same alignment
   as pthread_mutex_t (see comment).
 * The contents that PTHREAD_MUTEX_INITIALIZER assigns to a
   pthread_mutex_t.

Can someone explain to me why gpgrt_lock_t cannot be redefined to be
a typedef to _gpgrt_lock_t and GPGRT_LOCK_INITIALIZER cannot be changed
from

        { <<hardcoded value of LOCK_ABI_VERSION>> ,{{ \
                <<sequence of char values>> }}

to
        {LOCK_ABI_VERSION,{PTHREAD_MUTEX_INITIALIZER}}?

That'd help me better understand why we need this dance. I didn't find
answers to these questions in either READMEs.

Please keep CCing me.

Helmut


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to