diff mbox

[1/2] openssh: add linux-pam support

Message ID 1344790876-27962-1-git-send-email-danomimanchego123@gmail.com
State Superseded
Headers show

Commit Message

Danomi Manchego Aug. 12, 2012, 5:01 p.m. UTC
Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
---
 package/openssh/openssh.mk |    5 +++++
 1 file changed, 5 insertions(+)

Comments

Peter Korsgaard Sept. 14, 2012, 9:28 a.m. UTC | #1
>>>>> "Danomi" == Danomi Manchego <danomimanchego123@gmail.com> writes:

 Danomi> Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>

 Danomi> ---
 Danomi>  package/openssh/openssh.mk |    5 +++++
 Danomi>  1 file changed, 5 insertions(+)

 Danomi> diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk
 Danomi> index 0878fce..815ed33 100644
 Danomi> --- a/package/openssh/openssh.mk
 Danomi> +++ b/package/openssh/openssh.mk
 Danomi> @@ -12,6 +12,11 @@ OPENSSH_CONF_OPT = --libexecdir=/usr/lib --disable-lastlog --disable-utmp \
 
 Danomi>  OPENSSH_DEPENDENCIES = zlib openssl
 
 Danomi> +ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
 Danomi> +OPENSSH_DEPENDENCIES += linux-pam
 Danomi> +OPENSSH_CONF_OPT += --with-pam
 Danomi> +endif

What configurations did you test this with? It seems to break here with
the internal toolchain because pthread.h somehow gets included:

output/host/usr/bin/arm-linux-gcc -pipe -Os  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -fno-builtin-memset  -I. -I.  -DSSHDIR=\"/etc\" -D_PATH_SSH_PROGRAM=\"/usr/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/lib/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/usr/lib/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/usr/lib/ssh-keysign\" -D_PATH_SSH_PKCS11_HELPER=\"/usr/lib/ssh-pkcs11-helper\" -D_PATH_SSH_PIDDIR=\"/var/run\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/empty\"  -DHAVE_CONFIG_H -c auth-pam.c
auth-pam.c:171: error: static declaration of ‘pthread_exit’ follows non-static declaration
/home/peko/source/buildroot/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/include/pthread.h:236: error: previous declaration of ‘pthread_exit’ was here
auth-pam.c:178: error: conflicting types for ‘pthread_create’
/home/peko/source/buildroot/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/include/pthread.h:227: error: previous declaration of ‘pthread_create’ was here
auth-pam.c:204: error: conflicting types for ‘pthread_cancel’
/home/peko/source/buildroot/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/include/pthread.h:487:
error: previous declaration of ‘pthread_cancel’ was here
Danomi Manchego Sept. 16, 2012, 12:18 a.m. UTC | #2
Hi Peter,

> What configurations did you test this with? It seems to break here with
> the internal toolchain because pthread.h somehow gets included:

All my projects use codesourcery toolchains.  Sorry, I don't regularly use
any uclibc
toolchains.  However, I gave it a try, and reproduced the breakdown.  It
appears
that when PAM is enabled, openssh used a local static definition of the
common
pthread functions.  But when a uclibc toolchain is used, somehow pthreads.h
gets
included indirectly.  The exported and static definitions clash, causing
the error.

Googling around, it seems that both the openwrt and the oe people have hit
on this problem.  The oe people elected to simply force openssh to be
configured
with pam disabled when a uclibc toolchain is used.  The openwrt people, on
the other hand, changed all the pthead_*() calls to pthread2_*().  I think
a variant
of the second approach would be best - I added macros above each static
declaration
to map the static definitions (and the subsequent calls) to different,
unique names.

I will resubmit this change as a v2.

Thanks,
Danomi -
diff mbox

Patch

diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk
index 0878fce..815ed33 100644
--- a/package/openssh/openssh.mk
+++ b/package/openssh/openssh.mk
@@ -12,6 +12,11 @@  OPENSSH_CONF_OPT = --libexecdir=/usr/lib --disable-lastlog --disable-utmp \
 
 OPENSSH_DEPENDENCIES = zlib openssl
 
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+OPENSSH_DEPENDENCIES += linux-pam
+OPENSSH_CONF_OPT += --with-pam
+endif
+
 define OPENSSH_INSTALL_INITSCRIPT
 	$(INSTALL) -D -m 755 package/openssh/S50sshd $(TARGET_DIR)/etc/init.d/S50sshd
 endef