Skip to contentSkip to conversation

Add support for libssh2 in buildroot

PATCH Superseded Ryan Barnett 2 participants 4 messages Aug 29, 2013 – Aug 30, 2013

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

v2 cover Add support for libssh2 in buildroot

Adding support for libssh2 to buildroot to allow for its use with libcurl. By having libcurl use libssh2, features like SCP and SFTP become possible when using libcurl.

For more detailed information about options enabled with libssh2 in libcurl see the following website: http://curl.haxx.se/docs/features.html

Change from v1 -> v2:
* All the following changes were noted by Arnout Vandecappelle
* updated commit comments for libssh2
* removed details from libssh2/Config.in
* added libssh2 to select libgcrypt by default
* fixed up configuration options libssh2 in libssh.mk
* removed removal of documentation and static libraries since the target finalize step takes care of this
* added check for zlib dependancy (myself)

Ryan Barnett (2):
libssh2: add support for new package libssh2
libcurl: add support for compiling with libssh2

 package/Config.in          |    1 +
 package/libcurl/libcurl.mk |    8 ++++++++
 package/libssh2/Config.in  |   11 +++++++++++
 package/libssh2/libssh2.mk |   32 ++++++++++++++++++++++++++++++++
 4 files changed, 52 insertions(+), 0 deletions(-)
 create mode 100644 package/libssh2/Config.in
 create mode 100644 package/libssh2/libssh2.mk
#1 lore raw

PATCH v2 1/2 libssh2: add support for new package libssh2

Adding new package - libssh2 - under
Target packages > Libraries > Crypto > libssh2

libssh2 is a client-side C library implementing the SSH2 protocol.

For more information on this package - see their website:
http://www.libssh2.org/

---

Changes v1 -> v2:
* removed details from libssh2/Config.in (suggested by Arnout)
* added libssh2 to select libgcrypt by default (suggested by Arnout)
* fixed up configuration options libssh2 in libssh.mk (suggested by Arnout)
* removed removal of documentation and static libraries since the target finalize step takes care of this (suggested by Arnout)
* added check for zlib dependancy

 package/Config.in          |    1 +
 package/libssh2/Config.in  |   11 +++++++++++
 package/libssh2/libssh2.mk |   32 ++++++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 0 deletions(-)
 create mode 100644 package/libssh2/Config.in
 create mode 100644 package/libssh2/libssh2.mk
package/Config.in +1 -0
index 97cd7da..668f550 100644
@@ -424,6 +424,7 @@ source "package/libmcrypt/Config.in"
 source "package/libmhash/Config.in"
 source "package/libnss/Config.in"
 source "package/libsha1/Config.in"
+source "package/libssh2/Config.in"
 source "package/nettle/Config.in"
 source "package/openssl/Config.in"
 source "package/polarssl/Config.in"
package/libssh2/Config.in new file +11 -0
new file mode 100644
index 0000000..1fb89ff
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_LIBSSH2
+	bool "libssh2"
+	select BR2_PACKAGE_LIBGCRYPT if !BR2_PACKAGE_OPENSSL
+	help
+	  libssh2 is a client-side C library implementing the SSH2 protocol 
+	  as defined by Internet Drafts: SECSH-TRANS(22), SECSH-USERAUTH(25), 
+	  SECSH-CONNECTION(23), SECSH-ARCH(20), SECSH-FILEXFER(06)*, 
+	  SECSH-DHGEX(04), and SECSH-NUMBERS(10)
+
+	  http://www.libssh2.org/
+
package/libssh2/libssh2.mk new file +32 -0
new file mode 100644
index 0000000..a6b81f0
@@ -0,0 +1,32 @@
+#############################################################
+#
+# libssh2
+#
+#############################################################
+
+LIBSSH2_VERSION = 1.4.3
+LIBSSH2_SITE = http://www.libssh2.org/download/
+LIBSSH2_LICENSE = BSD
+LIBSSH2_LICENSE_FILES = COPYING
+LIBSSH2_INSTALL_STAGING = YES
+LIBSSH2_CONF_OPT = --disable-examples-build
+
+# libssh2 must use either libgcrypt or OpenSSL
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+LIBSSH2_DEPENDENCIES += openssl
+LIBSSH2_CONF_OPT += --with-openssl --without-libgcrypt
+endif
+ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
+LIBSSH2_DEPENDENCIES += libgcrypt
+LIBSSH2_CONF_OPT += --with-libgcrypt --without-openssl
+endif
+
+# Add zlib support if enabled
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+LIBSSH2_DEPENDENCIES += zlib
+LIBSSH2_CONF_OPT += --with-libz
+else
+LIBSSH2_CONF_OPT += --without-libz
+endif
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.1
#2 lore raw

PATCH v2 1/2 libssh2: add support for new package libssh2

Hi Ryan,

Quoted 10 lines · Ryan Barnett

Adding new package - libssh2 - under
Target packages > Libraries > Crypto > libssh2

libssh2 is a client-side C library implementing the SSH2 protocol.

For more information on this package - see their website:
http://www.libssh2.org/

---

[...]

package/libssh2/libssh2.mk line 18

Quoted 5 lines
package/libssh2/libssh2.mk new file +5 -0
+# libssh2 must use either libgcrypt or OpenSSL
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+LIBSSH2_DEPENDENCIES += openssl
+LIBSSH2_CONF_OPT += --with-openssl --without-libgcrypt
+endif

You should probably use 'else' here. What if both BR2_PACKAGE_OPENSSL and BR2_PACKAGE_LIBGCRYPT ares selected? You end up with

LIBSSH2_CONF_OPT ~= --with-openssl --without-libgcrypt --with-libgcrypt \
--without-openssl

which is not what you want. You might also want to reverse the order since libgcrypt is considered the default.

baruch

Quoted 14 lines
package/libssh2/libssh2.mk new file +14 -0
+ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
+LIBSSH2_DEPENDENCIES += libgcrypt
+LIBSSH2_CONF_OPT += --with-libgcrypt --without-openssl
+endif
+
+# Add zlib support if enabled
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+LIBSSH2_DEPENDENCIES += zlib
+LIBSSH2_CONF_OPT += --with-libz
+else
+LIBSSH2_CONF_OPT += --without-libz
+endif
+
+$(eval $(autotools-package))
Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#3 lore raw

PATCH v2 2/2 libcurl: add support for compiling with libssh2

In reply to Ryan Barnett

Adding configuration options that if libssh2 is selected, compile libcurl with --with-ssh config flag.

---
 package/libcurl/libcurl.mk |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
package/libcurl/libcurl.mk +8 -0
index 56f13ba..fd15478 100644
@@ -34,6 +34,14 @@ else
 LIBCURL_CONF_OPT += --without-ssl
 endif
 
+# Configure curl to support libssh2
+ifeq ($(BR2_PACKAGE_LIBSSH2),y)
+LIBCURL_DEPENDENCIES += libssh2
+LIBCURL_CONF_OPT += --with-libssh2
+else
+LIBCURL_CONF_OPT += --without-libssh2
+endif
+
 define LIBCURL_FIX_DOT_PC
 	printf 'Requires: openssl\n' >>$(@D)/libcurl.pc.in
 endef
Signature · 1 line
1.7.1