Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jun 2010 03:13:45 -0700 (PDT)
From:      "Jason E. Hale" <bsdkaffee@gmail.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        dougb@FreeBSD.org
Subject:   ports/148062: [MAINTAINER] security/gpa: Fix build with newer libassuan
Message-ID:  <4c208cd9.e058dc0a.32d5.ffffbcb3@mx.google.com>
Resent-Message-ID: <201006221020.o5MAK3gR029100@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         148062
>Category:       ports
>Synopsis:       [MAINTAINER] security/gpa: Fix build with newer libassuan
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 22 10:20:03 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Jason E. Hale
>Release:        FreeBSD 8.0-RELEASE i386
>Organization:
none 
>Environment:
System: FreeBSD mocha.verizon.net 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Fri Nov 27 18:56:06 EST 2009 root@mocha.verizon.net:/usr/obj/usr/src/sys/MOCHA8 i386


	
>Description:
- Fix the build of security/gpa with libassuan 2.x
- Patch for server.c taken from gpa svn.
- Add LICENSE while here.
	
>How-To-Repeat:
Use attached diff.
	
>Fix:

	

--- 2010-06-22-gpa.diff begins here ---
diff -ruN gpa.orig/Makefile gpa/Makefile
--- gpa.orig/Makefile	2010-06-22 05:19:39.000000000 -0400
+++ gpa/Makefile	2010-06-22 05:45:08.000000000 -0400
@@ -7,16 +7,16 @@
 
 PORTNAME=	gpa
 PORTVERSION=	0.9.0
-PORTREVISION=	5
+PORTREVISION=	6
 CATEGORIES=	security
 MASTER_SITES=	http://wald.intevation.org/frs/download.php/603/
 
 MAINTAINER=	bsdkaffee@gmail.com
 COMMENT=	A graphical frontend for the GNU Privacy Guard
 
-LIB_DEPENDS=	gpgme.18:${PORTSDIR}/security/gpgme
-BUILD_DEPENDS=	gpgv2:${PORTSDIR}/security/gnupg \
-		libassuan-1>=1.0.5:${PORTSDIR}/security/libassuan-1
+LIB_DEPENDS=	assuan.0:${PORTSDIR}/security/libassuan \
+		gpgme.18:${PORTSDIR}/security/gpgme
+BUILD_DEPENDS=	gpgv2:${PORTSDIR}/security/gnupg
 RUN_DEPENDS=	gpgv2:${PORTSDIR}/security/gnupg
 
 USE_BZIP2=	yes
@@ -27,6 +27,9 @@
 		GPGKEYS_LDAP="${LOCALBASE}/libexec/gpg2keys_ldap"
 MAKE_JOBS_SAFE=	yes
 
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/COPYING
+
 OPTIONS=	NLS "Native language support" on
 
 .include <bsd.port.pre.mk>
diff -ruN gpa.orig/files/patch-configure gpa/files/patch-configure
--- gpa.orig/files/patch-configure	1969-12-31 19:00:00.000000000 -0500
+++ gpa/files/patch-configure	2010-06-22 05:33:32.000000000 -0400
@@ -0,0 +1,13 @@
+--- ./configure.orig	2010-06-22 05:32:25.000000000 -0400
++++ ./configure	2010-06-22 05:33:16.000000000 -0400
+@@ -1808,8 +1808,8 @@
+ 
+ 
+ NEED_GPG_ERROR_VERSION=1.4
+-NEED_LIBASSUAN_API=1
+-NEED_LIBASSUAN_VERSION=1.0.4
++NEED_LIBASSUAN_API=2
++NEED_LIBASSUAN_VERSION=1.1.0
+ NEED_GPGME_API=1
+ NEED_GPGME_VERSION=1.2.0
+ 
diff -ruN gpa.orig/files/patch-src__server.c gpa/files/patch-src__server.c
--- gpa.orig/files/patch-src__server.c	1969-12-31 19:00:00.000000000 -0500
+++ gpa/files/patch-src__server.c	2010-06-22 05:33:32.000000000 -0400
@@ -0,0 +1,374 @@
+--- ./src/server.c.orig	2009-05-13 03:11:11.000000000 -0400
++++ ./src/server.c	2010-06-22 05:31:57.000000000 -0400
+@@ -568,7 +568,7 @@
+    the last command.  A RESET command undoes the effect of this
+    command.
+ */
+-static int
++static gpg_error_t
+ cmd_session (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -594,7 +594,7 @@
+   validity right away; if it does not (as here) all recipients are
+   checked at the time of the ENCRYPT command.  All RECIPIENT commands
+   are cumulative until a RESET or an successful ENCRYPT command.  */
+-static int
++static gpg_error_t
+ cmd_recipient (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -615,7 +615,7 @@
+    Set the file descriptor to read a message which is used with
+    detached signatures.
+  */
+-static int 
++static gpg_error_t
+ cmd_message (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -659,7 +659,7 @@
+ 
+    Encrypt the data received on INPUT to OUTPUT.
+ */
+-static int 
++static gpg_error_t
+ cmd_encrypt (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -755,7 +755,7 @@
+ 
+    Dummy encryption command used to check whether the given recipients
+    are all valid and to tell the client the preferred protocol.  */
+-static int 
++static gpg_error_t
+ cmd_prep_encrypt (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -814,7 +814,7 @@
+     @code{RESET} command.  A second command overrides the effect of
+     the first one; if EMAIL is not given the server shall use the
+     default signing key.  */
+-static int
++static gpg_error_t
+ cmd_sender (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -867,7 +867,7 @@
+ 
+    Sign the data received on INPUT to OUTPUT.
+ */
+-static int 
++static gpg_error_t
+ cmd_sign (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -943,7 +943,7 @@
+    If the option --no-verify is given, the server should not try to
+    verify a signature, in case the input data is an OpenPGP combined
+    message.  */
+-static int 
++static gpg_error_t
+ cmd_decrypt (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -1058,7 +1058,7 @@
+ 
+    The DISPLAYSTRING is a percent-and-plus-encoded string with a short
+    human readable description of the status.  */
+-static int 
++static gpg_error_t
+ cmd_verify (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+@@ -1143,7 +1143,7 @@
+    manager is brought into the foregound and that this command
+    immediatley returns.
+ */
+-static int
++static gpg_error_t
+ cmd_start_keymanager (assuan_context_t ctx, char *line)
+ {
+   gpa_open_key_manager (NULL, NULL);
+@@ -1157,7 +1157,7 @@
+    manager is brought into the foregound and that this command
+    immediatley returns.
+ */
+-static int
++static gpg_error_t
+ cmd_start_cardmanager (assuan_context_t ctx, char *line)
+ {
+   gpa_open_cardmanager (NULL, NULL);
+@@ -1172,7 +1172,7 @@
+    manager is brought into the foregound and that this command
+    immediatley returns.
+ */
+-static int
++static gpg_error_t
+ cmd_start_confdialog (assuan_context_t ctx, char *line)
+ {
+   gpa_open_settings_dialog (NULL, NULL);
+@@ -1191,7 +1191,7 @@
+      version     - Return the version of the program.
+      pid         - Return the process id of the server.
+  */
+-static int
++static gpg_error_t
+ cmd_getinfo (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1295,7 +1295,7 @@
+ 
+    Set the files on which to operate.
+  */
+-static int
++static gpg_error_t
+ cmd_file (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err = 0;
+@@ -1366,7 +1366,7 @@
+ 
+ 
+ /* ENCRYPT_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_encrypt_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1389,7 +1389,7 @@
+ 
+ 
+ /* SIGN_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_sign_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1412,7 +1412,7 @@
+ 
+ 
+ /* ENCRYPT_SIGN_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_encrypt_sign_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1474,7 +1474,7 @@
+ 
+ 
+ /* DECRYPT_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_decrypt_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1497,7 +1497,7 @@
+ 
+ 
+ /* VERIFY_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_verify_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1520,7 +1520,7 @@
+ 
+ 
+ /* DECRYPT_VERIFY_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_decrypt_verify_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1543,7 +1543,7 @@
+ 
+ 
+ /* IMPORT_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_import_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1567,7 +1567,7 @@
+ 
+ 
+ /* CHECKSUM_CREATE_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_checksum_create_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1591,7 +1591,7 @@
+ 
+ 
+ /* CHECKSUM_VERIFY_FILES --nohup  */
+-static int
++static gpg_error_t
+ cmd_checksum_verify_files (assuan_context_t ctx, char *line)
+ {
+   gpg_error_t err;
+@@ -1614,8 +1614,8 @@
+ }
+ 
+ 
+-static void
+-reset_notify (assuan_context_t ctx)
++static gpg_error_t
++reset_notify (assuan_context_t ctx, char *line)
+ {
+   conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+ 
+@@ -1639,6 +1639,7 @@
+   ctrl->session_number = 0;
+   xfree (ctrl->session_title);
+   ctrl->session_title = NULL;
++  return 0;
+ }
+ 
+ 
+@@ -1648,7 +1649,7 @@
+ {
+   static struct {
+     const char *name;
+-    int (*handler)(assuan_context_t, char *line);
++    assuan_handler_t handler;
+   } table[] = {
+     { "SESSION", cmd_session },
+     { "RECIPIENT", cmd_recipient },
+@@ -1681,7 +1682,8 @@
+ 
+   for (i=0; table[i].name; i++)
+     {
+-      rc = assuan_register_command (ctx, table[i].name, table[i].handler);
++      rc = assuan_register_command (ctx, table[i].name, table[i].handler,
++				    NULL);
+       if (rc)
+         return rc;
+     } 
+@@ -1692,7 +1694,7 @@
+ 
+ /* Prepare for a new connection on descriptor FD.  */
+ static assuan_context_t
+-connection_startup (int fd)
++connection_startup (assuan_fd_t fd)
+ {
+   gpg_error_t err;
+   assuan_context_t ctx;
+@@ -1700,7 +1702,16 @@
+ 
+   /* Get an Assuan context for the already accepted file descriptor
+      FD.  Allow descriptor passing.  */
+-  err = assuan_init_socket_server_ext (&ctx, ASSUAN_INT2FD(fd), 1|2);
++  err = assuan_new (&ctx);
++  if (err)
++    {
++      g_debug ("failed to initialize the new connection: %s",
++               gpg_strerror (err));
++      return NULL;
++    }
++
++  err = assuan_init_socket_server (ctx, fd, ASSUAN_SOCKET_SERVER_FDPASSING
++				   | ASSUAN_SOCKET_SERVER_ACCEPTED);
+   if (err)
+     {
+       g_debug ("failed to initialize the new connection: %s",
+@@ -1712,7 +1723,7 @@
+     {
+       g_debug ("failed to register commands with Assuan: %s",
+                gpg_strerror (err));
+-      assuan_deinit_server (ctx);
++      assuan_release (ctx);
+       return NULL;
+     }
+ 
+@@ -1736,8 +1747,8 @@
+     {
+       conn_ctrl_t ctrl = assuan_get_pointer (ctx);
+ 
+-      reset_notify (ctx);
+-      assuan_deinit_server (ctx);
++      reset_notify (ctx, NULL);
++      assuan_release (ctx);
+       g_free (ctrl);
+       connection_counter--;
+       if (!connection_counter && shutdown_pending)
+@@ -1805,14 +1816,23 @@
+         }
+       else
+         {
++	  int done = 0;
+           ctrl->in_command++;
+-          err = assuan_process_next (ctx);
++          err = assuan_process_next (ctx, &done);
+           ctrl->in_command--;
+-          g_debug ("assuan_process_next returned: %s",
+-                   err == -1? "EOF": gpg_strerror (err));
++	  if (err)
++	    {
++	      g_debug ("assuan_process_next returned: %s <%s>",
++		       gpg_strerror (err), gpg_strsource (err));
++	    }
++	  else
++	    {
++	      g_debug ("assuan_process_next returned: %s",
++		       done ? "done" : "success");
++	    }
+           if (gpg_err_code (err) == GPG_ERR_EAGAIN)
+             ; /* Ignore.  */
+-          else if (gpg_err_code (err) == GPG_ERR_EOF || err == -1)
++          else if (!err && done)
+             {
+               if (ctrl->cont_cmd)
+                 ctrl->client_died = 1; /* Need to delay the cleanup.  */
+@@ -1868,14 +1888,14 @@
+       g_debug ("error accepting connection: %s", strerror (errno));
+       goto leave;
+     }
+-  if (assuan_sock_check_nonce (ASSUAN_INT2FD(fd), &socket_nonce))
++  if (assuan_sock_check_nonce ((assuan_fd_t) fd, &socket_nonce))
+     {
+       g_debug ("new connection at fd %d refused", fd); 
+       goto leave;
+     }
+ 
+   g_debug ("new connection at fd %d", fd);
+-  ctx = connection_startup (fd);
++  ctx = connection_startup ((assuan_fd_t) fd);
+   if (!ctx)
+     goto leave;
+ 
+@@ -1911,7 +1931,7 @@
+ 
+  leave:
+   if (fd != -1)
+-    assuan_sock_close (ASSUAN_INT2FD (fd));
++    assuan_sock_close ((assuan_fd_t) fd);
+   return TRUE; /* Keep the listen_fd in the event loop.  */
+ }
+ 
+@@ -1929,7 +1949,7 @@
+   GIOChannel *channel;
+   unsigned int source_id;
+ 
+-  assuan_set_assuan_err_source (GPG_ERR_SOURCE_DEFAULT);
++  assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
+   
+   socket_name = g_build_filename (gnupg_homedir, "S.uiserver", NULL);
+   if (strlen (socket_name)+1 >= sizeof serv_addr.sun_path ) 
+@@ -1974,14 +1994,14 @@
+   g_free (socket_name);
+   socket_name = NULL;
+ 
+-  if (listen (ASSUAN_FD2INT (fd), 5) == -1)
++  if (listen ((int) fd, 5) == -1)
+     {
+       g_debug ("listen() failed: %s\n", strerror (errno));
+       assuan_sock_close (fd);
+       return;
+     }
+ #ifdef HAVE_W32_SYSTEM
+-  channel = g_io_channel_win32_new_socket (ASSUAN_FD2INT(fd));
++  channel = g_io_channel_win32_new_socket ((int) fd);
+ #else
+   channel = g_io_channel_unix_new (fd);
+ #endif
--- 2010-06-22-gpa.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4c208cd9.e058dc0a.32d5.ffffbcb3>