Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <527CC16C.50108@barfooze.de>
Date: Fri, 08 Nov 2013 11:48:12 +0100
From: John Spencer <maillist-musl@...fooze.de>
To:  musl@...ts.openwall.com
CC: Gregor Richards <gr@...due.edu>
Subject: Re: Latest pkgsrc results [What builds on musl 0.9.13?]

Szabolcs Nagy wrote:
> * Szabolcs Nagy <nsz@...t70.net> [2013-11-07 03:46:52 +0100]:
>> * Gregor Richards <gr@...due.edu> [2013-11-06 21:22:14 -0500]:
>>> I've uploaded the complete log for this run to Google Drive: https://googledrive.com/host/0BwnS5DMB0YQ6Tjd4Z2RXeTdlaDA/pkgsrc-results-2013Q2-b44694ce2dd6-musl-0.9.13-log.txt.xz
>>> . If there's demand, I'll find a less silly solution in the future.
>> thanks, that is good enough for me
> 
> i processed a large chunk of the logs, here is a summary:

thanks, good work

> 
> top missing symbols (compile or link time):
> 
> libintl_*
> 	postgres*-client, libmusicbrainz5, weechat-curses, scmxx, scmgit-base,..
> getloadavg
> 	pbzip2, tokyotyrant, distccmon-gnome
> NO_ADDRESS
> 	apache22, bglibs, cvsps, vanessa_logger, net6

apache works flawlessly in sabotage, however that v24

> res_mkquery, res_send
> 	hesiod, openldap-server, queryperf, traceroute-nanog, avenger, mtr
> optreset
> 	dar, freetds
> 	(several configure checks found it incorrectly, but then it was not used)
> strtoq
> 	tdb, ia64sim

can be replaced with portable strtoll()

> GLOB_NOMAGIC, GLOB_BRACE
> 	asterisk18
> canonicalize_file_name
> 	gtkwave

can be replaced with portable realpath(X, 0)

> union wait
> 	tcsh

patch exists in sabotage

> semtimedop
> 	sqlrelay
> sys_errlist
> 	dmake

bsd specific errlist, can be replaced with strerror()

> sys_siglist
> 	xemacs

bsd specific siglist, can be replaced with strsignal()

> herror
> 	opencm
> mallinfo
> 	libfirm
> TIMESPEC_TO_TIMEVAL
> 	libusbx

patch exists in sabotage

> POSIX_SPAWN_USEVFORK
> 	ruby-posix-spawn
> ruserok
> 	u9fs
> struct ip_mreq_source
> 	mad-flute
> struct flock64
> 	qemu

patch exists in sabotage

> F_EXLCK
> 	qemu

patch exists in sabotage

> c_ispeed, c_ospeed (struct termios members)
> 	icdprog
> d_namlen (struct dirent member)
> 	icb
> st_ctimensec (struct stat member)
> 	libuv
> setpgrp (apparently sysv and bsd prototype differ)
> 	unrealircd
> libiconv_*
> 	odt2txt, ted
> KIOCSOUND, TIOCCDTR, TIOCSDTR, TIOCGSIZE (ioctl)
> 	minicom, modemd, beav
> __STRING, __P, __BEGIN_DECLS (cdefs.h)
> 	libmp4v2, ctrlproxy, irssi-xmpp, fortran-utils, cook

usage of sys/cdefs.h is stupid, these should just be fixed upstream

> 
> missing internal symbols:
> 	howl: __sighandler_t
> 	xetex, icu: __timezone
> 	h8300-hms-gcc: __mempcpy
> 	erlang: __uint32_t
> 	libstatgrab: __uint8_t
> 	applyppf, makeppf: __off64_t
> 	qemu: __sigset_t

likewise

> 
> 
> top missing headers:
> 
> sys/timeb.h
> 	unalz, audacity, gplcver, ng-spice, gammu, hdf5, libpgm, mico, dasher,..

was added to musl git a couple days back

> sys/cdefs.h
> 	asterisk*, xulrunner* (jemalloc), libmilter, sendmail, dhcpcd,..
> termio.h
> 	blackened, gnatpython, pardiff, emacs*-nox11, ski, bastet, craft, top,..

these should probably be fixed to check for termios.h at configure time 
and use that if available

> rpc/types.h rpc/rpc.h
> 	hdf, glusterfs, mrstat, lsof, snort, portmap, sharity-light, net-snmp, unfs3, ywho, PAM,..

there's a package "portablexdr" which provides these headers, plus an 
implementation of the xdr parts of it.

> sys/queue.h
> 	libstree, openrcs, miniupnpd, mtftpd, pim6dd, transmission,..

this one is fun: miniupnp for example comes with its own copy of 
queue.h, but doesnt use it properly. the author is ignoring a bug report 
since 10 months: https://github.com/miniupnp/miniupnp/issues/25 , maybe 
it would help if others could ping the issue there, so the author sees 
its not just a single dude demanding portability.
transmission includes its own copy of miniupnp, and that's what fails again.

packages using this header should generally provide their own copy, and 
then just unconditionally use it instead of doing all kinds of hacks to 
be able to fall back to the system copy if it exists.

patch exists in sabotage

> sgtty.h
> 	kermit, mg2a, ve, 7plus, xjdic
> execinfo.h
> 	redis, virtuoso, powerdns, packagekit, qt4-creator

they want to use glibc's backtrace(), so they should check whether it's 
available.

> sys/bitypes.h
> 	libbind, libdnsres
> sys/unistd.h
> 	mlview, foobillard, galaxa, slurm

should be <unistd.h> of course. no idea where these guys learned C.

> sys/endian.h
> 	swarm
> machine/endian.h
> 	estic, opendis

probably #ifdef __GLIBC__ used instead of __linux__ : machine/endian.h 
is the BSD/OSX version of <endian.h>

maybe sys/endian.h should be added as a forward to endian.h as it's been 
done for sys/poll.h and the likes.

> net/ppp_defs.h
> 	poptop, slurm, xfce4-netload-plugin
> a.out.h
> 	bcc, ntp4
> asm/page.h
> 	clisp, s10sh, same
> sys/debugreg.h
> 	gdb6

patch exists in sabotage

> sys/dirent.h
> 	heirloom-libcommon

should be <dirent.h>

> obstack.h
> 	p5-Proc-ProcessTable
> gnu/lib-names.h
> 	ruby-ffi
> fpu_control.h
> 	jamvm
> rpcsvc/ypclnt.h
> 	rtptools
> xlocale.h
> 	liblive
> net/if_ether.h
> 	cia

should be netinet/if_ether.h

> net/if_packet.h
> 	isc-dhcp4
> netinet/igmp.h
> 	ngrep
> re_comp.h
> 	rdist6
> fstab.h
> 	samba35
> error.h
> 	vpnc
> fts.h
> 	slocate

using fts.h is completely broken

quoting glibc:
/* The fts interface is incompatible with the LFS interface which
    transparently uses the 64-bit file access functions.  */
#ifdef __USE_FILE_OFFSET64
# error "<fts.h> cannot be used with -D_FILE_OFFSET_BITS==64"
#endif


> sys/perm.h
> 	xosview
> 
> 
> gcc-4.8.1 bugs:
> 	epic4: exec.c:118:18: internal compiler error: in set_lattice_value, at tree-ssa-ccp.c:451
> 	bullet: btInternalEdgeUtility.cpp:310:2: internal compiler error: Segmentation fault
> 	aegis fails because in libstdc++ cinttypes header is broken without -std=c++11 or -std=gnu++11
> 	boost-libs fail because mm_malloc.h has incompatible posix_memalign decl with throw()
> 
> probably busybox failures:
> 	ocaml-mysql: sed fails with out of memory
> 	hugs: cat: illegal option: s
> 	rcs: Could not find a sane line-by-line differences program (tried: gdiff rdiff diff)
> 	sdcc: /bin/sh: syntax error: unexpected redirection
> 	at least mysql5-client config uses getconf
> 
> accessing FILE internals:
> 	kermit: ckucmd.c:7395:48: debug(F101,"cmdconchk stdin->_cnt","",stdin->_cnt);
> 	icon: fpoll.c:75:9: if (f->_cnt > 0)
> 	emacs24: print.c:760:3: stderr = initial_stderr_stream;
> 	db46: checking for FILE... no  configure: error: No FILE type.

yay.

> 
> collision between libc header and linux header:
> 	libnet10: redefinition of struct ether_addr
> 	libnet11: linux/if.h: redefinition of struct ifmap
> 
> -Werror suicide:
> 	upx, mame, mess, tme, sfslite

configure --disable-werror should fix that if autoconf is used

> 
> other
> 	qt3-libs, ptlib: using signed int for socklen_t
> 	mysql5-client config tries to check 'getconf GNU_LIBPTHREAD_VERSION'
> 	many audio pkg: alsa/global.h redefines struct timespec if _POSIX_C_SOURCE is unset

patched in sabotage, my enquiry regarding this header was left 
unanswered. 
http://mailman.alsa-project.org/pipermail/alsa-devel/2013-July/064402.html
(however the "guilty" developer which i addressed didnt post anything to 
alsa-devel since. i guess it would make sense to forward this to takashi 
iwai who has been very cooperative in the past)
the other compatibility issues of alsa have been fixed, and 1.27.3 
should build out of the box.

> 	pulseaudio, esound: broken /dev/dsp emulation with LD_PRELOAD hack

LOL

> 	clang: DynamicLibrary.cpp has broken ifdef logic and stdin etc access

was reported upstream several times, but the developers apparently don't 
care. seems some social engineering in the #llvm chan @oftc is required 
to get that fixed.

> 	easytag, libpeas: NULL sentinel
> 	pth, jabberd: #error "Unsupported Linux (g)libc version and/or platform"
> 	binutils, mingw-binutils: empty character constant ''
> 	p5-GD: CORE/perl.h uses off64_t without gnu or lfs feature test
> 	dosbox: uses undefined typename in offsetof

works in sabotage

> 	valgrind: configure: error: Valgrind requires glibc version 2.2 - 2.16
> 	emacs20: configure: error: Emacs hasn't been ported to `x86_64-unknown-linux-gnu' systems.
> 	rrdtool: configure: error: I need a copy of *nroff to format the documentation
> 	afs, openafs: configure: error: Couldn't guess your Linux version.
> 	nvi: configure: error: No writeable preserve directory found.
> 	gtk-doc: configure: error: could not find DocBook XML DTD V4.3 in XML catalog
> 	boost/integer_traits.hpp: misses WCHAR_MIN and WCHAR_MAX because of ifdef hell

boost patches are availabe in sabotage

> 	cstore: static const int PAGE_SIZE=65000;

o_0

> 	zzuf: redefinition of open: int NEW(open64)(const char *file, int oflag, ...)
> 	libjit: #error "Don't know how to determine if floating point numbers are finite"
> 	tk: tkPanedWindow.o: file not recognized: File truncated
> 	ex: conflicing prototype: char *memalign(size_t alignment, size_t size);
> 	dia: configure: error: Can't find neither a definition of isinf nor ieeefp.h

should use isfinite()

> 	cc65, gnats, sandy: undefined siginfo_t because sys/wait.h is used with -std=c89
> 	scrollz: undefined curses symbols (tputs, tgetstr)
> 	gnuchess4, camediaplay, sc, sysmon: cannot find curses.h
> 	ocaml-zip, edb: cannot find zlib.h
> 	poco: cannot find sqlite3.h
> 	sdbm: cannot find ndbm.h
> 
> include fails:
> 	libbinio: EOF was not declared in this scope
> 	libmpdclient: unknown type name fd_set
> 	glib: poll undeclared here
> 	libspiff: printf was not declared in this scope
> 	libproxy: fd_set was not declared
> 	climm: unknown type name int8_t
> 	sirc: incompatible implicit declaration of built-in function strlen
> 	uisp: NULL was not declared in this scope
> 	xqilla: ptrdiff_t does not name a type
> 	gnome-keyring: unknown type name fd_set
> 	libhfs: unknown type name time_t
> 	libpgm: unknown type name ssize_t
> 	log4shib: int64_t does not name a type
> 	nsis: close was not declared in this scope
> 	pyfann: ptrdiff_t does not name a type
> 	rpc2: F_GETFL undeclared
> 	tvision: intptr_t has not been declared
> 	vanessa_logger: undefined CODE
> 	mg: unknown type name mode_t
> 	notecase: basename was not declared in this scope
> 	xemacs: NI_MAXHOST undeclared
> 	aranym: caddr_t was not declared in this scope
> 	gpsim-devel: puts was not declared in this scope
> 	pcemu: O_RDONLY undeclared
> 	vba: uint32_t does not name a type
> 	oto: incompatible implicit declaration of built-in function calloc

> 	cdparanoia: u_int32_t undeclared
> 	anope: unknown type name u_int32_t
> 	conserver: u_short undeclared
> 	gmp3info: uint undeclared
> 	libbegemot: unknown type name u_int
> 	aliados: ushort has not been declared

failure to include sys/types.h is something i often encounter. it seems 
some glibc header automatically pulls that one in.

> 


TL;DR: no single musl bug. if someone wants to help, feel free to 
forward this list to the respective package maintainers.


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.