--- b/audio/jack/Makefile +++ b/audio/jack/Makefile @@ -2,8 +2,8 @@ # $FreeBSD$ PORTNAME= jackit -PORTVERSION= 0.125.0 -PORTREVISION= 11 +DISTVERSIONPREFIX= v +DISTVERSION= 1.9.16 CATEGORIES= audio MAINTAINER= multimedia@FreeBSD.org @@ -12,67 +12,58 @@ COMMENT= Low latency audio server LICENSE= GPLv2 LGPL21 LICENSE_COMB= multi -BROKEN_mips= fails to link: undefined reference to '__sync_add_and_fetch_4' -BROKEN_mips64= fails to link: undefined reference to '__sync_add_and_fetch_4' - LIB_DEPENDS= libsndfile.so:audio/libsndfile \ libsamplerate.so:audio/libsamplerate \ + libsysinfo.so:devel/libsysinfo \ libcelt0.so:audio/celt -USES= autoreconf compiler:c11 gmake pathfix pkgconfig libtool localbase bdb +USES= waf compiler:c11 pkgconfig shebangfix python:3.4+,build USE_GITHUB= yes - -GH_ACCOUNT= jackaudio -GH_PROJECT= jack1 -GH_TAGNAME= 90f9dd3 -GH_TUPLE= jackaudio:headers:07f1ecf:h/jack -GH_TUPLE+= jackaudio:tools:8d13c31:t/tools -GH_TUPLE+= jackaudio:example-clients:7fa0890:e/example-clients +GH_ACCOUNT= mekanix +GH_PROJECT= jack2 +GH_TAGNAME= a60dfed0a0d5bd8d0222d4186a10d900ce7c51e6 USE_LDCONFIG= yes -GNU_CONFIGURE= yes + +CFLAGS+= -fPIC +CPPFLAGS+= -I${LOCALBASE}/include + +SHEBANG_FILES= tools/jack_control +SHEBANG_LANG= python3 USE_RC_SUBR= jackd -CONFIGURE_ARGS= --disable-portaudio \ - --enable-optimize \ - --enable-force-install \ - --with-default-tmpdir=/tmp - -CFLAGS+= -I${BDB_INCLUDE_DIR} -LIBS+= -L${BDB_LIB_DIR} -INSTALL_TARGET= install-strip - -OPTIONS_DEFINE= ALSA DOXYGEN READLINE SNDIO COOKEDMODE -OPTIONS_DEFINE_i386= DYNSIMD -OPTIONS_DEFINE_amd64= DYNSIMD -OPTIONS_DEFAULT= READLINE COOKEDMODE -OPTIONS_DEFAULT_i386= DYNSIMD -OPTIONS_DEFAULT_amd64= DYNSIMD +CONFIGURE_ARGS+= --celt=yes --sndfile=yes --samplerate=yes + +OPTIONS_DEFINE= ALSA DBUS READLINE OPUS +OPTIONS_DEFAULT= DBUS READLINE OPUS OPTIONS_SUB= yes -COOKEDMODE_DESC= Use OSS COOKEDMODE (OSS driver is broken without it) -DYNSIMD_DESC= Use dynamic SIMD selection (only i386/amd64) ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib -ALSA_CONFIGURE_ENABLE= alsa +ALSA_CONFIGURE_OFF= --alsa=no +ALSA_CONFIGURE_ON= --alsa=yes -READLINE_USES= readline - -DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen -DOXYGEN_CONFIGURE_ENV_OFF= ac_cv_prog_HAVE_DOXYGEN="false" +DBUS_CONFIGURE_ON= --dbus --classic --autostart=dbus +DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus \ + libexpat.so:textproc/expat2 +DBUS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dbus>0:devel/py-dbus@${PY_FLAVOR} -READLINE_CONFIGURE_ENV_OFF= ac_cv_lib_readline_readline=no \ - ac_cv_header_readline_chardefs_h=no - -SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio -SNDIO_CONFIGURE_ENABLE= sndio +READLINE_USES= readline +READLINE_CONFIGURE_ON= --readline=yes +READLINE_CONFIGURE_OFF= --readline=no +READLINE_LDFLAGS= -lreadline -COOKEDMODE_CFLAGS= -DOPTION_COOKEDMODE +OPUS_LIB_DEPENDS= libopus.so:audio/opus +OPUS_CONFIGURE_ON= --opus=yes +OPUS_CONFIGURE_OFF= --opus=no -DYNSIMD_CONFIGURE_ENABLE=dynsimd +.include -post-patch: - @${RM} ${WRKSRC}/doc/reference/html/* +.if ${PORT_OPTIONS:MDBUS} +PLIST_SUB+= CLASSIC="@comment " +.else +PLIST_SUB+= CLASSIC="" +.endif -post-build: - @${RM} ${WRKSRC}/doc/reference/html/dir__2F* +post-extract: + echo '#define SVN_VERSION "${GH_TAGNAME}"' > ${WRKSRC}/svnversion.h -.include +.include --- b/audio/jack/distinfo +++ b/audio/jack/distinfo @@ -1,9 +1,3 @@ -TIMESTAMP = 1500250305 -SHA256 (jackaudio-jack1-0.125.0-90f9dd3_GH0.tar.gz) = e0ba7dcf58fa934af51329cd329f466fe8d2bc180d07e4ab8be21ed80c60aa8a -SIZE (jackaudio-jack1-0.125.0-90f9dd3_GH0.tar.gz) = 392822 -SHA256 (jackaudio-headers-07f1ecf_GH0.tar.gz) = 04a3bb87d278923985ba44045b7a27439c90776cc5d4a6016d062fc7a6aa5023 -SIZE (jackaudio-headers-07f1ecf_GH0.tar.gz) = 36704 -SHA256 (jackaudio-tools-8d13c31_GH0.tar.gz) = 23e6bc60c8cef4283677206f2687a408367203a725c091c923f48554ae6e8cc8 -SIZE (jackaudio-tools-8d13c31_GH0.tar.gz) = 45544 -SHA256 (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 79e2ac1d38d7d77b1afb71aa97414c339e8c00613a5d9b725861232b5c995223 -SIZE (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 16174 +TIMESTAMP = 1607364220 +SHA256 (mekanix-jack2-v1.9.16-a60dfed0a0d5bd8d0222d4186a10d900ce7c51e6_GH0.tar.gz) = a4e3af85541c0d8e23f3bf336af291c82764ad0c03d485ea12984257911a798b +SIZE (mekanix-jack2-v1.9.16-a60dfed0a0d5bd8d0222d4186a10d900ce7c51e6_GH0.tar.gz) = 978564 --- a/audio/jack/files/patch-configure.ac +++ /dev/null @@ -1,10 +0,0 @@ ---- configure.ac.orig 2017-01-10 10:20:51 UTC -+++ configure.ac -@@ -172,6 +172,7 @@ case "${host_os}" in - # barrier code, this may be fixed in 5.3, stay tuned. - USE_BARRIER="no" - USE_MD5SUM=0 -+ JACK_DO_NOT_MLOCK=0 - ;; - openbsd*) - # pthread_barrier* not implemented --- a/audio/jack/files/patch-drivers_alsa_memops.c +++ /dev/null @@ -1,11 +0,0 @@ ---- drivers/alsa/memops.c.orig 2016-02-23 15:13:53 UTC -+++ drivers/alsa/memops.c -@@ -30,7 +30,7 @@ - #include - #include - #include --#include -+#include - - #include "memops.h" - --- a/audio/jack/files/patch-drivers_oss_oss__driver.c +++ /dev/null @@ -1,258 +0,0 @@ ---- drivers/oss/oss_driver.c.orig 2017-01-10 10:20:51 UTC -+++ drivers/oss/oss_driver.c -@@ -23,6 +23,7 @@ - - #include - -+#define __BSD_VISIBLE 1 - #ifdef USE_BARRIER - /* - * POSIX conformance level should be globally defined somewhere, possibly -@@ -172,7 +173,9 @@ static void set_period_size (oss_driver_ - ((double)driver->period_size / - (double)driver->sample_rate) * 1e6; - driver->last_wait_ust = 0; -- driver->last_periodtime = driver->engine->get_microseconds (); -+ driver->last_periodtime = driver->engine ? -+ driver->engine->get_microseconds() : -+ jack_get_microseconds(); - driver->next_periodtime = 0; - driver->iodelay = 0.0F; - } -@@ -180,7 +183,9 @@ static void set_period_size (oss_driver_ - - static inline void update_times (oss_driver_t *driver) - { -- driver->last_periodtime = driver->engine->get_microseconds (); -+ driver->last_periodtime = driver->engine ? -+ driver->engine->get_microseconds() : -+ jack_get_microseconds(); - if (driver->next_periodtime > 0) { - driver->iodelay = (float) - ((long double)driver->last_periodtime - -@@ -211,6 +216,7 @@ static void copy_and_convert_in (jack_sa - int dstidx; - signed short *s16src = (signed short*)src; - signed int *s32src = (signed int*)src; -+ unsigned char *s24src = (unsigned char *) src; - double *f64src = (double*)src; - jack_sample_t scale; - -@@ -225,10 +231,13 @@ static void copy_and_convert_in (jack_sa - } - break; - case 24: -- scale = 1.0f / 0x7fffff; -+ scale = 1.0f / 0x7fffffff; - for (dstidx = 0; dstidx < nframes; dstidx++) { - dst[dstidx] = (jack_sample_t) -- s32src[srcidx] * scale; -+ ((signed int)( -+ (s24src[3 * srcidx + 2] << 24) | -+ (s24src[3 * srcidx + 1] << 16) | -+ (s24src[3 * srcidx + 0] << 8))) * scale; - srcidx += chcount; - } - break; -@@ -256,6 +265,7 @@ static void copy_and_convert_out (void * - int srcidx; - int dstidx; - signed short *s16dst = (signed short*)dst; -+ unsigned char *s24dst = (unsigned char *) dst; - signed int *s32dst = (signed int*)dst; - double *f64dst = (double*)dst; - jack_sample_t scale; -@@ -273,12 +283,15 @@ static void copy_and_convert_out (void * - } - break; - case 24: -- scale = 0x7fffff; -+ scale = 0x7fffffff; - for (srcidx = 0; srcidx < nframes; srcidx++) { -- s32dst[dstidx] = (signed int) -- (src[srcidx] >= 0.0f) ? -- (src[srcidx] * scale + 0.5f) : -- (src[srcidx] * scale - 0.5f); -+ signed int sample = -+ (src[srcidx] >= 0.0f) ? -+ (src[srcidx] * scale + 0.5f) : -+ (src[srcidx] * scale - 0.5f) ; -+ s24dst[3*dstidx + 2] = sample >> 24; -+ s24dst[3*dstidx + 1] = sample >> 16; -+ s24dst[3*dstidx + 0] = sample >> 8; - dstidx += chcount; - } - break; -@@ -429,7 +442,11 @@ static int oss_driver_detach (oss_driver - - static int oss_driver_start (oss_driver_t *driver) - { -- int flags = 0; -+#if defined(OPTION_COOKEDMODE) -+ int cookedmode = 1; -+#else -+ int cookedmode = 0; -+#endif - int format; - int channels; - int samplerate; -@@ -441,19 +458,7 @@ static int oss_driver_start (oss_driver_ - const char *indev = driver->indev; - const char *outdev = driver->outdev; - -- switch (driver->bits) { -- case 24: -- case 32: -- samplesize = sizeof(int); -- break; -- case 64: -- samplesize = sizeof(double); -- break; -- case 16: -- default: -- samplesize = sizeof(short); -- break; -- } -+ samplesize = driver->bits / 8; - driver->trigger = 0; - if (strcmp (indev, outdev) != 0) { - if (driver->capture_channels > 0) { -@@ -464,7 +469,7 @@ static int oss_driver_start (oss_driver_ - indev, __FILE__, __LINE__, errno); - } - #ifndef OSS_NO_COOKED_MODE -- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); -+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); - #endif - fragsize = driver->period_size * - driver->capture_channels * samplesize; -@@ -479,7 +484,7 @@ static int oss_driver_start (oss_driver_ - outdev, __FILE__, __LINE__, errno); - } - #ifndef OSS_NO_COOKED_MODE -- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); -+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); - #endif - fragsize = driver->period_size * - driver->playback_channels * samplesize; -@@ -497,7 +502,7 @@ static int oss_driver_start (oss_driver_ - return -1; - } - #ifndef OSS_NO_COOKED_MODE -- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); -+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); - #endif - } else if (driver->capture_channels == 0 && - driver->playback_channels != 0) { -@@ -510,7 +515,7 @@ static int oss_driver_start (oss_driver_ - return -1; - } - #ifndef OSS_NO_COOKED_MODE -- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); -+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); - #endif - } else { - infd = outfd = open (indev, O_RDWR | O_EXCL); -@@ -521,7 +526,7 @@ static int oss_driver_start (oss_driver_ - return -1; - } - #ifndef OSS_NO_COOKED_MODE -- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); -+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); - #endif - } - if (infd >= 0 && outfd >= 0) { -@@ -705,7 +710,9 @@ static int oss_driver_start (oss_driver_ - sem_post (&driver->sem_start); - } - -- driver->last_periodtime = driver->engine->get_microseconds (); -+ driver->last_periodtime = driver->engine ? -+ driver->engine->get_microseconds() : -+ jack_get_microseconds(); - driver->next_periodtime = 0; - driver->iodelay = 0.0F; - -@@ -1143,6 +1150,23 @@ jack_driver_t * driver_initialize (jack_ - pnode = jack_slist_next (pnode); - } - -+ switch (bits) -+ { -+ case 16: /* native-endian 16-bit integer */ -+ driver->format = AFMT_S16_NE; -+ break; -+ case 24: /* little-endian 24-bit integer */ -+ driver->format = AFMT_S24_LE; -+ break; -+ case 32: /* native-endian 32-bit integer */ -+ driver->format = AFMT_S32_NE; -+ break; -+ default: -+ free(driver); -+ jack_error("OSS: invalid number of bits: %d", -+ __FILE__, __LINE__, bits); -+ return NULL; -+ } - driver->sample_rate = sample_rate; - driver->period_size = period_size; - driver->nperiods = nperiods; -@@ -1163,58 +1187,6 @@ jack_driver_t * driver_initialize (jack_ - } - driver->infd = -1; - driver->outfd = -1; -- switch (driver->bits) { --# ifndef OSS_ENDIAN --# ifdef __GNUC__ --# if (defined(__i386__) || defined(__alpha__) || defined(__arm__) || defined(__x86_64__) || (defined(__sh__) && !defined(__LITTLE_ENDIAN__))) --# define OSS_LITTLE_ENDIAN 1234 --# define OSS_ENDIAN OSS_LITTLE_ENDIAN --# else --# define OSS_BIG_ENDIAN 4321 --# define OSS_ENDIAN OSS_BIG_ENDIAN --# endif --# else /* __GNUC__ */ --# if (defined(_AIX) || defined(AIX) || defined(sparc) || defined(__hppa) || defined(PPC) || defined(__powerpc__) && !defined(i386) && !defined(__i386) && !defined(__i386__)) --# define OSS_BIG_ENDIAN 4321 --# define OSS_ENDIAN OSS_BIG_ENDIAN --# else --# define OSS_LITTLE_ENDIAN 1234 --# define OSS_ENDIAN OSS_LITTLE_ENDIAN --# endif --# endif /* __GNUC__ */ --# endif /* OSS_ENDIAN */ --# if (OSS_ENDIAN == 1234) -- /* little-endian architectures */ -- case 24: /* little-endian LSB aligned 24-bits in 32-bits integer */ -- driver->format = 0x00008000; -- break; -- case 32: /* little-endian 32-bit integer */ -- driver->format = 0x00001000; -- break; -- case 64: /* native-endian 64-bit float */ -- driver->format = 0x00004000; -- break; -- case 16: /* little-endian 16-bit integer */ -- default: -- driver->format = 0x00000010; -- break; -- /* big-endian architectures */ --# else -- case 24: /* big-endian LSB aligned 24-bits in 32-bits integer */ -- break; -- driver->format = 0x00010000; -- case 32: /* big-endian 32-bit integer */ -- driver->format = 0x00002000; -- break; -- case 64: /* native-endian 64-bit float */ -- driver->format = 0x00004000; -- break; -- case 16: /* big-endian 16-bit integer */ -- default: -- driver->format = 0x00000020; --# endif -- } -- - driver->indevbuf = driver->outdevbuf = NULL; - - driver->capture_ports = NULL; --- a/audio/jack/files/patch-jack.pc.in +++ /dev/null @@ -1,9 +0,0 @@ ---- jack.pc.in.orig 2013-10-04 00:45:25 UTC -+++ jack.pc.in -@@ -6,5 +6,5 @@ includedir=@includedir@ - Name: jack - Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server - Version: @JACK_VERSION@ --Libs: -L${libdir} -ljack -lpthread @OS_LDFLAGS@ -+Libs: -L${libdir} -ljack -pthread - Cflags: -I${includedir} --- a/audio/jack/files/patch-jackd_engine.c +++ /dev/null @@ -1,11 +0,0 @@ ---- jackd/engine.c.orig 2016-09-14 17:41:53 UTC -+++ jackd/engine.c -@@ -1435,7 +1435,7 @@ handle_external_client_request (jack_eng - if ((r = read (client->request_fd, &req, sizeof(req))) - < (ssize_t)sizeof(req)) { - if (r == 0) { --#if defined(JACK_USE_MACH_THREADS) || defined(__OpenBSD__) -+#if 1 - /* poll is implemented using - select (see the macosx/fakepoll - code). When the socket is closed --- a/audio/jack/files/patch-jackd_jackd.c +++ /dev/null @@ -1,22 +0,0 @@ ---- jackd/jackd.c.orig 2017-07-17 17:10:09 UTC -+++ jackd/jackd.c -@@ -521,11 +521,17 @@ jack_drivers_load () - - static void copyright (FILE* file) - { -- fprintf (file, "jackd " VERSION "\n" -+ fprintf (file, "jackd " VERSION " (COOKEDMODE=%s)\n" - "Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.\n" - "jackd comes with ABSOLUTELY NO WARRANTY\n" - "This is free software, and you are welcome to redistribute it\n" -- "under certain conditions; see the file COPYING for details\n\n"); -+ "under certain conditions; see the file COPYING for details\n\n", -+#if defined(OPTION_COOKEDMODE) -+ "on" -+#else -+ "off" -+#endif -+ ); - } - - static void usage (FILE *file) --- a/audio/jack/files/patch-libjack_client.c +++ /dev/null @@ -1,190 +0,0 @@ ---- libjack/client.c.orig 2017-01-10 10:20:51 UTC -+++ libjack/client.c -@@ -68,6 +68,30 @@ - static pthread_mutex_t client_lock; - static pthread_cond_t client_ready; - -+/* -+ * The following read/write wrappers handle the case of interruption -+ * by system signals: -+ */ -+static int -+read_retry(int fd, void *dst, int size) -+{ -+ int error; -+ do { -+ error = read(fd, dst, size); -+ } while (error == -1 && errno == EINTR); -+ return (error); -+} -+ -+static int -+write_retry(int fd, const void *src, int size) -+{ -+ int error; -+ do { -+ error = write(fd, src, size); -+ } while (error == -1 && errno == EINTR); -+ return (error); -+} -+ - static int - jack_client_close_aux(jack_client_t *client); - -@@ -251,7 +275,7 @@ oop_client_deliver_request (void *ptr, j - int wok, rok; - jack_client_t *client = (jack_client_t*)ptr; - -- wok = (write (client->request_fd, req, sizeof(*req)) -+ wok = (write_retry (client->request_fd, req, sizeof(*req)) - == sizeof(*req)); - - /* if necessary, add variable length key data after a PropertyChange request -@@ -259,7 +283,7 @@ oop_client_deliver_request (void *ptr, j - - if (req->type == PropertyChangeNotify) { - if (req->x.property.keylen) { -- if (write (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { -+ if (write_retry (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { - jack_error ("cannot send property key of length %d to server", - req->x.property.keylen); - req->status = -1; -@@ -268,7 +292,7 @@ oop_client_deliver_request (void *ptr, j - } - } - -- rok = (read (client->request_fd, req, sizeof(*req)) -+ rok = (read_retry (client->request_fd, req, sizeof(*req)) - == sizeof(*req)); - - if (wok && rok) { /* everything OK? */ -@@ -837,14 +861,14 @@ server_event_connect (jack_client_t *cli - - jack_uuid_copy (&req.client_id, client->control->uuid); - -- if (write (fd, &req, sizeof(req)) != sizeof(req)) { -- jack_error ("cannot write event connect request to server (%s)", -+ if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { -+ jack_error ("cannot write_retry event connect request to server (%s)", - strerror (errno)); - close (fd); - return -1; - } - -- if (read (fd, &res, sizeof(res)) != sizeof(res)) { -+ if (read_retry (fd, &res, sizeof(res)) != sizeof(res)) { - jack_error ("cannot read event connect result from server (%s)", - strerror (errno)); - close (fd); -@@ -1109,14 +1133,14 @@ jack_request_client (ClientType type, - snprintf (req.object_data, sizeof(req.object_data), - "%s", va->load_init); - -- if (write (*req_fd, &req, sizeof(req)) != sizeof(req)) { -+ if (write_retry (*req_fd, &req, sizeof(req)) != sizeof(req)) { - jack_error ("cannot send request to jack server (%s)", - strerror (errno)); - *status |= (JackFailure | JackServerError); - goto fail; - } - -- if (read (*req_fd, res, sizeof(*res)) != sizeof(*res)) { -+ if (read_retry (*req_fd, res, sizeof(*res)) != sizeof(*res)) { - - if (errno == 0) { - /* server shut the socket */ -@@ -1512,7 +1536,7 @@ jack_internal_client_close (const char * - return; - } - -- if (write (fd, &req, sizeof(req)) != sizeof(req)) { -+ if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { - jack_error ("cannot deliver ClientUnload request to JACK " - "server."); - } -@@ -1648,7 +1672,7 @@ jack_session_notify (jack_client_t* clie - - request.x.session.type = code; - -- if ( (write (client->request_fd, &request, sizeof(request)) -+ if ( (write_retry (client->request_fd, &request, sizeof(request)) - != sizeof(request)) ) { - jack_error ("cannot send request type %d to server", - request.type); -@@ -1658,7 +1682,7 @@ jack_session_notify (jack_client_t* clie - while ( 1 ) { - jack_uuid_t uid; - -- if (read (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { -+ if (read_retry (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { - jack_error ("cannot read result for request type %d from" - " server (%s)", request.type, strerror (errno)); - goto out; -@@ -1680,19 +1704,19 @@ jack_session_notify (jack_client_t* clie - break; - } - -- if (read (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) -+ if (read_retry (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) - != JACK_CLIENT_NAME_SIZE) { - jack_error ("cannot read result for request type %d from" - " server (%s)", request.type, strerror (errno)); - goto out; - } -- if (read (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) -+ if (read_retry (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) - != JACK_PORT_NAME_SIZE) { - jack_error ("cannot read result for request type %d from" - " server (%s)", request.type, strerror (errno)); - goto out; - } -- if (read (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) -+ if (read_retry (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) - != sizeof(retval[num_replies - 1].flags) ) { - jack_error ("cannot read result for request type %d from" - " server (%s)", request.type, strerror (errno)); -@@ -1811,7 +1835,7 @@ jack_client_process_events (jack_client_ - /* server has sent us an event. process the - * event and reply */ - -- if (read (client->event_fd, &event, sizeof(event)) -+ if (read_retry (client->event_fd, &event, sizeof(event)) - != sizeof(event)) { - jack_error ("cannot read server event (%s)", - strerror (errno)); -@@ -1821,7 +1845,7 @@ jack_client_process_events (jack_client_ - if (event.type == PropertyChange) { - if (event.y.key_size) { - key = (char*)malloc (event.y.key_size); -- if (read (client->event_fd, key, event.y.key_size) != -+ if (read_retry (client->event_fd, key, event.y.key_size) != - event.y.key_size) { - jack_error ("cannot read property change key (%s)", - strerror (errno)); -@@ -1940,7 +1964,7 @@ jack_client_process_events (jack_client_ - DEBUG ("client has dealt with the event, writing " - "response on event fd"); - -- if (write (client->event_fd, &status, sizeof(status)) -+ if (write_retry (client->event_fd, &status, sizeof(status)) - != sizeof(status)) { - jack_error ("cannot send event response to " - "engine (%s)", strerror (errno)); -@@ -1960,7 +1984,7 @@ jack_wake_next_client (jack_client_t* cl - int pret = 0; - char c = 0; - -- if (write (client->graph_next_fd, &c, sizeof(c)) -+ if (write_retry (client->graph_next_fd, &c, sizeof(c)) - != sizeof(c)) { - DEBUG ("cannot write byte to fd %d", client->graph_next_fd); - jack_error ("cannot continue execution of the " -@@ -1988,7 +2012,7 @@ jack_wake_next_client (jack_client_t* cl - } - - if (pret > 0 && (pfds[0].revents & POLLIN)) { -- if (read (client->graph_wait_fd, &c, sizeof(c)) -+ if (read_retry (client->graph_wait_fd, &c, sizeof(c)) - != sizeof(c)) { - jack_error ("cannot complete execution of the " - "processing graph (%s)", strerror (errno)); --- a/audio/jack/files/patch-libjack_port.c +++ /dev/null @@ -1,26 +0,0 @@ ---- libjack/port.c.orig 2019-01-02 01:51:31 UTC -+++ libjack/port.c -@@ -630,13 +630,22 @@ jack_port_get_buffer (jack_port_t *port, jack_nframes_ - size_t - jack_port_type_buffer_size (jack_port_type_info_t* port_type_info, jack_nframes_t nframes) - { -+ size_t size; -+ - if ( port_type_info->buffer_scale_factor < 0 ) { - return port_type_info->buffer_size; - } - -- return port_type_info->buffer_scale_factor -+ size = port_type_info->buffer_scale_factor - * sizeof(jack_default_audio_sample_t) - * nframes; -+ -+#ifdef USE_DYNSIMD -+ /* Round up to the next multiple of 16 bytes, align buffers for SIMD. */ -+ size = (size + 15) & (~ (size_t)0x0f); -+#endif /* USE_DYNSIMD */ -+ -+ return size; - } - - int --- b/audio/jack/pkg-message +++ b/audio/jack/pkg-message @@ -2,30 +2,36 @@ { message: <