Message ID | 1344790876-27962-1-git-send-email-danomimanchego123@gmail.com |
---|---|
State | Superseded |
Headers | show |
>>>>> "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
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 --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
Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com> --- package/openssh/openssh.mk | 5 +++++ 1 file changed, 5 insertions(+)