From 524ca4f82420dd7c0d23b2ffd8a0587b2abf04c0 Mon Sep 17 00:00:00 2001 From: Juergen Lock Date: Mon, 27 Oct 2014 19:31:53 +0000 Subject: [PATCH] - Update to 0.124.1 . - Add patch to fix handling of signals during read/write operations. PR: 194545 Submitted by: hselasky --- audio/jack/Makefile | 12 +- audio/jack/distinfo | 4 +- .../patch-drivers-alsa-midi-alsa_rawmidi.c | 11 - audio/jack/files/patch-libjack-client.c | 189 ++++++++++++++++++ audio/jack/pkg-plist | 28 ++- 5 files changed, 216 insertions(+), 28 deletions(-) delete mode 100644 audio/jack/files/patch-drivers-alsa-midi-alsa_rawmidi.c create mode 100644 audio/jack/files/patch-libjack-client.c diff --git a/audio/jack/Makefile b/audio/jack/Makefile index 7948f1732604..50b337e25cad 100644 --- a/audio/jack/Makefile +++ b/audio/jack/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= jackit -PORTVERSION= 0.121.3 -PORTREVISION= 5 +PORTVERSION= 0.124.1 CATEGORIES= audio MASTER_SITES= http://jackaudio.org/downloads/ DISTNAME= jack-audio-connection-kit-${PORTVERSION} @@ -17,16 +16,20 @@ LICENSE_COMB= multi LIB_DEPENDS= libportaudio.so:${PORTSDIR}/audio/portaudio \ libsndfile.so:${PORTSDIR}/audio/libsndfile \ libsamplerate.so:${PORTSDIR}/audio/libsamplerate \ - libcelt0.so:${PORTSDIR}/audio/celt + libcelt0.so:${PORTSDIR}/audio/celt \ + libuuid.so:${PORTSDIR}/misc/e2fsprogs-libuuid GNU_CONFIGURE= yes USE_LDCONFIG= yes USES= gmake pathfix pkgconfig libtool:keepla +USE_BDB= 48 CONFIGURE_ARGS= --enable-portaudio \ --with-default-tmpdir=/tmp + +CFLAGS+= -I${BDB_INCLUDE_DIR} CPPFLAGS+= -I${LOCALBASE}/include -LIBS+= -L${LOCALBASE}/lib +LIBS+= -L${LOCALBASE}/lib -L${BDB_LIB_DIR} INSTALL_TARGET= install-strip LATEST_LINK= jack @@ -55,6 +58,7 @@ CONFIGURE_ENV+= ac_cv_lib_readline_readline=no \ post-patch: @${REINPLACE_CMD} -e 's|define USE_MLOCK|undef USE_MLOCK|' \ + -e 's|alloca.h||' \ ${WRKSRC}/configure @${REINPLACE_CMD} -e "s,-lpthread,-pthread," \ ${WRKSRC}/configure ${WRKSRC}/libjack/Makefile.in \ diff --git a/audio/jack/distinfo b/audio/jack/distinfo index f6722f62eee7..700ef355d68e 100644 --- a/audio/jack/distinfo +++ b/audio/jack/distinfo @@ -1,2 +1,2 @@ -SHA256 (jack-audio-connection-kit-0.121.3.tar.gz) = b7095d3deabeecd19772b37241e89c6c79de6afd6c031ba7567513cfe51beafa -SIZE (jack-audio-connection-kit-0.121.3.tar.gz) = 1083545 +SHA256 (jack-audio-connection-kit-0.124.1.tar.gz) = eb42df6065576f08feeeb60cb9355dce4eb53874534ad71534d7aa31bae561d6 +SIZE (jack-audio-connection-kit-0.124.1.tar.gz) = 1113456 diff --git a/audio/jack/files/patch-drivers-alsa-midi-alsa_rawmidi.c b/audio/jack/files/patch-drivers-alsa-midi-alsa_rawmidi.c deleted file mode 100644 index 3d74601b7f64..000000000000 --- a/audio/jack/files/patch-drivers-alsa-midi-alsa_rawmidi.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./drivers/alsa-midi/alsa_rawmidi.c.orig 2008-05-29 16:26:07.000000000 +0400 -+++ ./drivers/alsa-midi/alsa_rawmidi.c 2012-05-16 20:10:24.645166068 +0400 -@@ -853,7 +853,7 @@ - struct timespec ts; - ts.tv_sec = 0; - ts.tv_nsec = wait_nanosleep; -- clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL); -+ nanosleep(&ts, NULL); - } - int res = poll((struct pollfd*)&pfds, npfds, poll_timeout); - //debug_log("midi_thread(%s): poll exit: %d", str->name, res); diff --git a/audio/jack/files/patch-libjack-client.c b/audio/jack/files/patch-libjack-client.c new file mode 100644 index 000000000000..26d3324f29b0 --- /dev/null +++ b/audio/jack/files/patch-libjack-client.c @@ -0,0 +1,189 @@ +--- libjack/client.c.orig 2014-10-23 09:09:09.000000000 +0200 ++++ libjack/client.c 2014-10-23 09:20:15.000000000 +0200 +@@ -116,6 +116,30 @@ + + char *jack_tmpdir = DEFAULT_TMP_DIR; + ++/* ++ * 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_get_tmpdir () + { +@@ -248,7 +272,7 @@ + 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 +@@ -256,7 +280,7 @@ + + 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; +@@ -265,7 +289,7 @@ + } + } + +- rok = (read (client->request_fd, req, sizeof (*req)) ++ rok = (read_retry (client->request_fd, req, sizeof (*req)) + == sizeof (*req)); + + if (wok && rok) { /* everything OK? */ +@@ -822,14 +846,14 @@ + + jack_uuid_copy (&req.client_id, client->control->uuid); + +- if (write (fd, &req, sizeof (req)) != sizeof (req)) { ++ if (write_retry (fd, &req, sizeof (req)) != sizeof (req)) { + jack_error ("cannot write 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); +@@ -1070,14 +1094,14 @@ + 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 */ +@@ -1456,7 +1480,7 @@ + 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."); + } +@@ -1582,7 +1606,7 @@ + + 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); +@@ -1592,7 +1616,7 @@ + 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; +@@ -1613,19 +1637,19 @@ + 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)); +@@ -1742,7 +1766,7 @@ + /* 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)); +@@ -1751,7 +1775,7 @@ + + if (event.type == PropertyChange) { + 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)); +@@ -1868,7 +1892,7 @@ + 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)); +@@ -1888,7 +1912,7 @@ + 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 " +@@ -1916,7 +1940,7 @@ + } + + 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)); diff --git a/audio/jack/pkg-plist b/audio/jack/pkg-plist index ff07916621d5..3ab89713e86e 100644 --- a/audio/jack/pkg-plist +++ b/audio/jack/pkg-plist @@ -18,6 +18,7 @@ bin/jack_midisine bin/jack_midi_dump bin/jack_monitor_client bin/jack_netsource +bin/jack_property bin/jack_rec bin/jack_samplerate bin/jack_session_notify @@ -33,18 +34,18 @@ bin/jackd include/jack/control.h include/jack/intclient.h include/jack/jack.h +include/jack/jslist.h +include/jack/metadata.h include/jack/midiport.h include/jack/ringbuffer.h include/jack/session.h include/jack/statistics.h include/jack/thread.h -include/jack/timestamps.h include/jack/transport.h include/jack/types.h -include/jack/weakmacros.h +include/jack/uuid.h include/jack/weakjack.h -%%ALSA%%lib/jack/a2j_in.la -%%ALSA%%lib/jack/a2j_in.so +include/jack/weakmacros.h lib/jack/inprocess.la lib/jack/inprocess.so lib/jack/intime.la @@ -77,8 +78,8 @@ man/man1/jackstart.1.gz %%DOCS%%share/jack-audio-connection-kit/reference/html/control_8h.html %%DOCS%%share/jack-audio-connection-kit/reference/html/control_8h_source.html %%DOCS%%share/jack-audio-connection-kit/reference/html/deprecated.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/dir_d611c2c1e1e252f8153c91ce21a161f9.html %%DOCS%%share/jack-audio-connection-kit/reference/html/dir_3e6ff996e0a05d442d13220a8cf7408f.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/dir_d611c2c1e1e252f8153c91ce21a161f9.html %%DOCS%%share/jack-audio-connection-kit/reference/html/doxygen.css %%DOCS%%share/jack-audio-connection-kit/reference/html/doxygen.png %%DOCS%%share/jack-audio-connection-kit/reference/html/files.html @@ -86,20 +87,20 @@ man/man1/jackstart.1.gz %%DOCS%%share/jack-audio-connection-kit/reference/html/functions.html %%DOCS%%share/jack-audio-connection-kit/reference/html/functions_vars.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_defs.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_e.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_enum.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_eval.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_func.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_i.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_j.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_m.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_o.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_p.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_t.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_w.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_defs.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_enum.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_eval.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_func.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_type.html %%DOCS%%share/jack-audio-connection-kit/reference/html/globals_vars.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/globals_w.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__ClientCallbacks.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__ClientFunctions.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__ClientThreads.html @@ -108,6 +109,7 @@ man/man1/jackstart.1.gz %%DOCS%%share/jack-audio-connection-kit/reference/html/group__JackSessionManagerAPI.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__LatencyFunctions.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__MIDIAPI.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/group__Metadata.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__NonCallbackAPI.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__PortFunctions.html %%DOCS%%share/jack-audio-connection-kit/reference/html/group__PortSearching.html @@ -123,6 +125,8 @@ man/man1/jackstart.1.gz %%DOCS%%share/jack-audio-connection-kit/reference/html/jack_8h.html %%DOCS%%share/jack-audio-connection-kit/reference/html/jack_8h_source.html %%DOCS%%share/jack-audio-connection-kit/reference/html/mainpage_8dox.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/metadata_8h.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/metadata_8h_source.html %%DOCS%%share/jack-audio-connection-kit/reference/html/midiport_8h.html %%DOCS%%share/jack-audio-connection-kit/reference/html/midiport_8h_source.html %%DOCS%%share/jack-audio-connection-kit/reference/html/modules.html @@ -139,12 +143,14 @@ man/man1/jackstart.1.gz %%DOCS%%share/jack-audio-connection-kit/reference/html/struct__jack__latency__range.html %%DOCS%%share/jack-audio-connection-kit/reference/html/struct__jack__midi__event.html %%DOCS%%share/jack-audio-connection-kit/reference/html/struct__jack__session__event.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__description__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__position__t.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__property__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__data__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__t.html +%%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__session__command__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__transport__info__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/structport__pair__t.html -%%DOCS%%share/jack-audio-connection-kit/reference/html/structjack__session__command__t.html %%DOCS%%share/jack-audio-connection-kit/reference/html/thread_8h.html %%DOCS%%share/jack-audio-connection-kit/reference/html/thread_8h_source.html %%DOCS%%share/jack-audio-connection-kit/reference/html/transport-design.html