OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 29-Aug-2007 10:10:53
Branch: HEAD Handle: 2007082909105200
Modified files:
openpkg-src/curl curl.patch curl.spec
Log:
allow one to build cURL with SSH support
Summary:
Revision Changes Path
1.12 +325 -1 openpkg-src/curl/curl.patch
1.96 +10 -1 openpkg-src/curl/curl.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/curl/curl.patch
============================================================================
$ cvs diff -u -r1.11 -r1.12 curl.patch
--- openpkg-src/curl/curl.patch 20 Jul 2007 07:24:18 -0000 1.11
+++ openpkg-src/curl/curl.patch 29 Aug 2007 08:10:52 -0000 1.12
@@ -1,6 +1,6 @@
Index: lib/ftp.c
--- lib/ftp.c.orig 2007-07-02 00:01:19 +0200
-+++ lib/ftp.c 2007-07-20 09:20:11 +0200
++++ lib/ftp.c 2007-08-29 10:07:14 +0200
@@ -2371,8 +2371,7 @@
struct ftp_conn *ftpc = &conn->proto.ftpc;
(void)instate; /* no use for this yet */
@@ -11,3 +11,327 @@
/* 331 Password required for ...
(the server requires to send the user's password too) */
NBFTPSENDF(conn, "PASS %s", ftp->passwd?ftp->passwd:"");
+Index: lib/ssh.c
+--- lib/ssh.c.orig 2007-07-06 22:13:24 +0200
++++ lib/ssh.c 2007-08-29 10:07:14 +0200
+@@ -70,6 +70,24 @@
+ #endif
+ #endif /* !WIN32 */
+
++#if defined(LIBSSH2_VERSION_NUM)
++# if LIBSSH2_VERSION_NUM >= 0x001000
++# define HAVE_LIBSSH2_NBLOCK 1
++# else
++# define HAVE_LIBSSH2_NBLOCK 0
++# endif
++#else /* !defined(LIBSSH2_VERSION_NUM) */
++# if defined(LIBSSH2_APINO)
++# if LIBSSH2_APINO >= 200706012030
++# define HAVE_LIBSSH2_NBLOCK 1
++# else
++# define HAVE_LIBSSH2_NBLOCK 0
++# endif
++# else /* !defined(LIBSSH2_APINO) */
++# define HAVE_LIBSSH2_NBLOCK 0
++# endif /* defined(LIBSSH2_APINO) */
++#endif /* defined(LIBSSH2_VERSION_NUM) */
++
+ #if (defined(NETWARE) && defined(__NOVELL_LIBC__))
+ #undef in_addr_t
+ #define in_addr_t unsigned long
+@@ -239,7 +257,7 @@
+ (void)abstract;
+ }
+
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ /*
+ * SSH State machine related code
+ */
+@@ -854,7 +872,7 @@
+ infof(data, "SSH socket: %d\n", sock);
+ #endif /* CURL_LIBSSH2_DEBUG */
+
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ state(conn, SSH_S_STARTUP);
+
+ if (data->state.used_interface == Curl_if_multi)
+@@ -1134,7 +1152,7 @@
+ * the destination file will be named the same name as the last
directory
+ * in the path.
+ */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ do {
+ scp->ssh_channel = libssh2_scp_send_ex(scp->ssh_session, scp->path,
+ conn->data->set.new_file_perms,
+@@ -1169,7 +1187,7 @@
+ */
+ curl_off_t bytecount;
+ memset(&sb, 0, sizeof(struct stat));
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ do {
+ scp->ssh_channel = libssh2_scp_recv(scp->ssh_session, scp->path, &sb);
+ if (!scp->ssh_channel &&
+@@ -1217,7 +1235,7 @@
+ scp->path = NULL;
+
+ if (scp->ssh_channel) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ if (conn->data->set.upload) {
+ while ((rc = libssh2_channel_send_eof(scp->ssh_channel)) ==
+ LIBSSH2_ERROR_EAGAIN);
+@@ -1248,7 +1266,7 @@
+ }
+
+ if (scp->ssh_session) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while (libssh2_session_disconnect(scp->ssh_session, "Shutdown") ==
+ LIBSSH2_ERROR_EAGAIN);
+ #else /* !(LIBSSH2_APINO >= 200706012030) */
+@@ -1279,7 +1297,7 @@
+ * NOTE: we should not store nor rely on connection-related data to be
+ * in the SessionHandle struct
+ */
+-#if defined(LIBSSH2CHANNEL_EAGAIN) && (LIBSSH2_APINO < 200706012030)
++#if defined(LIBSSH2CHANNEL_EAGAIN) && defined(LIBSSH2_APINO) &&
(LIBSSH2_APINO < 200706012030)
+ nwrite = (ssize_t)
+ libssh2_channel_writenb(conn->data->reqdata.proto.ssh->ssh_channel,
+ mem, len);
+@@ -1287,7 +1305,7 @@
+ nwrite = (ssize_t)
+ libssh2_channel_write(conn->data->reqdata.proto.ssh->ssh_channel,
+ mem, len);
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ if (nwrite == LIBSSH2_ERROR_EAGAIN) {
+ return 0;
+ }
+@@ -1313,7 +1331,7 @@
+ * in the SessionHandle struct
+ */
+
+-#if defined(LIBSSH2CHANNEL_EAGAIN) && (LIBSSH2_APINO < 200706012030)
++#if defined(LIBSSH2CHANNEL_EAGAIN) && defined(LIBSSH2_APINO) &&
(LIBSSH2_APINO < 200706012030)
+ /* we prefer the non-blocking API but that didn't exist previously */
+ nread = (ssize_t)
+ libssh2_channel_readnb(conn->data->reqdata.proto.ssh->ssh_channel,
+@@ -1358,7 +1376,7 @@
+ * If this is not done the destination file will be named the
+ * same name as the last directory in the path.
+ */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ do {
+ sftp->sftp_handle =
+ libssh2_sftp_open(sftp->sftp_session, sftp->path,
+@@ -1446,7 +1464,7 @@
+ int len, totalLen, currLen;
+ char *line;
+
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ do {
+ sftp->sftp_handle =
+ libssh2_sftp_opendir(sftp->sftp_session, sftp->path);
+@@ -1471,7 +1489,7 @@
+ #endif /* !(LIBSSH2_APINO >= 200706012030) */
+
+ do {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((len = libssh2_sftp_readdir(sftp->sftp_handle, filename,
+ PATH_MAX, &attrs)) ==
+ LIBSSH2_ERROR_EAGAIN);
+@@ -1589,7 +1607,7 @@
+ char linkPath[PATH_MAX + 1];
+
+ snprintf(linkPath, PATH_MAX, "%s%s", sftp->path, filename);
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((len = libssh2_sftp_readlink(sftp->sftp_session,
linkPath,
+ filename, PATH_MAX)) ==
+ LIBSSH2_ERROR_EAGAIN);
+@@ -1614,7 +1632,7 @@
+ break;
+ }
+ } while (1);
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while (libssh2_sftp_closedir(sftp->sftp_handle) ==
LIBSSH2_ERROR_EAGAIN);
+ #else /* !(LIBSSH2_APINO >= 200706012030) */
+ libssh2_sftp_closedir(sftp->sftp_handle);
+@@ -1628,7 +1646,7 @@
+ /*
+ * Work on getting the specified file
+ */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ do {
+ sftp->sftp_handle =
+ libssh2_sftp_open(sftp->sftp_session, sftp->path,
LIBSSH2_FXF_READ,
+@@ -1654,7 +1672,7 @@
+ }
+ #endif /* !(LIBSSH2_APINO >= 200706012030) */
+
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((rc = libssh2_sftp_stat(sftp->sftp_session, sftp->path,
&attrs))
+ == LIBSSH2_ERROR_EAGAIN);
+ #else /* !(LIBSSH2_APINO >= 200706012030) */
+@@ -1686,7 +1704,7 @@
+ bytecount, FALSE, NULL, -1, NULL);
+ #endif
+ while (res == CURLE_OK) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ ssize_t nread;
+
+ while ((nread =
libssh2_sftp_read(data->reqdata.proto.ssh->sftp_handle,
+@@ -1702,7 +1720,7 @@
+ if (nread > 0)
+ buf[nread] = 0;
+
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ if (nread <= 0)
+ break;
+ #else /* !(LIBSSH2_APINO >= 200706012030) */
+@@ -1753,7 +1771,7 @@
+ sftp->homedir = NULL;
+
+ if (sftp->sftp_handle) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_close(sftp->sftp_handle)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret < 0) {
+@@ -1773,7 +1791,7 @@
+ }
+
+ if (sftp->sftp_session) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_shutdown(sftp->sftp_session)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret < 0) {
+@@ -1787,7 +1805,7 @@
+ }
+
+ if (sftp->ssh_channel) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_channel_close(sftp->ssh_channel)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret < 0) {
+@@ -1801,7 +1819,7 @@
+ }
+
+ if (sftp->ssh_session) {
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while (libssh2_session_disconnect(sftp->ssh_session, "Shutdown") ==
+ LIBSSH2_ERROR_EAGAIN);
+ #else /* !(LIBSSH2_APINO >= 200706012030) */
+@@ -1828,14 +1846,14 @@
+ ssize_t nwrite; /* libssh2_sftp_write() used to return size_t in 0.14
+ but is changed to ssize_t in 0.15! */
+
+-#if defined(LIBSSH2SFTP_EAGAIN) && (LIBSSH2_APINO < 200706012030)
++#if defined(LIBSSH2SFTP_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO
< 200706012030)
+ /* we prefer the non-blocking API but that didn't exist previously */
+ nwrite = (ssize_t)
+ libssh2_sftp_writenb(conn->data->reqdata.proto.ssh->sftp_handle, mem,
len);
+ #else
+ nwrite = (ssize_t)
+ libssh2_sftp_write(conn->data->reqdata.proto.ssh->sftp_handle, mem,
len);
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ if (nwrite == LIBSSH2_ERROR_EAGAIN) {
+ return 0;
+ }
+@@ -1857,7 +1875,7 @@
+
+ /* libssh2_sftp_read() returns size_t !*/
+
+-#if defined(LIBSSH2SFTP_EAGAIN) && (LIBSSH2_APINO < 200706012030)
++#if defined(LIBSSH2SFTP_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO
< 200706012030)
+ /* we prefer the non-blocking API but that didn't exist previously */
+ nread = (ssize_t)
+ libssh2_sftp_readnb(conn->data->reqdata.proto.ssh->sftp_handle, mem,
len);
+@@ -2058,7 +2076,7 @@
+ return err;
+ }
+ memset(&attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_stat(sftp_session,
+ path2, &attrs)) ==
+ LIBSSH2_ERROR_EAGAIN);
+@@ -2112,7 +2130,7 @@
+ }
+
+ /* Now send the completed structure... */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_setstat(sftp_session, path2, &attrs)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2148,7 +2166,7 @@
+ free(path1);
+ return err;
+ }
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_symlink(sftp_session, path1, path2)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2171,7 +2189,7 @@
+ #endif /* !(LIBSSH2_APINO >= 200706012030) */
+ }
+ else if (curl_strnequal(item->data, "mkdir ", 6)) { /* create dir */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_mkdir(sftp_session, path1, 0744)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2202,7 +2220,7 @@
+ free(path1);
+ return err;
+ }
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_rename(sftp_session, path1, path2)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2225,7 +2243,7 @@
+ #endif /* !(LIBSSH2_APINO >= 200706012030) */
+ }
+ else if (curl_strnequal(item->data, "rmdir ", 6)) { /* delete dir */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_rmdir(sftp_session, path1)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2246,7 +2264,7 @@
+ #endif /* !(LIBSSH2_APINO >= 200706012030) */
+ }
+ else if (curl_strnequal(item->data, "rm ", 3)) { /* delete file */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((ret = libssh2_sftp_unlink(sftp_session, path1)) ==
+ LIBSSH2_ERROR_EAGAIN);
+ if (ret != 0) {
+@@ -2296,7 +2314,7 @@
+
+ infof(conn->data, "Creating directory '%s'\n", sftp->path);
+ /* 'mode' - parameter is preliminary - default to 0644 */
+-#if (LIBSSH2_APINO >= 200706012030)
++#if HAVE_LIBSSH2_NBLOCK
+ while ((rc = libssh2_sftp_mkdir(sftp->sftp_session, sftp->path,
+ conn->data->set.new_directory_perms))
==
+ LIBSSH2_ERROR_EAGAIN);
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/curl/curl.spec
============================================================================
$ cvs diff -u -r1.95 -r1.96 curl.spec
--- openpkg-src/curl/curl.spec 20 Jul 2007 07:24:18 -0000 1.95
+++ openpkg-src/curl/curl.spec 29 Aug 2007 08:10:52 -0000 1.96
@@ -33,11 +33,12 @@
Group: Web
License: MIT-style
Version: 7.16.4
-Release: 20070720
+Release: 20070829
# package options
%option with_ssl yes
%option with_zlib yes
+%option with_ssh no
%option with_idn no
%option with_ares no
%option with_kerberos no
@@ -71,6 +72,10 @@
BuildPreReq: kerberos
PreReq: kerberos
%endif
+%if "%{with_ssh}" == "yes"
+BuildPreReq: libssh2
+PreReq: libssh2
+%endif
AutoReq: no
AutoReqProv: no
@@ -141,7 +146,11 @@
%else
--without-gssapi \
%endif
+%if "%{with_ssh}" == "yes"
+ --with-libssh2=%{l_prefix} \
+%else
--without-libssh2 \
+%endif
--disable-shared
%{l_make} %{l_mflags -O}
@@ .
______________________________________________________________________
OpenPKG http://openpkg.org
CVS Repository Commit List [email protected]