[pkg-gnupg-maint] Bug#799177: libgpg-error FTCBFS for hurd-i386: syscfg/lock-obj-pub.gnu.h missing

Helmut Grohne helmut at subdivi.de
Wed Sep 16 14:42:52 UTC 2015


Source: libgpg-error
Version: 1.20-1
User: helmutg at debian.org
Usertags: rebootstrap

Hi GnuPG maintainers,

I found another architecture for which libgpg-error fails to cross
build. It's hurd-i386 this time. The relevant part of the build log is
as follows (build=amd64, host=hurd-i386):

| Making all in src
| make[4]: Entering directory '/tmp/buildd/libgpg-error/libgpg-error-1.20/src'
| gawk -f ./mkerrnos.awk ./errnos.in >code-to-errno.h
| gawk -f ./mkerrcodes1.awk ./errnos.in >_mkerrcodes.h
| gawk -f ./mkstrtable.awk -v textidx=2 -v nogettext=1 \
|         ./err-sources.h.in >err-sources-sym.h
| gawk -f ./mkstrtable.awk -v textidx=2 -v nogettext=1 \
|         ./err-codes.h.in >err-codes-sym.h
| gawk -f ./mkstrtable.awk -v textidx=2 -v nogettext=1 \
|         -v prefix=GPG_ERR_ -v namespace=errnos_ \
|         ./errnos.in >errnos-sym.h
| i586-gnu-gcc -E -D_FORTIFY_SOURCE=2  -P _mkerrcodes.h | grep GPG_ERR_ | \
|                gawk -f ./mkerrcodes.awk >mkerrcodes.h
| cc -g -O0 -I. -I. -o mkheader ./mkheader.c
| cat ./gpg-error.def.in >_gpg-error.def.h
| echo "/*dummy*/" > mkw32errmap.map.c
| i586-gnu-gcc -E -I. -I..   _gpg-error.def.h | \
|   grep -v '^#' >gpg-error.def
| rm _mkerrcodes.h
| rm _gpg-error.def.h
| cc -I. -I. -o mkerrcodes ./mkerrcodes.c
| ./mkerrcodes | gawk -f ./mkerrcodes2.awk >code-from-errno.h
| if test -f lock-obj-pub.native.h; then rm lock-obj-pub.native.h; fi
| ./mkheader gnu i586-pc-gnu  ./gpg-error.h.in \
|                    ../config.h 1.20 0x011400 >gpg-error.h
| ./gpg-error.h.in:402: error including `./syscfg/lock-obj-pub.gnu.h': No such file or directory
| Makefile:1315: recipe for target 'gpg-error.h' failed
| make[4]: *** [gpg-error.h] Error 1
| make[4]: Leaving directory '/tmp/buildd/libgpg-error/libgpg-error-1.20/src'
| Makefile:485: recipe for target 'all-recursive' failed
| make[3]: *** [all-recursive] Error 1
| make[3]: Leaving directory '/tmp/buildd/libgpg-error/libgpg-error-1.20'
| Makefile:417: recipe for target 'all' failed
| make[2]: *** [all] Error 2
| make[2]: Leaving directory '/tmp/buildd/libgpg-error/libgpg-error-1.20'
| dh_auto_build: make -j5 returned exit code 2
| debian/rules:25: recipe for target 'override_dh_auto_build' failed
| make[1]: *** [override_dh_auto_build] Error 2
| make[1]: Leaving directory '/tmp/buildd/libgpg-error/libgpg-error-1.20'
| debian/rules:14: recipe for target 'build-arch' failed
| make: *** [build-arch] Error 2
| dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2

You might wonder why the file it tried is called "lock-obj-pub.gnu.h".
This is due to mkheader first trying to use the triplet (i586-pc-gnu)
and after it determined that it does not exist, it fell back to the host
os (gnu). So the file should actually be called
"lock-obj-pub.i586-pc-gnu.h".

While having a look at mkheader.c, I also figured that its architecture
alias table (which is only relevant to x86_32) is lacking a few aliases.
See
http://sources.debian.net/src/libgpg-error/1.20-1/src/mkheader.c/#L78.

I think that there is two things that need doing here.
 * Rename lock-obj-pub.i486-pc-gnu.h to lock-obj-pub.i586-pc-gnu.h.
 * Add i486-pc-gnu as an alias for i586-pc-gnu to mkheader.c.
 * If you don't want to receive another bug for kfreebsd-i386, repeat
   for i586-pc-kfreebsd-gnu.
 * To be future-proof, you can go i686 directly (assuming appropriate
   aliases).

Helmut



More information about the pkg-gnupg-maint mailing list