Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Tue, 6 Aug 2013 18:03:59 -0700
From: Isaac <>
Subject: Update: [pkg-shadow-Bugs][314271] Shadow FTBFS with musl libc

Rich, can we make sizeof(struct in_addr) visible?
That's ostensibly the only thing necessary for shadow to build at present.

----- Forwarded message from -----

Date: Wed, 07 Aug 2013 00:23:43 +0000
Subject: [pkg-shadow-Bugs][314271] Shadow FTBFS with musl libc

pkg-shadow-Bugs item #314271 was changed at 07/08/2013 02:23 by Nicolas Fran??ois
You can respond by visiting:

>Status: Closed
Priority: 3
Submitted By: Isaac Dunham (idunham-guest)
Assigned to: Nobody (None)
Summary: Shadow FTBFS with musl libc 
Category: None
Group: None
>Resolution: Fixed

Initial Comment:
I attempted to build shadow with musl libc (, and ran into a few issues:
1: missing <sys/socket.h> in libmisc/utmp.c
glibc includes several headers from <netdb.h>; <sys/socket.h> is one of these.
2: libmisc/utmp.c assumes that member sin_addr of
struct sockaddr_in (type struct in_addr) is completely defined.

musl has a policy of not making implementation-specific details public unless necessary; this is the full definition:
struct sockaddr_in
	sa_family_t sin_family;
	in_port_t sin_port;
	struct in_addr sin_addr;
	uint8_t sin_zero[8];
However, upstream may be willing to change this.

export ac_cv_member_struct_utmp_ut_addr_v6=no  ac_cv_member_struct_utmpx_ut_addr_v6=no
before running configure.

-need to make ruserok conditional.
ruserok is a nonstandard function, but it is not checked for, and musl does not currently implement it.
The proper solution would be to check for it in configure and either disable that codepath or else add a stub/alternate implementation.

There is no __MUSL__-type macro; upstream's view is that any implementation-specific details may be changed at any point so this is a short-term fix at best.

git clone git://
cd musl
/configure --prefix=/opt/musl --bindir=/opt/musl/bin
su -c "make install" root
cd ..
#go to the shadow source directory.
CC=/opt/musl/bin/musl-gcc \
/configure --without-nscd --without-libpam


>Comment By: Nicolas Fran??ois (nekral)
Date: 07/08/2013 02:23

Point 1 is fixed.

ruserok is now checked by configure (not tested)

Regarding point 2, I don't think I can do without knowing the size of what I copy.
I can find quite some hits on Google for sizeof(struct in_addr) so maybe it's needed for users.


You can respond by visiting:

----- End forwarded message -----

Powered by blists - more mailing lists

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