Download raw body.
mail/isync: update to 1.5.0
Release notes: https://sourceforge.net/projects/isync/files/isync/1.5.0/
Upstream added new printf(3) %n code and hardcoded optimizations...
Upstream now also forks during sync operation soley to call getaddrinfo(3)
asynchronously; luckily the commit reverts cleanly on top of 1.5.0, which
I do to avoid pledging "proc" for all use cases.
https://sourceforge.net/p/isync/isync/ci/ec50c55c36887b86b0143a265acae4b22d117fe9
Sourceforge seems to lack raw patch links, so I mirrored it.
Keeps working for me, please test with your setup.
Feedback?
Index: Makefile
===================================================================
RCS file: /cvs/ports/mail/isync/Makefile,v
diff -u -p -r1.58 Makefile
--- Makefile 9 Jan 2024 15:59:25 -0000 1.58
+++ Makefile 18 Aug 2024 10:34:16 -0000
@@ -1,7 +1,6 @@
COMMENT= synchronize IMAP4 and maildir mailboxes
-DISTNAME= isync-1.4.4
-REVISION= 3
+DISTNAME= isync-1.5.0
CATEGORIES= mail
SITES= ${SITE_SOURCEFORGE:=isync/}
@@ -9,6 +8,12 @@ SITES= ${SITE_SOURCEFORGE:=isync/}
HOMEPAGE= https://isync.sourceforge.net/
MAINTAINER= Klemens Nanni <kn@openbsd.org>
+
+# Backout "make DNS lookup asynchronous" doing fork(2) for async getaddrinfo(3)
+# to avoid pledging "proc".
+SITES.fix= https://git.sr.ht/~klemens/isync/commit/
+PATCHFILES.fix= ec50c55c36887b86b0143a265acae4b22d117fe9.patch
+PATCH_DIST_STRIP= -R -p1
# GPLv2+
PERMIT_PACKAGE= Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/mail/isync/distinfo,v
diff -u -p -r1.21 distinfo
--- distinfo 3 Dec 2021 14:44:33 -0000 1.21
+++ distinfo 18 Aug 2024 10:23:38 -0000
@@ -1,2 +1,4 @@
-SHA256 (isync-1.4.4.tar.gz) = fDJziU8i6YMwozAFHp2UL9n/vAK5GVLC8YlqXDfnAP8=
-SIZE (isync-1.4.4.tar.gz) = 340544
+SHA256 (ec50c55c36887b86b0143a265acae4b22d117fe9.patch) = IKdVbQZaW81x3MlvdxGlHB4+SAuk5w/u36xtwSkpC8U=
+SHA256 (isync-1.5.0.tar.gz) = oMgeEJOHvyedoWFFMQM5nneUav7PXFH5QTxedzVX940=
+SIZE (ec50c55c36887b86b0143a265acae4b22d117fe9.patch) = 12430
+SIZE (isync-1.5.0.tar.gz) = 412925
Index: patches/patch-src_common_h
===================================================================
RCS file: patches/patch-src_common_h
diff -N patches/patch-src_common_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_common_h 18 Aug 2024 10:08:18 -0000
@@ -0,0 +1,14 @@
+Remove hardcoded optimization level
+
+Index: src/common.h
+--- src/common.h.orig
++++ src/common.h
+@@ -96,7 +96,7 @@ typedef unsigned long ulong;
+ # define ATTR_UNUSED __attribute__((unused))
+ # define ATTR_NORETURN __attribute__((noreturn))
+ # define ATTR_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+-# define ATTR_OPTIMIZE __attribute__((optimize("2")))
++# define ATTR_OPTIMIZE
+ #else
+ # define ATTR_UNUSED
+ # define ATTR_NORETURN
Index: patches/patch-src_config_c
===================================================================
RCS file: patches/patch-src_config_c
diff -N patches/patch-src_config_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_config_c 3 Aug 2024 10:21:58 -0000
@@ -0,0 +1,36 @@
+Neuter printf(3) %n
+
+Index: src/config.c
+--- src/config.c.orig
++++ src/config.c
+@@ -446,11 +446,15 @@ load_config( const char *where )
+ if (!where) {
+ int path_len, path_len2;
+ const char *config_home = getenv( "XDG_CONFIG_HOME" );
+- if (config_home)
+- nfsnprintf( path, sizeof(path), "%s/%nisyncrc", config_home, &path_len );
+- else
+- nfsnprintf( path, sizeof(path), "%s/.config/%nisyncrc", Home, &path_len );
+- nfsnprintf( path2, sizeof(path2), "%s/%n.mbsyncrc", Home, &path_len2 );
++ if (config_home) {
++ nfsnprintf( path, sizeof(path), "%s/isyncrc", config_home );
++ path_len = strlen( config_home ) + strlen( "/" );
++ } else {
++ nfsnprintf( path, sizeof(path), "%s/.config/isyncrc", Home );
++ path_len = strlen( Home ) + strlen( "/.config/" );
++ }
++ nfsnprintf( path2, sizeof(path2), "%s/.mbsyncrc", Home );
++ path_len2 = strlen( Home ) + strlen( "/" );
+ struct stat st;
+ int ex = !lstat( path, &st );
+ int ex2 = !lstat( path2, &st );
+@@ -466,7 +470,8 @@ load_config( const char *where )
+ } else {
+ const char *sl = strrchr( where, '/' );
+ if (!sl) {
+- nfsnprintf( path, sizeof(path), "./%n%s", &cfile.path_len, where );
++ nfsnprintf( path, sizeof(path), "./%s", where );
++ cfile.path_len = strlen( "./" );
+ cfile.file = path;
+ } else {
+ cfile.path_len = sl - where + 1;
Index: patches/patch-src_drv_imap_c
===================================================================
RCS file: /cvs/ports/mail/isync/patches/patch-src_drv_imap_c,v
diff -u -p -r1.12 patch-src_drv_imap_c
--- patches/patch-src_drv_imap_c 11 Mar 2022 19:34:38 -0000 1.12
+++ patches/patch-src_drv_imap_c 3 Aug 2024 08:30:03 -0000
@@ -3,7 +3,7 @@ Use pledge.
Index: src/drv_imap.c
--- src/drv_imap.c.orig
+++ src/drv_imap.c
-@@ -45,6 +45,8 @@
+@@ -22,6 +22,8 @@
# include <Security/Security.h>
#endif
@@ -12,9 +12,9 @@ Index: src/drv_imap.c
#ifdef HAVE_LIBSSL
enum { SSL_None, SSL_STARTTLS, SSL_IMAPS };
#endif
-@@ -3768,6 +3770,8 @@ imap_parse_store( conffile_t *cfg, store_conf_t **stor
- #endif
+@@ -3984,6 +3986,8 @@ imap_parse_store( conffile_t *cfg, store_conf_t **stor
143;
+ }
}
+ if (server->sconf.tunnel || server->user_cmd || server->pass_cmd)
+ needs_proc_exec = 1;
Index: patches/patch-src_main_c
===================================================================
RCS file: /cvs/ports/mail/isync/patches/patch-src_main_c,v
diff -u -p -r1.11 patch-src_main_c
--- patches/patch-src_main_c 11 Mar 2022 19:34:38 -0000 1.11
+++ patches/patch-src_main_c 18 Aug 2024 10:38:05 -0000
@@ -3,16 +3,16 @@ Use pledge.
Index: src/main.c
--- src/main.c.orig
+++ src/main.c
-@@ -125,6 +125,8 @@ PACKAGE " " VERSION " - mailbox synchronizer\n"
- exit( code );
- }
+@@ -14,6 +14,8 @@
+ # include <sys/prctl.h>
+ #endif
+int needs_proc_exec = 0;
+
- static void ATTR_PRINTFLIKE(1, 2)
- debug( const char *msg, ... )
+ static void ATTR_NORETURN
+ version( void )
{
-@@ -757,6 +759,36 @@ main( int argc, char **argv )
+@@ -560,6 +562,36 @@ main( int argc, char **argv )
if (load_config( config ))
return 1;
@@ -47,5 +47,5 @@ Index: src/main.c
+ }
+ }
- if (!channels) {
- fputs( "No channels defined. Try 'man " EXE "'\n", stderr );
+ signal( SIGPIPE, SIG_IGN );
+
mail/isync: update to 1.5.0