* Latest pkgsrc results [What builds on musl 0.9.13?] @ 2013-11-07 0:34 Gregor Richards 2013-11-07 2:01 ` Szabolcs Nagy 2013-11-07 4:50 ` Kurt H Maier 0 siblings, 2 replies; 17+ messages in thread From: Gregor Richards @ 2013-11-07 0:34 UTC (permalink / raw) To: musl Here are the results from my latest build of NetBSD pkgsrc 2013Q2 on musl 0.9.13, with patches from http://bitbucket.org/GregorR/musl-pkgsrc-patches revision b44694ce2dd6. Attempted: 11270 Deps failed: 3248 Build tried: 8022 Build failed: 912 Tests failed: 1824 Success: 5286 (65.8938%) Breakdown: https://sites.google.com/a/codu.org/musl/pkgsrc-results/pkgsrc-results-2013Q2-b44694ce2dd6-musl-0.9.13-breakdown.txt?attredirects=0&d=1 or http://wiki.musl-libc.org/pkgsrc_results Archive: https://sites.google.com/a/codu.org/musl/pkgsrc-results/pkgsrc-results-2013Q2-b44694ce2dd6-musl-0.9.13.tar.gz?attredirects=0&d=1 Notes: In the breakdown, 'D' means dependencies, 'B' means build, 'T' means tests. Blank is success, 'X' is failure. If you have patches to make other packages build, please report them on the musl-pkgsrc-patches issue tracker: https://bitbucket.org/GregorR/musl-pkgsrc-patches/issues . As with all of my repositories, musl-pkgsrc-patches is also available via git, for people with masochistic VCS preferences: http://github.com/GregorR/musl-pkgsrc-patches . If you reply to this email, please reply-all. I am not subscribed to this mailing list, as it has no digest option. With valediction, - Gregor Richards ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 0:34 Latest pkgsrc results [What builds on musl 0.9.13?] Gregor Richards @ 2013-11-07 2:01 ` Szabolcs Nagy 2013-11-07 2:22 ` Gregor Richards 2013-11-07 4:50 ` Kurt H Maier 1 sibling, 1 reply; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-07 2:01 UTC (permalink / raw) To: Gregor Richards; +Cc: musl * Gregor Richards <gr@purdue.edu> [2013-11-06 19:34:47 -0500]: > Here are the results from my latest build of NetBSD pkgsrc 2013Q2 on > musl 0.9.13, with patches from > http://bitbucket.org/GregorR/musl-pkgsrc-patches revision > b44694ce2dd6. > > Attempted: 11270 > Deps failed: 3248 > Build tried: 8022 > Build failed: 912 > Tests failed: 1824 > Success: 5286 (65.8938%) it would be nice if you saved all the build logs of failed builds and published them as well i dont expect interesting findings: i assume most failures are bad includes, bad ifdefs or bad config but i'd like to see this theory verified > Breakdown: > https://sites.google.com/a/codu.org/musl/pkgsrc-results/pkgsrc-results-2013Q2-b44694ce2dd6-musl-0.9.13-breakdown.txt?attredirects=0&d=1 > or http://wiki.musl-libc.org/pkgsrc_results http://wiki.musl-libc.org/wiki/pkgsrc_results ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 2:01 ` Szabolcs Nagy @ 2013-11-07 2:22 ` Gregor Richards 2013-11-07 2:46 ` Szabolcs Nagy 0 siblings, 1 reply; 17+ messages in thread From: Gregor Richards @ 2013-11-07 2:22 UTC (permalink / raw) To: Szabolcs Nagy; +Cc: musl On 11/06/2013 09:01 PM, Szabolcs Nagy wrote: > * Gregor Richards <gr@purdue.edu> [2013-11-06 19:34:47 -0500]: >> Here are the results from my latest build of NetBSD pkgsrc 2013Q2 on >> musl 0.9.13, with patches from >> http://bitbucket.org/GregorR/musl-pkgsrc-patches revision >> b44694ce2dd6. >> >> Attempted: 11270 >> Deps failed: 3248 >> Build tried: 8022 >> Build failed: 912 >> Tests failed: 1824 >> Success: 5286 (65.8938%) > it would be nice if you saved all the build logs > of failed builds and published them as well > > i dont expect interesting findings: i assume most > failures are bad includes, bad ifdefs or bad config > > but i'd like to see this theory verified > >> Breakdown: >> https://sites.google.com/a/codu.org/musl/pkgsrc-results/pkgsrc-results-2013Q2-b44694ce2dd6-musl-0.9.13-breakdown.txt?attredirects=0&d=1 >> or http://wiki.musl-libc.org/pkgsrc_results > http://wiki.musl-libc.org/wiki/pkgsrc_results I do in fact save the build logs, but as a single log.txt. As it's multiple hundreds of megs, I historically wasn't bothering to put them anywhere. 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. With valediction, - Gregor Richards ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 2:22 ` Gregor Richards @ 2013-11-07 2:46 ` Szabolcs Nagy 2013-11-07 23:46 ` Szabolcs Nagy 0 siblings, 1 reply; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-07 2:46 UTC (permalink / raw) To: Gregor Richards; +Cc: musl * Gregor Richards <gr@purdue.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 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 2:46 ` Szabolcs Nagy @ 2013-11-07 23:46 ` Szabolcs Nagy 2013-11-08 10:48 ` John Spencer 2013-11-09 1:01 ` Rich Felker 0 siblings, 2 replies; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-07 23:46 UTC (permalink / raw) To: Gregor Richards; +Cc: musl * Szabolcs Nagy <nsz@port70.net> [2013-11-07 03:46:52 +0100]: > * Gregor Richards <gr@purdue.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: 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 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 GLOB_NOMAGIC, GLOB_BRACE asterisk18 canonicalize_file_name gtkwave union wait tcsh semtimedop sqlrelay sys_errlist dmake sys_siglist xemacs herror opencm mallinfo libfirm TIMESPEC_TO_TIMEVAL libusbx POSIX_SPAWN_USEVFORK ruby-posix-spawn ruserok u9fs struct ip_mreq_source mad-flute struct flock64 qemu F_EXLCK qemu 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 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 top missing headers: sys/timeb.h unalz, audacity, gplcver, ng-spice, gammu, hdf5, libpgm, mico, dasher,.. sys/cdefs.h asterisk*, xulrunner* (jemalloc), libmilter, sendmail, dhcpcd,.. termio.h blackened, gnatpython, pardiff, emacs*-nox11, ski, bastet, craft, top,.. rpc/types.h rpc/rpc.h hdf, glusterfs, mrstat, lsof, snort, portmap, sharity-light, net-snmp, unfs3, ywho, PAM,.. sys/queue.h libstree, openrcs, miniupnpd, mtftpd, pim6dd, transmission,.. sgtty.h kermit, mg2a, ve, 7plus, xjdic execinfo.h redis, virtuoso, powerdns, packagekit, qt4-creator sys/bitypes.h libbind, libdnsres sys/unistd.h mlview, foobillard, galaxa, slurm sys/endian.h swarm machine/endian.h estic, opendis net/ppp_defs.h poptop, slurm, xfce4-netload-plugin a.out.h bcc, ntp4 asm/page.h clisp, s10sh, same sys/debugreg.h gdb6 sys/dirent.h heirloom-libcommon 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 net/if_packet.h isc-dhcp4 netinet/igmp.h ngrep re_comp.h rdist6 fstab.h samba35 error.h vpnc fts.h slocate 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. 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 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 pulseaudio, esound: broken /dev/dsp emulation with LD_PRELOAD hack clang: DynamicLibrary.cpp has broken ifdef logic and stdin etc access 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 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 cstore: static const int PAGE_SIZE=65000; 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 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 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 23:46 ` Szabolcs Nagy @ 2013-11-08 10:48 ` John Spencer 2013-11-09 1:01 ` Rich Felker 1 sibling, 0 replies; 17+ messages in thread From: John Spencer @ 2013-11-08 10:48 UTC (permalink / raw) To: musl; +Cc: Gregor Richards Szabolcs Nagy wrote: > * Szabolcs Nagy <nsz@port70.net> [2013-11-07 03:46:52 +0100]: >> * Gregor Richards <gr@purdue.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. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 23:46 ` Szabolcs Nagy 2013-11-08 10:48 ` John Spencer @ 2013-11-09 1:01 ` Rich Felker 2013-11-09 4:02 ` Szabolcs Nagy 1 sibling, 1 reply; 17+ messages in thread From: Rich Felker @ 2013-11-09 1:01 UTC (permalink / raw) To: musl; +Cc: Gregor Richards On Fri, Nov 08, 2013 at 12:46:31AM +0100, Szabolcs Nagy wrote: > * Szabolcs Nagy <nsz@port70.net> [2013-11-07 03:46:52 +0100]: > > * Gregor Richards <gr@purdue.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! Do you have any recommended actions on any of them (aside from fixing applications)? > top missing symbols (compile or link time): > > libintl_* > postgres*-client, libmusicbrainz5, weechat-curses, scmxx, scmgit-base,.. Which symbols? glibc doesn't seem to have any symbols matching libintl_*. > getloadavg > pbzip2, tokyotyrant, distccmon-gnome This would probably be trivial to add. > NO_ADDRESS > apache22, bglibs, cvsps, vanessa_logger, net6 This I would rather not add, since we don't support it, and providing the macro but never returning it could be misleading. > res_mkquery, res_send > hesiod, openldap-server, queryperf, traceroute-nanog, avenger, mtr These were on the low-priority agenda for stuff leading up to 1.0, but got pushed back because I want to focus on fixing bugs and such. > optreset > dar, freetds > (several configure checks found it incorrectly, but then it was not used) Hm? I think we have optreset... > strtoq > tdb, ia64sim I'd considered adding the alias, but if only 2 programs were found using it, I think we should just get them fixed. No need to support legacy crap for 2 obscure programs. > GLOB_NOMAGIC, GLOB_BRACE > asterisk18 These can't be defined without actually supporting the functionality, which is heavyweight/ugly. > semtimedop > sqlrelay This is a Linux-specific sysvsem operation we're missing, right? If so I think the syscall wrapper should be added. > sys_errlist > dmake > sys_siglist > xemacs These are both harmful and definitely should not be supported. (They introduce copy relocations which encode the SIZE of these lists as part of the application's ABI.) However, I'm not clear that sys_siglist is covered by strsignal; I think it may be SIG___ names rather than the descriptive strings. > herror > opencm No idea what this even is. > mallinfo > libfirm Deprecated API but we could provide a dummy anyway. > TIMESPEC_TO_TIMEVAL > libusbx Perhaps worth adding? > POSIX_SPAWN_USEVFORK > ruby-posix-spawn Should be fixed in ruby with #ifdef around the usage. This is not useful with musl. In principle we could just provide the flag as a no-op, but it's a really bad API design (exposing the implementation-detail rather than the semantics as the flag name) and since it doesn't affect ABI, I'd rather get apps which are using it fixed at the source level rather than adding a no-op flag. > ruserok > u9fs .....wow. Can't believe anything is still using the rhosts APIs... > struct ip_mreq_source > mad-flute There's an unresolved thread about adding these somewhere, possibly with a patch. > F_EXLCK > qemu Need more info on what it's about. Maybe something we should add. > c_ispeed, c_ospeed (struct termios members) > icdprog If c_* is reserved we could possibly add these. > d_namlen (struct dirent member) > icb This seems to be a BSD-ism, not present on glibc either, and there's no way to add it. > st_ctimensec (struct stat member) > libuv st_ctim.tv_nsec > setpgrp (apparently sysv and bsd prototype differ) > unrealircd Yes, this is a BSD-ism and just needs to be fixed in the application. musl's conforms to the POSIX requirements. > libiconv_* > odt2txt, ted Specific symbols ?? > KIOCSOUND, TIOCCDTR, TIOCSDTR, TIOCGSIZE (ioctl) > minicom, modemd, beav These should almost surely be added somewhere... > __STRING, __P, __BEGIN_DECLS (cdefs.h) > libmp4v2, ctrlproxy, irssi-xmpp, fortran-utils, cook Apps should be fixed. > 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 Ditto. > top missing headers: > > sys/timeb.h > unalz, audacity, gplcver, ng-spice, gammu, hdf5, libpgm, mico, dasher,.. This has been added in git (it was mandatory in POSIX-2001). > sys/cdefs.h > asterisk*, xulrunner* (jemalloc), libmilter, sendmail, dhcpcd,.. This has been an ongoing issue, but my leaning is still to omit it. If somebody really wants it, it can be installed as a third-party header; it has no libc dependencies. However, the apps should really just be fixed. > termio.h > blackened, gnatpython, pardiff, emacs*-nox11, ski, bastet, craft, top,.. We could consider this for addition, but I'd rather get apps fixed. > rpc/types.h rpc/rpc.h > hdf, glusterfs, mrstat, lsof, snort, portmap, sharity-light, net-snmp, unfs3, ywho, PAM,.. Non-libc. > sys/queue.h > libstree, openrcs, miniupnpd, mtftpd, pim6dd, transmission,.. This can also be treated as a third-party library to be installed if desired. > sgtty.h > kermit, mg2a, ve, 7plus, xjdic glibc has the header, but the functions are hard to find any Linux documentation for; they seem to be "unimplemented" syscalls. So this is probably a BSD-ism. > execinfo.h > redis, virtuoso, powerdns, packagekit, qt4-creator Backtrace stuff, right? > sys/bitypes.h > libbind, libdnsres We could add this as an alias for sys/types.h with a #warning, if desired. I'm fairly indifferent. > sys/unistd.h > mlview, foobillard, galaxa, slurm Ditto. > sys/endian.h > swarm This could probably be added even without a #warning since it's nonstandard and sys/endian.h is just as "valid" as endian.h, but I'm not clear whether it's worth it for ONE obscure program that could just be fixed. > machine/endian.h > estic, opendis Making a new dir is probably not worth it either. > net/ppp_defs.h > poptop, slurm, xfce4-netload-plugin Don't know enough to comment. > a.out.h > bcc, ntp4 Probably does not make sense; musl does not (out of the box, anyway) support a.out binaries. > asm/page.h > clisp, s10sh, same Isn't this a kernel header? > sys/debugreg.h > gdb6 Hmm, looks like another case of gdb internals in libc (or vice versa)... > sys/dirent.h > heirloom-libcommon Possibly another #warning redirect? > obstack.h > p5-Proc-ProcessTable musl does not provide GNU obstack functions, but _might_ in the future if it's deemed useful for ABI-compat. > gnu/lib-names.h > ruby-ffi I don't think this one makes sense at all to have in musl. > fpu_control.h > jamvm Looks like an ugly non-abstracted legacy version of fenv.h. > xlocale.h > liblive Since these interfaces were declared in xlocale.h before being standardized in POSIX 2008, it might make sense to provide the header; however, the fact that only one program was found to be needing it makes me doubt the usefulness. > net/if_ether.h > cia Is this a duplicate of the one in netinet or something different? > net/if_packet.h > isc-dhcp4 And netpacket/packet.h? > netinet/igmp.h > ngrep Perhaps should be added. > re_comp.h > rdist6 I think this is part of the GNU regex API, not supported by musl. > fstab.h > samba35 Yet another hideous non-threadsafe, non-library-safe *ent API. As long as there's only one program using it my feeling is to omit it. > error.h > vpnc Wow, only one? There's been a fair amount of demand for error.h so I might add this one sometime... > fts.h > slocate fts.h is fundamentally broken on glibc (it #errors with 64bit off_t) and thus any program using it is broken. There is a non-broken version in gnulib or BSD which program should copy into their source trees and use if they need it. So there's no reason for musl to provide it; we couldn't match the glibc ABI anyway since the glibc ABI is wrong (32-bit). > sys/perm.h > xosview Seems redundant with sys/io.h? > 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() Was gcc built aginst musl? Assuming so, it's _possible_ that some of these are musl bugs, though gcc sounds more likely. > 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) rcs probably wants non-unified diff; I think busybox only provides unified. > sdcc: /bin/sh: syntax error: unexpected redirection Bashism? > at least mysql5-client config uses getconf Hm? We should probably provide a getconf that works with musl somewhere... > 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. The last one is a C99 conformance issue, but I'm not sure we want to change it since C11 dropped the requirement. > collision between libc header and linux header: > libnet10: redefinition of struct ether_addr > libnet11: linux/if.h: redefinition of struct ifmap No really good solution to these. > -Werror suicide: > upx, mame, mess, tme, sfslite If the warnings were musl-specific, they might be issues we should "fix" though. > other > qt3-libs, ptlib: using signed int for socklen_t glibc also has unsigned socklen_t, so I'm confused how they work with glibc but not musl... > 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 This is stupid and should just be fixed in alsa. timespec is likely to be defined (e.g. by default) without _POSIX_C_SOURCE being defined, and in C11 it's even required to be defined. > pulseaudio, esound: broken /dev/dsp emulation with LD_PRELOAD hack > clang: DynamicLibrary.cpp has broken ifdef logic and stdin etc access > easytag, libpeas: NULL sentinel BTW, I think we may need to re-think the NULL issue. POSIX seems to require it to have pointer type... > pth, jabberd: #error "Unsupported Linux (g)libc version and/or platform" Hahah. Well in the case of pth this is probably the best it can do. pth is exactly the opposite of portable. Thankfully it's deprecated and somebody's working on a drop-in replacement built on top of POSIX threads for the few programs that actually need it. > binutils, mingw-binutils: empty character constant '' Cause? musl-specific? > p5-GD: CORE/perl.h uses off64_t without gnu or lfs feature test App bug. > dosbox: uses undefined typename in offsetof A type musl is missing? > valgrind: configure: error: Valgrind requires glibc version 2.2 - 2.16 To be fair, valgrind might depend enough on glibc internals to make this kind of specificity necessary. We should work with the valgrind team to get musl support fixed, ideally without anything invasive on the musl side. > emacs20: configure: error: Emacs hasn't been ported to `x86_64-unknown-linux-gnu' systems. Haha. emacs20 still? Really? That's way too old to be useful; it doesn't even support UTF-8. emacs23 is the first version to care about. > 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 Most of these look non-musl-specific. > boost/integer_traits.hpp: misses WCHAR_MIN and WCHAR_MAX because of ifdef hell Oh? Is this their fault or something weird we're doing? > cstore: static const int PAGE_SIZE=65000; Namespace violation. > zzuf: redefinition of open: int NEW(open64)(const char *file, int oflag, ...) I guess it's defining _GNU_SOURCE or the whole pkgsrc run is. open64 should not be defined by default in musl. > libjit: #error "Don't know how to determine if floating point numbers are finite" Is it doing stupid #ifdefs based on glibc version, or failing for some semi-readonable reason? > tk: tkPanedWindow.o: file not recognized: File truncated Weird... > ex: conflicing prototype: char *memalign(size_t alignment, size_t size); App bug. > dia: configure: error: Can't find neither a definition of isinf nor ieeefp.h Um, math.h? > cc65, gnats, sandy: undefined siginfo_t because sys/wait.h is used with -std=c89 This is something we need to fix. I'm thinking sys/wait.h should just omit the stuff that needs siginfo_t if the right features are not enabled. (Really, omitting the whole file would be valid, but I suspect this would break programs worse.) > scrollz: undefined curses symbols (tputs, tgetstr) > gnuchess4, camediaplay, sc, sysmon: cannot find curses.h Improper or failed ncurses installation? > ocaml-zip, edb: cannot find zlib.h > poco: cannot find sqlite3.h Unrelated to musl. > sdbm: cannot find ndbm.h Presence or absence of ndbm in libc varies (it's supposedly required as part of XSI, IIRC) but I think we should leave it as a third-party thing. The API is so broken as to be utterly useless. > include fails: > libbinio: EOF was not declared in this scope Assumption that some random header includes stdio.h, maybe? > libmpdclient: unknown type name fd_set Probably the same, but for sys/select.h and sys/time.h. > glib: poll undeclared here I never hit this one before; wonder why it's happening? > libspiff: printf was not declared in this scope > libproxy: fd_set was not declared Probably same as above. > 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 Pretty much all of these look like the same basic issue: invalid assumptions that one header includes another. This means they could probably easily be fixed upstream if somebody's willing to do the analysis to determine where the invalid assumptions are. Since these should all be non-controversial fixes, I think this would be a great "patch flood" project to precede or go along with the upcoming 1.0 release, as discussed in the publicity plan thread. Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 1:01 ` Rich Felker @ 2013-11-09 4:02 ` Szabolcs Nagy 2013-11-09 5:20 ` Rich Felker 0 siblings, 1 reply; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-09 4:02 UTC (permalink / raw) To: musl; +Cc: Gregor Richards * Rich Felker <dalias@aerifal.cx> [2013-11-08 20:01:30 -0500]: > > top missing symbols (compile or link time): > > > > libintl_* > > postgres*-client, libmusicbrainz5, weechat-curses, scmxx, scmgit-base,.. > > Which symbols? glibc doesn't seem to have any symbols matching > libintl_*. these are the gettext symbols (libintl_dgettext etc) for some reason they are without prefix in the libc but you can get them with prefix as well with -lintl i assume this is some configure or pkgsrc failure to set up the link flags or the include paths (i assume there is a libintl.h that adds the prefix with macro hackery and one that doesnt and they are used inconsistently with the link flags) btw the symbol failures were based on about 40% of the pkgsrc logs but the header errors are 100% covered (minus mistakes during my manual aggregation of the results) > > getloadavg > > pbzip2, tokyotyrant, distccmon-gnome > > This would probably be trivial to add. return -1? we can add it i guess but these packages could use configure checks (i think they are autoconfed) > > NO_ADDRESS > > apache22, bglibs, cvsps, vanessa_logger, net6 > > This I would rather not add, since we don't support it, and providing > the macro but never returning it could be misleading. actually NO_ADDRESS is an alias for NO_DATA in glibc and the bsds (for almost 20years now), but it's not critical > > optreset > > dar, freetds > > (several configure checks found it incorrectly, but then it was not used) > > Hm? I think we have optreset... oops, my bad some packages didnt find optreset in configure while others did i guess the ones which failed tried unistd.h instead of getopt.h > > semtimedop > > sqlrelay > > This is a Linux-specific sysvsem operation we're missing, right? If so > I think the syscall wrapper should be added. yes IPCOP_semtimedop is 4 for SYS_ipc archs and the other archs have SYS_semtimedop > > herror > > opencm > > No idea what this even is. "The (obsolete) herror() function prints the error message associated with the current value of h_errno on stderr." ie for printing errors of gethostbyname() and gethostbyaddr() > > mallinfo > > libfirm > > Deprecated API but we could provide a dummy anyway. it's so ugly with the signed int counters, i wouldnt support if it's not widely used i think libfirm can be fixed: it can either do the accounting itself or has no business providing process-wide heap info statistics (it is only used for a public diagnostic api) > > TIMESPEC_TO_TIMEVAL > > libusbx > > Perhaps worth adding? TIMEVAL_TO_TIMESPEC TIMESPEC_TO_TIMEVAL are bsd visible in freebsd, default visible in openbsd and gnu visible in glibc in sys/time.h can be added but only one pkg used it from 10k.. > > struct ip_mreq_source > > mad-flute > > There's an unresolved thread about adding these somewhere, possibly > with a patch. > > > F_EXLCK > > qemu > > Need more info on what it's about. Maybe something we should add. > > > c_ispeed, c_ospeed (struct termios members) > > icdprog > > If c_* is reserved we could possibly add these. c_* is reserved > > libiconv_* > > odt2txt, ted > > Specific symbols ?? i've seen some iconv failures but these are probably not libc issues (similar to the libintl_* case) i guess this is just missing -liconv gcc -o odt2txt -L/usr/lib -Wl,-R/usr/lib odt2txt.o regex.o mem.o strbuf.o kunzip/fileio.o kunzip/zipfile.o -lz odt2txt.o: In function `main': odt2txt.c:(.text.startup+0x25f): undefined reference to `libiconv_open' odt2txt.c:(.text.startup+0x370): undefined reference to `libiconv' odt2txt.c:(.text.startup+0x4eb): undefined reference to `libiconv_close' odt2txt.c:(.text.startup+0x7e3): undefined reference to `libiconv_open' odt2txt.c:(.text.startup+0x8ad): undefined reference to `libiconv' odt2txt.c:(.text.startup+0x95a): undefined reference to `libiconvlist' collect2: error: ld returned 1 exit status and there is hex-a-hop: ... configure: WARNING: unrecognized options: --with-libiconv-prefix, --with-libintl-prefix ... text.cpp:447:77: error: invalid conversion from const char** to char** [-fpermissive] iconv(cd, (const char **)&in_buf, &text_length, &out_buf, &text_utf8_length); ^ In file included from /usr/include/SDL/SDL_stdinc.h:74:0, from /usr/include/SDL/SDL_main.h:26, from /usr/include/SDL/SDL.h:30, from video.h:4, from text.cpp:8: /var/pkgsrc/games/hex-a-hop/work/.buildlink/include/iconv.h:81:15: error: initializing argument 2 of size_t libiconv(libiconv_t, char**, size_t*, char**, size_t*) [-fpermissive] #define iconv libiconv ^ /var/pkgsrc/games/hex-a-hop/work/.buildlink/include/iconv.h:83:15: note: in expansion of macro iconv extern size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); gnuplot misses -liconv as well: ... /usr/lib/gcc/x86_64-linux-musl/4.8.1/../../../../x86_64-linux-musl/bin/ld: set.o: undefined reference to symbol 'libiconv_open' /usr/lib/gcc/x86_64-linux-musl/4.8.1/../../../../x86_64-linux-musl/bin/ld: note: 'libiconv_open' is defined in DSO /usr/lib/libiconv.so.2 so try adding it to the linker command line /usr/lib/libiconv.so.2: could not read symbols: Invalid operation > > KIOCSOUND, TIOCCDTR, TIOCSDTR, TIOCGSIZE (ioctl) > > minicom, modemd, beav > > These should almost surely be added somewhere... there are some other ioctl failures but there might be some bsd only things in pkgsrc > > execinfo.h > > redis, virtuoso, powerdns, packagekit, qt4-creator > > Backtrace stuff, right? yes now i see that redis also uses jemalloc which uses ffsl "warning: implicit declaration of function ffsl" that's another missing symbol > > sys/bitypes.h > > libbind, libdnsres > > We could add this as an alias for sys/types.h with a #warning, if > desired. I'm fairly indifferent. it is only used by bind (i guess dnsres does the same) i wouldnt be surprised if that had other incurable brokenness but alias with warning is fine > > sys/unistd.h > > mlview, foobillard, galaxa, slurm > > Ditto. it seems this is a subset of unistd.h on the bsds with just macro definitions on glibc it is an alias to unistd.h > > sys/endian.h > > swarm > > This could probably be added even without a #warning since it's > nonstandard and sys/endian.h is just as "valid" as endian.h, but I'm > not clear whether it's worth it for ONE obscure program that could > just be fixed. yes > > net/ppp_defs.h > > poptop, slurm, xfce4-netload-plugin > > Don't know enough to comment. glibc includes linux/ppp_defs.h (plus defines some libc types) > > asm/page.h > > clisp, s10sh, same > > Isn't this a kernel header? ah yes > > sys/dirent.h > > heirloom-libcommon > > Possibly another #warning redirect? can be, bsds have it (a subset of dirent.h) but glibc does not have it as far as i can tell so heirloom should be more clever about it (i guess it has some broken ifdef around it) > > xlocale.h > > liblive > > Since these interfaces were declared in xlocale.h before being > standardized in POSIX 2008, it might make sense to provide the header; > however, the fact that only one program was found to be needing it > makes me doubt the usefulness. note that vlc and some other media packages depend on liblive, so ppl might want it glibc only defines __local_t (and local_t) types there > > net/if_ether.h > > cia > > Is this a duplicate of the one in netinet or something different? as far as i can see it's like netinet/if_ether.h on glibc but glibc, freebsd, openbsd dont have it (i can only see it in netbsd) however netinet/if_ether.h includes net/ethernet.h on glibc, but it's the other way around in musl (and on glibc both headers include linux/if_ether.h) that's probably a bug > > net/if_packet.h > > isc-dhcp4 > > And netpacket/packet.h? > > > netinet/igmp.h > > ngrep > > Perhaps should be added. yes i think so (one of those old bsd headers that glibc provides in netinet) > > fstab.h > > samba35 > > Yet another hideous non-threadsafe, non-library-safe *ent API. As long > as there's only one program using it my feeling is to omit it. samba is probably an important one so it should be fixed upstream if not yet done > > error.h > > vpnc > > Wow, only one? There's been a fair amount of demand for error.h so I > might add this one sometime... > > > sys/perm.h > > xosview > > Seems redundant with sys/io.h? yes, we could add an alias (although on glibc sys/io.h has a bit more stuff) > > 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() > > Was gcc built aginst musl? Assuming so, it's _possible_ that some of > these are musl bugs, though gcc sounds more likely. the mm_malloc.h thing is ugly, i'm not sure who else uses that header, but the incompatible prototype might bite others (i still dont quite understand why extern "C" api needs throw() in glibc) > > at least mysql5-client config uses getconf > > Hm? We should probably provide a getconf that works with musl > somewhere... maybe landley could do one for toybox.. :) > > -Werror suicide: > > upx, mame, mess, tme, sfslite > > If the warnings were musl-specific, they might be issues we should > "fix" though. no, these were things that would fail with glibc as well (stricter pointer aliasing and unused warnings by gcc 4.8.1) > > other > > qt3-libs, ptlib: using signed int for socklen_t > > glibc also has unsigned socklen_t, so I'm confused how they work with > glibc but not musl... yes, this is a mystery, actually the warning is shown for many packages but most of them dont use Werror for it maybe it's a recent gcc warning (passing int* instead of socklen_t* aka unsigned* to interfaces like accept) (and qt3-libs has quite a lot of dependencies, i think it is the most wanted failing package on pkgsrc now) > > pulseaudio, esound: broken /dev/dsp emulation with LD_PRELOAD hack > > clang: DynamicLibrary.cpp has broken ifdef logic and stdin etc access > > easytag, libpeas: NULL sentinel > > BTW, I think we may need to re-think the NULL issue. POSIX seems to > require it to have pointer type... yes > > binutils, mingw-binutils: empty character constant '' > > Cause? musl-specific? from the pkgsrc logs my guess is a $ got eaten by some tool (maybe busybox?) binutils builds here just fine (but i build it without bfd) earm_epoc_pe.c: In function 'gld_arm_epoc_pe_place_orphan': earm_epoc_pe.c:1512:37: error: empty character constant && (dollar = strchr (secname, '')) != NULL) ^ earm_epoc_pe.c:1646:25: error: empty character constant if (strchr (lname, '') == NULL) ^ > > dosbox: uses undefined typename in offsetof > > A type musl is missing? rechecked and it is missing offsetof (so it probably fails to include stddef.h) > > boost/integer_traits.hpp: misses WCHAR_MIN and WCHAR_MAX because of ifdef hell > > Oh? Is this their fault or something weird we're doing? their fault, ugly ifdef hell instead of just including wchar.h to work around broken platforms http://boost.cvs.sourceforge.net/viewvc/boost/boost/boost/integer_traits.hpp?view=markup > > libjit: #error "Don't know how to determine if floating point numbers are finite" > > Is it doing stupid #ifdefs based on glibc version, or failing for some > semi-readonable reason? dont know, the log only has this message > > tk: tkPanedWindow.o: file not recognized: File truncated > > Weird... yes the log has no context for it and tk is a wanted package on pkgsrc > > cc65, gnats, sandy: undefined siginfo_t because sys/wait.h is used with -std=c89 > > This is something we need to fix. I'm thinking sys/wait.h should just > omit the stuff that needs siginfo_t if the right features are not > enabled. (Really, omitting the whole file would be valid, but I > suspect this would break programs worse.) > makes sense > > sdbm: cannot find ndbm.h > > Presence or absence of ndbm in libc varies (it's supposedly required > as part of XSI, IIRC) but I think we should leave it as a third-party > thing. The API is so broken as to be utterly useless. > > > include fails: > > libbinio: EOF was not declared in this scope > > Assumption that some random header includes stdio.h, maybe? > > > libmpdclient: unknown type name fd_set > > Probably the same, but for sys/select.h and sys/time.h. failing to include sys/select.h is fairly common bug > > glib: poll undeclared here > > I never hit this one before; wonder why it's happening? this is glib-1.2 ... > Pretty much all of these look like the same basic issue: invalid > assumptions that one header includes another. This means they could > probably easily be fixed upstream if somebody's willing to do the > analysis to determine where the invalid assumptions are. Since these > should all be non-controversial fixes, I think this would be a great > "patch flood" project to precede or go along with the upcoming 1.0 > release, as discussed in the publicity plan thread. yes ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 4:02 ` Szabolcs Nagy @ 2013-11-09 5:20 ` Rich Felker 2013-11-09 16:16 ` Szabolcs Nagy 2013-11-28 3:23 ` Rob Landley 0 siblings, 2 replies; 17+ messages in thread From: Rich Felker @ 2013-11-09 5:20 UTC (permalink / raw) To: musl On Sat, Nov 09, 2013 at 05:02:52AM +0100, Szabolcs Nagy wrote: > * Rich Felker <dalias@aerifal.cx> [2013-11-08 20:01:30 -0500]: > > > top missing symbols (compile or link time): > > > > > > libintl_* > > > postgres*-client, libmusicbrainz5, weechat-curses, scmxx, scmgit-base,.. > > > > Which symbols? glibc doesn't seem to have any symbols matching > > libintl_*. > > these are the gettext symbols (libintl_dgettext etc) > for some reason they are without prefix in the libc > but you can get them with prefix as well with -lintl Yes, Gregor said on IRC that it's something like this... > > > getloadavg > > > pbzip2, tokyotyrant, distccmon-gnome > > > > This would probably be trivial to add. > > return -1? > > we can add it i guess but these packages could > use configure checks (i think they are autoconfed) Indeed. Not sure if it's useful; just reading from /proc is just as good. > > > NO_ADDRESS > > > apache22, bglibs, cvsps, vanessa_logger, net6 > > > > This I would rather not add, since we don't support it, and providing > > the macro but never returning it could be misleading. > > actually NO_ADDRESS is an alias for NO_DATA in glibc and the bsds > (for almost 20years now), but it's not critical In that case it's probably not harmful to add. I was worried about switch statements, but if they don't break on glibc/BSD, we should be fine. This one really could go either way, but if the apps can be convinced to fix it on their end, that would be nice. > > > optreset > > > dar, freetds > > > (several configure checks found it incorrectly, but then it was not used) > > > > Hm? I think we have optreset... > > oops, my bad > > some packages didnt find optreset in configure while others did > > i guess the ones which failed tried unistd.h instead of getopt.h So it sounds like this is an invalid configure check (looking for just the symbol rather than symbol+declaration)... > > > semtimedop > > > sqlrelay > > > > This is a Linux-specific sysvsem operation we're missing, right? If so > > I think the syscall wrapper should be added. > > yes > > IPCOP_semtimedop is 4 for SYS_ipc archs > and the other archs have SYS_semtimedop Thanks. Added. > > > herror > > > opencm > > > > No idea what this even is. > > "The (obsolete) herror() function prints the error message > associated with the current value of h_errno on stderr." > > ie for printing errors of gethostbyname() and gethostbyaddr() Ugly, especially since there seems to be no way to get these strings without printing them to stderr... > > > mallinfo > > > libfirm > > > > Deprecated API but we could provide a dummy anyway. > > it's so ugly with the signed int counters, i wouldnt > support if it's not widely used > > i think libfirm can be fixed: it can either do the accounting > itself or has no business providing process-wide heap info > statistics (it is only used for a public diagnostic api) I thought I remembered other programs using mallinfo too, but maybe I'm mistaken... The main reason I'd want to provide a dummy is if there are glibc binaries using it. The range of the counters is fairly irrelevant; keeping track of the information is prohibitively slow anyway since it would have to be synchronized between threads on each call to malloc/free. (glibc does some poor hack keeping this info per-arena and summarizing it when mallinfo is called, I think...) > > > TIMESPEC_TO_TIMEVAL > > > libusbx > > > > Perhaps worth adding? > > TIMEVAL_TO_TIMESPEC > TIMESPEC_TO_TIMEVAL > > are bsd visible in freebsd, default visible in openbsd > and gnu visible in glibc in sys/time.h > > can be added but only one pkg used it from 10k.. Agreed, it's low priority and we should see if we can just get this fixed upstream. > > > c_ispeed, c_ospeed (struct termios members) > > > icdprog > > > > If c_* is reserved we could possibly add these. > > c_* is reserved I'm a bit hesitant to do anything now for fear of breaking more stuff, but perhaps just #define __c_[io]speed c_[io]speed would be okay... > > > libiconv_* > > > odt2txt, ted > > > > Specific symbols ?? > > i've seen some iconv failures but these are probably not libc issues > (similar to the libintl_* case) > > i guess this is just missing -liconv There should never be a libiconv except on systems that lack iconv in libc... Maybe this is more mess created by pkgsrc though. > gcc -o odt2txt -L/usr/lib -Wl,-R/usr/lib odt2txt.o regex.o mem.o strbuf.o kunzip/fileio.o kunzip/zipfile.o -lz > odt2txt.o: In function `main': > odt2txt.c:(.text.startup+0x25f): undefined reference to `libiconv_open' > odt2txt.c:(.text.startup+0x370): undefined reference to `libiconv' > odt2txt.c:(.text.startup+0x4eb): undefined reference to `libiconv_close' > odt2txt.c:(.text.startup+0x7e3): undefined reference to `libiconv_open' > odt2txt.c:(.text.startup+0x8ad): undefined reference to `libiconv' > odt2txt.c:(.text.startup+0x95a): undefined reference to `libiconvlist' > collect2: error: ld returned 1 exit status > > and there is hex-a-hop: > .... > configure: WARNING: unrecognized options: --with-libiconv-prefix, --with-libintl-prefix Maybe these options are being passed to lots of (or all) packages in pkgsrc? > .... > text.cpp:447:77: error: invalid conversion from const char** to char** [-fpermissive] > iconv(cd, (const char **)&in_buf, &text_length, &out_buf, &text_utf8_length); > ^ Odd that this works anywhere if the type is wrong... Maybe it's gcc 4.8 being more strict than previous versions? > In file included from /usr/include/SDL/SDL_stdinc.h:74:0, > from /usr/include/SDL/SDL_main.h:26, > from /usr/include/SDL/SDL.h:30, > from video.h:4, > from text.cpp:8: > /var/pkgsrc/games/hex-a-hop/work/.buildlink/include/iconv.h:81:15: error: initializing argument 2 of size_t libiconv(libiconv_t, char**, size_t*, char**, size_t*) [-fpermissive] > #define iconv libiconv > ^ > /var/pkgsrc/games/hex-a-hop/work/.buildlink/include/iconv.h:83:15: note: in expansion of macro iconv > extern size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); > > gnuplot misses -liconv as well: Well, rather it's wrongly trying to use libiconv. My guess is that pkgsrc is setup for a situation where iconv is not available in libc and you need libiconv. So the configure mess to prefix libiconv_ to symbols gets set, but then configure detects iconv in libc and thus doesn't add -liconv. Then they end up with missing symbols at link time. > .... > /usr/lib/gcc/x86_64-linux-musl/4.8.1/../../../../x86_64-linux-musl/bin/ld: set.o: undefined reference to symbol 'libiconv_open' > /usr/lib/gcc/x86_64-linux-musl/4.8.1/../../../../x86_64-linux-musl/bin/ld: note: 'libiconv_open' is defined in DSO /usr/lib/libiconv.so.2 so try adding it to the linker command line > /usr/lib/libiconv.so.2: could not read symbols: Invalid operation > > > > KIOCSOUND, TIOCCDTR, TIOCSDTR, TIOCGSIZE (ioctl) > > > minicom, modemd, beav > > > > These should almost surely be added somewhere... > > there are some other ioctl failures > but there might be some bsd only things in pkgsrc Ah, maybe so... > > > > execinfo.h > > > redis, virtuoso, powerdns, packagekit, qt4-creator > > > > Backtrace stuff, right? > > yes > > now i see that redis also uses jemalloc which uses ffsl > "warning: implicit declaration of function ffsl" > that's another missing symbol Probably worth adding. > > > sys/bitypes.h > > > libbind, libdnsres > > > > We could add this as an alias for sys/types.h with a #warning, if > > desired. I'm fairly indifferent. > > it is only used by bind (i guess dnsres does the same) > i wouldnt be surprised if that had other incurable brokenness > but alias with warning is fine > > > > sys/unistd.h > > > mlview, foobillard, galaxa, slurm > > > > Ditto. > > it seems this is a subset of unistd.h on the bsds > with just macro definitions on glibc it is an alias > to unistd.h Bleh. > > > sys/endian.h > > > swarm > > > > This could probably be added even without a #warning since it's > > nonstandard and sys/endian.h is just as "valid" as endian.h, but I'm > > not clear whether it's worth it for ONE obscure program that could > > just be fixed. > > yes > > > > net/ppp_defs.h > > > poptop, slurm, xfce4-netload-plugin > > > > Don't know enough to comment. > > glibc includes linux/ppp_defs.h (plus defines some libc types) I don't have any fundamental objection to having nonstandard headers like this whose applicability is limited to specialized programs rely on linux kernel headers (we already have soundcard.h or something), but it might be better to move them ALL out of musl and into a separate header package at some point... > > > sys/dirent.h > > > heirloom-libcommon > > > > Possibly another #warning redirect? > > can be, bsds have it (a subset of dirent.h) > but glibc does not have it as far as i can tell > so heirloom should be more clever about it > (i guess it has some broken ifdef around it) Perhaps __GLIBC__ :-) > > > xlocale.h > > > liblive > > > > Since these interfaces were declared in xlocale.h before being > > standardized in POSIX 2008, it might make sense to provide the header; > > however, the fact that only one program was found to be needing it > > makes me doubt the usefulness. > > note that vlc and some other media packages > depend on liblive, so ppl might want it > > glibc only defines __local_t (and local_t) > types there Hmm, so this header doesn't do anything useful... In that case we should probably just see if liblive can be fixed. > > > net/if_ether.h > > > cia > > > > Is this a duplicate of the one in netinet or something different? > > as far as i can see it's like netinet/if_ether.h on glibc > but glibc, freebsd, openbsd dont have it (i can only see > it in netbsd) > > however netinet/if_ether.h includes net/ethernet.h on > glibc, but it's the other way around in musl > (and on glibc both headers include linux/if_ether.h) > > that's probably a bug In musl or in glibc? :) > > > fstab.h > > > samba35 > > > > Yet another hideous non-threadsafe, non-library-safe *ent API. As long > > as there's only one program using it my feeling is to omit it. > > samba is probably an important one so it should be > fixed upstream if not yet done Yes, I agree. > > > sys/perm.h > > > xosview > > > > Seems redundant with sys/io.h? > > yes, we could add an alias > (although on glibc sys/io.h has a bit more stuff) Yes, I just don't see any use for sys/perm.h without sys/io.h. > > > 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() > > > > Was gcc built aginst musl? Assuming so, it's _possible_ that some of > > these are musl bugs, though gcc sounds more likely. > > the mm_malloc.h thing is ugly, i'm not sure who else > uses that header, but the incompatible prototype > might bite others (i still dont quite understand > why extern "C" api needs throw() in glibc) It's an optimization to tell GCC that the function won't throw an exception that reaches back to the caller. GCC should assume this by default, but because GNU C has support for exceptions in C, it doesn't. So they have to work around their own misfeature to avoid suboptimal code generation. In musl I just consider that a GCC bug; I looked for a way to work around it with global compiler flags rather than ugly header hacks, and was told none exists, so until GCC gets their act together and fixes this, we can just live with slightly suboptimal C++ code generation. > > > at least mysql5-client config uses getconf > > > > Hm? We should probably provide a getconf that works with musl > > somewhere... > > maybe landley could do one for toybox.. :) I'm not clear on how easy it is to do in a libc-agnostic way, but if possible that would definitely be a nice solution. > > > other > > > qt3-libs, ptlib: using signed int for socklen_t > > > > glibc also has unsigned socklen_t, so I'm confused how they work with > > glibc but not musl... > > yes, this is a mystery, actually the warning is shown for > many packages but most of them dont use Werror for it > maybe it's a recent gcc warning (passing int* instead of > socklen_t* aka unsigned* to interfaces like accept) Yes, this mismatch is a constraint violation and requires a diagnostic, but GCC used to fail to issue even a warning for it. Maybe recent GCC makes it an error by default? > (and qt3-libs has quite a lot of dependencies, i think > it is the most wanted failing package on pkgsrc now) Yes, I would suspect so. If we get it working, we might find lots more failures in things that depend on it... > > > binutils, mingw-binutils: empty character constant '' > > > > Cause? musl-specific? > > from the pkgsrc logs my guess is a $ got eaten by some tool > (maybe busybox?) > > binutils builds here just fine (but i build it without bfd) > > earm_epoc_pe.c: In function 'gld_arm_epoc_pe_place_orphan': > earm_epoc_pe.c:1512:37: error: empty character constant > && (dollar = strchr (secname, '')) != NULL) > ^ > earm_epoc_pe.c:1646:25: error: empty character constant > if (strchr (lname, '') == NULL) > ^ I found the offending code in ld/emultempl/pe.em, but I can't figure out why it's breaking. The line in question is: && (dollar = strchr (secname, '\$')) != NULL) and running that as a here-document on Busybox ash works fine for me; the literal $ (without the \ before it) makes it into the output. > > > dosbox: uses undefined typename in offsetof > > > > A type musl is missing? > > rechecked and it is missing offsetof > (so it probably fails to include stddef.h) So another case of expecting implicit inclusion, most likely. > > > boost/integer_traits.hpp: misses WCHAR_MIN and WCHAR_MAX because of ifdef hell > > > > Oh? Is this their fault or something weird we're doing? > > their fault, ugly ifdef hell instead of just > including wchar.h to work around broken platforms > > http://boost.cvs.sourceforge.net/viewvc/boost/boost/boost/integer_traits.hpp?view=markup I guess we should report this upstream. If they don't want to unconditionally include wchar.h, they could use #ifndef WCHAR_MIN instead of their silly hard-coded platform list. > > > libjit: #error "Don't know how to determine if floating point numbers are finite" > > > > Is it doing stupid #ifdefs based on glibc version, or failing for some > > semi-readonable reason? > > dont know, the log only has this message OK, I guess we'll have to look into this later. > > > tk: tkPanedWindow.o: file not recognized: File truncated > > > > Weird... > > yes the log has no context for it > and tk is a wanted package on pkgsrc My best guess is something odd in the makefile that caused the file to get overwritten with junk, touched as a zero-length file, or similar. > > > cc65, gnats, sandy: undefined siginfo_t because sys/wait.h is used with -std=c89 > > > > This is something we need to fix. I'm thinking sys/wait.h should just > > omit the stuff that needs siginfo_t if the right features are not > > enabled. (Really, omitting the whole file would be valid, but I > > suspect this would break programs worse.) > > makes sense Fixed. Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 5:20 ` Rich Felker @ 2013-11-09 16:16 ` Szabolcs Nagy 2013-11-09 16:41 ` Rich Felker 2013-11-28 3:23 ` Rob Landley 1 sibling, 1 reply; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-09 16:16 UTC (permalink / raw) To: musl * Rich Felker <dalias@aerifal.cx> [2013-11-09 00:20:10 -0500]: > On Sat, Nov 09, 2013 at 05:02:52AM +0100, Szabolcs Nagy wrote: > > * Rich Felker <dalias@aerifal.cx> [2013-11-08 20:01:30 -0500]: > > > > getloadavg > > > > pbzip2, tokyotyrant, distccmon-gnome > > > > > > This would probably be trivial to add. > > > > return -1? > > > > we can add it i guess but these packages could > > use configure checks (i think they are autoconfed) > > Indeed. Not sure if it's useful; just reading from /proc is just as > good. i think it's useless, but looking at codesearch.debian.net it seems to be used in some packages without correct fallback so it's probably better if musl provides it > > > > mallinfo > > > > libfirm > > > > > > Deprecated API but we could provide a dummy anyway. > > > > it's so ugly with the signed int counters, i wouldnt > > support if it's not widely used > > > > i think libfirm can be fixed: it can either do the accounting > > itself or has no business providing process-wide heap info > > statistics (it is only used for a public diagnostic api) > > I thought I remembered other programs using mallinfo too, but maybe > I'm mistaken... The main reason I'd want to provide a dummy is if > there are glibc binaries using it. The range of the counters is fairly > irrelevant; keeping track of the information is prohibitively slow > anyway since it would have to be synchronized between threads on each > call to malloc/free. (glibc does some poor hack keeping this info > per-arena and summarizing it when mallinfo is called, I think...) i see > > > > c_ispeed, c_ospeed (struct termios members) > > > > icdprog > > > > > > If c_* is reserved we could possibly add these. > > > > c_* is reserved > > I'm a bit hesitant to do anything now for fear of breaking more stuff, > but perhaps just #define __c_[io]speed c_[io]speed would be okay... yes, that is non-intrusive (glibc has it by default and debian codesearch shows that other packages use it as well so it makes sense) > > it seems this is a subset of unistd.h on the bsds > > with just macro definitions on glibc it is an alias > > to unistd.h > > Bleh. since glibc does the same i think a sys/unistd.h -> unistd.h redirection is acceptable > > glibc includes linux/ppp_defs.h (plus defines some libc types) > > I don't have any fundamental objection to having nonstandard headers > like this whose applicability is limited to specialized programs rely > on linux kernel headers (we already have soundcard.h or something), > but it might be better to move them ALL out of musl and into a > separate header package at some point... > > > > sys/dirent.h > > > > heirloom-libcommon > > > > > > Possibly another #warning redirect? > > > > can be, bsds have it (a subset of dirent.h) > > but glibc does not have it as far as i can tell > > so heirloom should be more clever about it > > (i guess it has some broken ifdef around it) > > Perhaps __GLIBC__ :-) > yes i think this should be fixed in heirloom > > > > net/if_ether.h > > > > cia > > > > > > Is this a duplicate of the one in netinet or something different? > > > > as far as i can see it's like netinet/if_ether.h on glibc > > but glibc, freebsd, openbsd dont have it (i can only see > > it in netbsd) > > > > however netinet/if_ether.h includes net/ethernet.h on > > glibc, but it's the other way around in musl > > (and on glibc both headers include linux/if_ether.h) > > > > that's probably a bug > > In musl or in glibc? :) musl assuming glibc is the defacto standard for these headers we should compare the visible symbols in the two headers glibc vs musl > > > > sys/perm.h > > > > xosview > > > > > > Seems redundant with sys/io.h? > > > > yes, we could add an alias > > (although on glibc sys/io.h has a bit more stuff) > > Yes, I just don't see any use for sys/perm.h without sys/io.h. i see this header used in a couple of places like #ifdef __i386__ #include <sys/perm.h> #else #include <sys/io.h> #endif maybe we should add an alias (both are ugly glibc inventions) > > the mm_malloc.h thing is ugly, i'm not sure who else > > uses that header, but the incompatible prototype > > might bite others (i still dont quite understand > > why extern "C" api needs throw() in glibc) > > It's an optimization to tell GCC that the function won't throw an > exception that reaches back to the caller. GCC should assume this by > default, but because GNU C has support for exceptions in C, it > doesn't. So they have to work around their own misfeature to avoid > suboptimal code generation. In musl I just consider that a GCC bug; I > looked for a way to work around it with global compiler flags rather > than ugly header hacks, and was told none exists, so until GCC gets > their act together and fixes this, we can just live with slightly > suboptimal C++ code generation. this is sad so c++ code that includes mm_malloc.h and stdlib.h will fail > > earm_epoc_pe.c: In function 'gld_arm_epoc_pe_place_orphan': > > earm_epoc_pe.c:1512:37: error: empty character constant > > && (dollar = strchr (secname, '')) != NULL) > > ^ > > earm_epoc_pe.c:1646:25: error: empty character constant > > if (strchr (lname, '') == NULL) > > ^ > > I found the offending code in ld/emultempl/pe.em, but I can't figure > out why it's breaking. The line in question is: > > && (dollar = strchr (secname, '\$')) != NULL) > > and running that as a here-document on Busybox ash works fine for me; > the literal $ (without the \ before it) makes it into the output. with the amount of hackery binutils build scripts do i'm not surprised if this breaks > > > > tk: tkPanedWindow.o: file not recognized: File truncated > > > > > > Weird... > > > > yes the log has no context for it > > and tk is a wanted package on pkgsrc > > My best guess is something odd in the makefile that caused the file to > get overwritten with junk, touched as a zero-length file, or similar. can be another instance of busybox vs bash/coreutils incompatibility ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 16:16 ` Szabolcs Nagy @ 2013-11-09 16:41 ` Rich Felker 2013-11-10 17:14 ` Szabolcs Nagy 0 siblings, 1 reply; 17+ messages in thread From: Rich Felker @ 2013-11-09 16:41 UTC (permalink / raw) To: musl; +Cc: Gregor Richards On Sat, Nov 09, 2013 at 05:16:55PM +0100, Szabolcs Nagy wrote: > > > > > net/if_ether.h > > > > > cia > > > > > > > > Is this a duplicate of the one in netinet or something different? > > > > > > as far as i can see it's like netinet/if_ether.h on glibc > > > but glibc, freebsd, openbsd dont have it (i can only see > > > it in netbsd) > > > > > > however netinet/if_ether.h includes net/ethernet.h on > > > glibc, but it's the other way around in musl > > > (and on glibc both headers include linux/if_ether.h) > > > > > > that's probably a bug > > > > In musl or in glibc? :) > > musl > > assuming glibc is the defacto standard for these headers > > we should compare the visible symbols in the two headers > glibc vs musl OK. > > > > > sys/perm.h > > > > > xosview > > > > > > > > Seems redundant with sys/io.h? > > > > > > yes, we could add an alias > > > (although on glibc sys/io.h has a bit more stuff) > > > > Yes, I just don't see any use for sys/perm.h without sys/io.h. > > i see this header used in a couple of places like > > #ifdef __i386__ > #include <sys/perm.h> > #else > #include <sys/io.h> > #endif > > maybe we should add an alias (both are ugly glibc inventions) Or put just the declarations in sys/perm.h and have sys/io.h include sys/perm.h. That might be preferable if sys/io.h (intentionally) breaks on some archs that don't have it. > > > the mm_malloc.h thing is ugly, i'm not sure who else > > > uses that header, but the incompatible prototype > > > might bite others (i still dont quite understand > > > why extern "C" api needs throw() in glibc) > > > > It's an optimization to tell GCC that the function won't throw an > > exception that reaches back to the caller. GCC should assume this by > > default, but because GNU C has support for exceptions in C, it > > doesn't. So they have to work around their own misfeature to avoid > > suboptimal code generation. In musl I just consider that a GCC bug; I > > looked for a way to work around it with global compiler flags rather > > than ugly header hacks, and was told none exists, so until GCC gets > > their act together and fixes this, we can just live with slightly > > suboptimal C++ code generation. > > this is sad > so c++ code that includes mm_malloc.h and stdlib.h will fail What is mm_malloc.h and why is it declaring malloc itself rather than including stdlib.h? > > > earm_epoc_pe.c: In function 'gld_arm_epoc_pe_place_orphan': > > > earm_epoc_pe.c:1512:37: error: empty character constant > > > && (dollar = strchr (secname, '')) != NULL) > > > ^ > > > earm_epoc_pe.c:1646:25: error: empty character constant > > > if (strchr (lname, '') == NULL) > > > ^ > > > > I found the offending code in ld/emultempl/pe.em, but I can't figure > > out why it's breaking. The line in question is: > > > > && (dollar = strchr (secname, '\$')) != NULL) > > > > and running that as a here-document on Busybox ash works fine for me; > > the literal $ (without the \ before it) makes it into the output. > > with the amount of hackery binutils build scripts do > i'm not surprised if this breaks I'm still surprised. I wonder if it's an old version of busybox or something. > > > > > > tk: tkPanedWindow.o: file not recognized: File truncated > > > > > > > > Weird... > > > > > > yes the log has no context for it > > > and tk is a wanted package on pkgsrc > > > > My best guess is something odd in the makefile that caused the file to > > get overwritten with junk, touched as a zero-length file, or similar. > > can be another instance of busybox vs bash/coreutils > incompatibility Yes, possibly. (Is it possible that "ar" is getting used to make a .a file and somehow busybox ar is getting used?) Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 16:41 ` Rich Felker @ 2013-11-10 17:14 ` Szabolcs Nagy 2013-11-10 18:22 ` Rich Felker 0 siblings, 1 reply; 17+ messages in thread From: Szabolcs Nagy @ 2013-11-10 17:14 UTC (permalink / raw) To: musl; +Cc: Gregor Richards * Rich Felker <dalias@aerifal.cx> [2013-11-09 11:41:47 -0500]: > On Sat, Nov 09, 2013 at 05:16:55PM +0100, Szabolcs Nagy wrote: > > this is sad > > so c++ code that includes mm_malloc.h and stdlib.h will fail > > What is mm_malloc.h and why is it declaring malloc itself rather than > including stdlib.h? > it declares posix_memalign and defined _mm_malloc and _mm_free i think it was added to gcc so it is possible to allocate memory for the sse intrinsics with the right alignment (included in xmmintrin.h which follows the intel and msvc api, see bug report) and for c++ they add throw() to posix_memalign so it's incompatible with the libc one hence boost fails to build (or anythning that uses both xmmintrin.h and stdlib.h) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16570 > Yes, possibly. (Is it possible that "ar" is getting used to make a .a > file and somehow busybox ar is getting used?) i dont know, i think gregor could look into this ===> Building for tk-8.5.14nb3 --- libtk85.so --- rm -f libtk85.so gcc -shared -O2 -Wno-error -I/usr/include -I/usr/include/freetype2 -O2 -O2 -Wno-error -I/usr/include -I/usr/include/freetype2 -pipe -I/usr/include -I/usr/include/freetype2 -L/usr/lib -Wl,-R/usr/lib -Wl,--export-dynamic -o libtk85.so tk3d.o tkArgv.o tkAtom.o [..] tkUnixXId.o -lpthread -Wl,-R/usr/lib -lXft -L/usr/lib64 -Wl,-R/usr/lib64 -lX11 -ldl -lpthread -L/usr/lib -ltclstub85 -Wl,-rpath,/usr/lib tkPanedWindow.o: file not recognized: File truncated collect2: error: ld returned 1 exit status meanwhile i finished scanning the rest of the logs: missing symbols (compile or link time): ffsl, ffsll redis, qemu glibc only api (ffs is bsd as well) many pkgs check for ffsl (including redis, which does it incorrectly) both redis and qemu silently succeed because implicit declaration (and it might even work because it is a gcc builtin) finite tuxracer, clutter-box2d, maude, polyml, see these are build failures, but configure is broken for more pkgs. AC_CHECK_FUNCS will fail for all macros because it tries to check linkage (this is broken in itself but the way the check is done is broken as well) and of course that's how most packages check for isnan, isinf, isfinite or finite some packages only check for finite not isfinite others only try to get it from ieeefp.h, so if we provide it, it has to be an extern function otherwise php, ruby, etc will continue to use their own pitiful implementations (they are lucky that gcc builtins will override that) drem xplot alias to remainder, i can add it NETDB_INTERNAL, NETDB_SUCCESS ecl, gambc, libspf2, knc NO_ADDRESS ecl, gambc, dovecot, elm-me, bglibs, nullmailer, pptp, rlpr, libghttp i think NO_ADDRESS alias is safe to add NETDB_* i'm not sure about TIOCGETP, TIOCSETP ucblogo, splitvt seem to be non-linux ioctls, there were many other non-linux failures i assume they work on glibc because of ifdef __GLIBC__ bsd struct tcphdr, TH_* darkstat, dnscap, flodo, knock, lft, scamper, tcpflow, tcptrace, trafshow, ipv6-toolkit, portsentry, rid struct ip_mreq_source flow-tools struct tcp_info httping, py27-uwsgi tcp_seq ssldump struct tcp_md5sig quagga TCP_ESTABLISHED, TCP_LISTEN ruby-raindrops it maybe useful to add the bsd version of struct tcphdr with the TH_* macros under _BSD_SOURCE in netinet/tcp.h (i'm not sure if the listed pkgs are supposed to be bsd only or not though) PTHREAD_MUTEX_RECURSIVE_NP panomatic PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP miredo PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP varnish GLOB_ONLYDIR monit GLOB_TILDE GutenMark, remind, i3, libdesktop-agnostic GLOB_BRACE remind, libdesktop-agnostic HZ fujiplay, nntpcache, dvdrecord CLK_TCK euler _PATH_MOUNTED samba35, bacula _PATH_SENDMAIL distribute WTMPX_FILE wterm, vsftpd, rxvt-unicode _WTMP_FILE srp-client union semun buffer union wait tcsh, skkfep, ttyrec, tcx, mxterm struct dqblk wu-ftpd current_salt (member of struct crypt_data) nginx ut_xtime (member of struct utmpx) eterm encrypt claws-mail herror cstream, yafc, newsfetch re_comp, re_exec fep setnetgrent, getnetgrent, endnetgrent netgroup gwtwd vscm mallinfo threadingbuildingblocks getprogname nologinmsg program_invocation_name gchore getdirentries 9base ruserok amanda-common rresvport htdig sigblock, sigsetmask ispell SIGCLD openvmps XCASE brandybasic NCC heyu INADDR_MAX_LOCAL_GROUP xorp _STAT_VER fakeroot __GLIBC__ lilo explicitly checks for this :) missing symbol because include or featuretest fail maelstrom-x11 fd_set moria time_t uqm fd_set gpspoint EOF sane-backends u_char py27-numarray FE_INVALID mandelbulber fd_set, timeval tesseract fd_set, timeval dpbox u_char scim-ccinput uint sj3-client uid_t sj3-server uid_t chicken NSIG konoha timeval dcc u_char distribute O_RDWR dspam u_int32_t ja-mh6 O_RDWR vanessa_logger CODE openfst ssize_t qalculate fd_set, timeval xfractint O_RDONLY mdp LOCK_EX,LOCK_NB,LOCK_UN p5-pkgsrc-Dewey ssize_t bsdiff u_char celestia sprintf colorls u_long ibutton-pdkit ulong, ushort stellarium fd_set usbprog ssize_t ggrab timeval hwdecode-demos timeval libdvbpsi ssize_t libva-driver-vdpau timeval cmu-dhcpd SA_NOMASK dhcpcd O_WRONLY, pid_t gopher MADV_SEQUENTIAL, caddr_t libsscript F_GETFL nap u_short omniORB usleep, gettimeofday p5-Net-RawIP u_int32_t partysip u_char radiusd-cistron O_RDWR libssh mode_t sendfile mode_t socks4 F_GETFL spegla struct statfs tcpdpriv struct statfs udpcast fd_set unworkable u_int32_t vde PATH_MAX vnstat O_RDONLY zsync off_t hplip u_char pslib uint coolkey strlen chkrootkit O_RDONLY libfprint memmem libprelude-python ptrdiff_t rainbowcrack u_int64_t smtpd O_WRONLY acpica-utils pthread_t acpidump u_char amtterm timeval bsign caddr_t fs-kit uid_t gpart errno libhfs time_t mtscan O_RDONLY pv struct stat64 radmind u_int rtty uchar strace PTRACE_PEEKUSER wipe u_int32_t xfce4-battery-plugin R_OK xfce4-diskperf-plugin dev_t xfe mode_t catdoc int32_t highlight stderr makeztxt u_long rasqal int16_t stardic fopen notion itimerval bozohttpd u_int qDecoder O_RDONLY vte029 ptsname_r xmindpath MAXNAMLEN busybox and pkgsrc build env failures: missing tbl and nroff /bin/sed: No such file or directory /usr/bin/file: not found /bin/awk: not found /usr/bin/fetch: not found /bin/sh: git: not found pax: Cannot set permissions on [..] (Not supported) /bin/sh: scrollkeeper-config: not found sed: bad option in substitution expression sed: illegal option: E ls: illegal option: f cat: illegal option: v diff: illegal option: I sh: no: unknown operand mount: Out of memory env: can't execute '/usr/bin/bmake': No such file or directory env: can't execute '/bin/sh': Out of memory and link failures for curses, intl, iconv other kind of build failures: picoc, pdflib-lite sizeof(FILE) squeak-vm static FILE stdoutStack[STDOUT_STACK_SZ]; geomview static FILE oldfile; delegate FILE s_FILE; netsurf stdout = stderr; STk # define READ_DATA_PENDING(fp) (fp->_cnt) nmh, ja-mh6 if ((io->_ptr = io->_base)) io->_cnt = 0; regionset dvd_udf.c:222:9: error: cast to union type from type not present in union pos = (fpos64_t)lb_number * (fpos64_t)DVD_VIDEO_LB_LEN; libgii #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) xsc checking for gettimeofday... no zphoto extern int vasprintf (char **ptr, const char *fmt, ...); molden static int linkat = 0; gauche, mercury /usr/include/asm/sigcontext.h:134:8: error: redefinition of 'struct _fpstate' /usr/include/asm/sigcontext.h:157:8: error: redefinition of 'struct sigcontext' /usr/include/bits/signal.h:44:8: note: originally defined here gcc47 error: conflicting types for 'size_t' (gcc stddef vs musl alltypes) swi-prolog-lite error: conflicting types for '__assert_fail' bing sysdep.h:74:19: error: 'IPOPT_EOL' undeclared (first use in this function) #define IPOPT_EOL IPOPT_END (in musl IPOPT_END is defined as IPOPT_EOL) tcpreplay typedef int socklen_t; microdc2, rc, elinks error: incompatible types when assigning to type 'va_list' from type 'struct __va_list_tag *' couriertcpd configure: error: I give up -- neither wait nor wait3 works properly pspp, gnuls, findutils, libunistring fseterr.c:72:3: error: #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib." exim-4 ld: cannot find -lnsl mush gcc: error: unrecognized command line option '-fwritable-strings' mutt error: "Could not determine where new mail is stored." clamav configure: error: C++ compiler cannot create executables fityk g++: internal compiler error: Killed (program cc1plus) dirac std::abs(double) -> double, fails in int context if ( (std::abs(m_coeff_data[j][i])<<2) >= u_threshold ) val = std::max( val , std::abs(m_coeff_data[j][i]) ); aiccu, ettercap, openvpn, rp-pppoe, vpnc, socat, tinc linux/if_ether.h:126:8: error: redefinition of 'struct ethhdr' netinet/if_ether.h:93:8: error: redefinition of 'struct ethhdr' cfengine linux/if.h:137:8: error: redefinition of 'struct ifmap' ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-10 17:14 ` Szabolcs Nagy @ 2013-11-10 18:22 ` Rich Felker 0 siblings, 0 replies; 17+ messages in thread From: Rich Felker @ 2013-11-10 18:22 UTC (permalink / raw) To: musl; +Cc: Gregor Richards On Sun, Nov 10, 2013 at 06:14:13PM +0100, Szabolcs Nagy wrote: > * Rich Felker <dalias@aerifal.cx> [2013-11-09 11:41:47 -0500]: > > On Sat, Nov 09, 2013 at 05:16:55PM +0100, Szabolcs Nagy wrote: > > > this is sad > > > so c++ code that includes mm_malloc.h and stdlib.h will fail > > > > What is mm_malloc.h and why is it declaring malloc itself rather than > > including stdlib.h? > > > > it declares posix_memalign and defined _mm_malloc and _mm_free > > i think it was added to gcc so it is possible to allocate memory > for the sse intrinsics with the right alignment (included in > xmmintrin.h which follows the intel and msvc api, see bug report) > > and for c++ they add throw() to posix_memalign so it's incompatible > with the libc one hence boost fails to build (or anythning that > uses both xmmintrin.h and stdlib.h) > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16570 I see. Well eseentially, the "linux" mm_malloc.h in gcc is glibc-specific, then. (BTW, if these prototypes are incompatible, I think it also means the glibc prototypes are non-conforming to the C++ standard, but that's an entirely separare issue.) I'm not sure what the proper fix is, though. Would declaring the extern function with scope local to the _mm_malloc function, rather than file scope, fix the problem? If so, that could probably be upstreamed in gcc. Another valid gcc-level fix would be: extern "C" int __gcc_posix_memalign (void **, size_t, size_t) __attribute__((__alias__("posix_memalign"))) throw (); I'm leaning towards considering this the superior fix, as it also avoids polluting the namespace with posix_memalign like gcc is currently doing. Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-09 5:20 ` Rich Felker 2013-11-09 16:16 ` Szabolcs Nagy @ 2013-11-28 3:23 ` Rob Landley 2013-11-29 17:49 ` Rich Felker 1 sibling, 1 reply; 17+ messages in thread From: Rob Landley @ 2013-11-28 3:23 UTC (permalink / raw) To: musl; +Cc: musl On 11/08/2013 11:20:10 PM, Rich Felker wrote: > On Sat, Nov 09, 2013 at 05:02:52AM +0100, Szabolcs Nagy wrote: > > * Rich Felker <dalias@aerifal.cx> [2013-11-08 20:01:30 -0500]: > > > > at least mysql5-client config uses getconf > > > > > > Hm? We should probably provide a getconf that works with musl > > > somewhere... > > > > maybe landley could do one for toybox.. :) > > I'm not clear on how easy it is to do in a libc-agnostic way, but if > possible that would definitely be a nice solution. It's already in the toybox roadmap because posix specifies it: http;//landley.net/toybox/roadmap.html http://opengroup.org/onlinepubs/9699919799/utilities/getconf.html And they say it stacks on top of sysconf(), confstr(), and limits.h. Plus the implementation may add "other local values"... Rob ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-28 3:23 ` Rob Landley @ 2013-11-29 17:49 ` Rich Felker 0 siblings, 0 replies; 17+ messages in thread From: Rich Felker @ 2013-11-29 17:49 UTC (permalink / raw) To: musl On Wed, Nov 27, 2013 at 09:23:27PM -0600, Rob Landley wrote: > On 11/08/2013 11:20:10 PM, Rich Felker wrote: > >On Sat, Nov 09, 2013 at 05:02:52AM +0100, Szabolcs Nagy wrote: > >> * Rich Felker <dalias@aerifal.cx> [2013-11-08 20:01:30 -0500]: > >> > > at least mysql5-client config uses getconf > >> > > >> > Hm? We should probably provide a getconf that works with musl > >> > somewhere... > >> > >> maybe landley could do one for toybox.. :) > > > >I'm not clear on how easy it is to do in a libc-agnostic way, but if > >possible that would definitely be a nice solution. > > It's already in the toybox roadmap because posix specifies it: > > http;//landley.net/toybox/roadmap.html > http://opengroup.org/onlinepubs/9699919799/utilities/getconf.html > > And they say it stacks on top of sysconf(), confstr(), and limits.h. > Plus the implementation may add "other local values"... Adding the "other local values" is the only problematic part, since there's no portable way to enumerate them. You could probably use some $CC -dM magic to get a list of the SC_*, PC_*, and CS_* macros though. Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 0:34 Latest pkgsrc results [What builds on musl 0.9.13?] Gregor Richards 2013-11-07 2:01 ` Szabolcs Nagy @ 2013-11-07 4:50 ` Kurt H Maier 2013-11-07 13:19 ` Kurt H Maier 1 sibling, 1 reply; 17+ messages in thread From: Kurt H Maier @ 2013-11-07 4:50 UTC (permalink / raw) To: musl Off-list to reduce noise: Quoting Gregor Richards <gr@purdue.edu>: > Here are the results from my latest build of NetBSD pkgsrc 2013Q2 on > musl 0.9.13, with patches from > http://bitbucket.org/GregorR/musl-pkgsrc-patches revision > b44694ce2dd6. I really appreciate your doing this. Thanks. khm ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Latest pkgsrc results [What builds on musl 0.9.13?] 2013-11-07 4:50 ` Kurt H Maier @ 2013-11-07 13:19 ` Kurt H Maier 0 siblings, 0 replies; 17+ messages in thread From: Kurt H Maier @ 2013-11-07 13:19 UTC (permalink / raw) To: musl Quoting Kurt H Maier <khm@sciops.net>: > Off-list to reduce noise: What a helpful email client I have! Sorry. khm ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2013-11-29 17:49 UTC | newest] Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-11-07 0:34 Latest pkgsrc results [What builds on musl 0.9.13?] Gregor Richards 2013-11-07 2:01 ` Szabolcs Nagy 2013-11-07 2:22 ` Gregor Richards 2013-11-07 2:46 ` Szabolcs Nagy 2013-11-07 23:46 ` Szabolcs Nagy 2013-11-08 10:48 ` John Spencer 2013-11-09 1:01 ` Rich Felker 2013-11-09 4:02 ` Szabolcs Nagy 2013-11-09 5:20 ` Rich Felker 2013-11-09 16:16 ` Szabolcs Nagy 2013-11-09 16:41 ` Rich Felker 2013-11-10 17:14 ` Szabolcs Nagy 2013-11-10 18:22 ` Rich Felker 2013-11-28 3:23 ` Rob Landley 2013-11-29 17:49 ` Rich Felker 2013-11-07 4:50 ` Kurt H Maier 2013-11-07 13:19 ` Kurt H Maier
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/musl/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).