Commit Graph

4268 Commits

Author SHA1 Message Date
Nedko Arnaudov 162befaddb NEWS.rst: LADI jack2 2.22.1 (2023-02-18)
* Bring back the GIT_VERSION define
 * jack_get_version_string() now reports GIT_VERSION
 * Change default of self-connect-mode to 'e'
2023-02-18 10:12:49 +02:00
Nedko Arnaudov d1e755f557 Change default of self-connect-mode to 'e'
Ignore self connect requests to external ports only is now the default
mode.

In the default now 'e' mode, jack clients are still able to connect
their own ports. jack client attempts to connect its own ports to
other jack client ports, including "system", will be ignored in the
default configuration.

Despite still observable self-connect behaviour of firefox and other
jack clients, it is not desirable for jack (modular) setups.
2023-02-18 09:54:40 +02:00
Nedko Arnaudov 12da377204 jack_get_version_string() now reports GIT_VERSION 2023-02-02 18:01:09 +02:00
Nedko Arnaudov 8b7636ddf7 Bring back the GIT_VERSION define
The git revision define was previously removed
in commit 3d6fd78701
2023-02-02 17:52:58 +02:00
Nedko Arnaudov 79015efea2 jackdbus cleanup from ladi/jack2
Followup of 067e50dff9
2023-02-02 16:52:59 +02:00
Nedko Arnaudov 126a9cf0d5 v1.9.22
-----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEEYrEQQ9L262Zy2TEDzbqjerx0+6AFAmPbmQkSHGZhbGt0eEBm
 YWxrdHguY29tAAoJEM26o3q8dPugNXIQAJxJXOFmoVUavNbq8KHULvdqdUJJQ7s6
 7tdM3oksE5mZJbQUDsIICprCjYmxXaMnBZg/zJLxlcm016a8t/aI88Yj0PrGSgqm
 Zl3xoP8Kn9QUTDwyetPTQwelkaEaAEBVtNXroUJpXmqWDyxGGVSmyoT7G02MGDzW
 OA0IYFMPzNaT4RdGjAZyt7PhkPqlT7V7leEXq3kfqfFqVj4qNKvWVnptkV8Zu70h
 LOGolafhlMX6xf3uvoSe9M44r7X8/MffZaWeBQsUnZnoIcR22qLp9mAiiHJAolGu
 vLcqIA4y2NA/YveqPVdTiVgifD1QXFWF38gxiQFKovRLKljHViYT1H87GZJeuuVG
 kpRn0d6NQnTPqdNglewgiJPYxgviv83bFMz/OMnwivAydFlj19ubv8yiknIVG4O0
 R1SAasVQR6CBrOnWsaMmGM/3r00oTHrCKbPP4JFvSsWMbmHJ0atjQR5bxqlimr9p
 U/rI7o4YXwvaV8EnyhU1bLgYizWEdYxhUyYHvLajORZPApuYJo7UKXk1WfuIymJ3
 6yzpfHfUEFwqvX8t1qq8oNoS0KESYwPBpzSeE2Gnug80EEdKhzSZY3Hg/xaK5mxN
 s+XhXteiypwVYAmegnlBo2HSApP16+3cixJZ8Ii4T+KWDXfWhHU1EJcz+ahR6+fe
 lKvJHfcZtZyv
 =oh+G
 -----END PGP SIGNATURE-----

Merge tag 'v1.9.22' into LADI/main

v1.9.22
2023-02-02 16:45:51 +02:00
falkTX 4f58969432
Update changelog
Signed-off-by: falkTX <falktx@falktx.com>
2023-02-02 12:04:10 +01:00
falkTX 1eff44a212 Update copyright year
Signed-off-by: falkTX <falktx@falktx.com>
2023-01-30 22:14:29 +01:00
falkTX f5a01999fa macOS: forcely ignore wait failures when closing down
Signed-off-by: falkTX <falktx@falktx.com>
2023-01-30 22:14:29 +01:00
Christian Clauss d2d44158f9
Upgrade GitHub Actions (#911)
* Upgrade GitHub Actions

* https://github.com/actions/cache/releases
* https://github.com/actions/checkout/releases
* https://github.com/actions/upload-artifact/releases

* Upgrade GitHub Actions
2023-01-29 17:54:29 +01:00
falkTX 79ea0746fa
macOS: killing a thread will abort the semaphore wait
Signed-off-by: falkTX <falktx@falktx.com>
2023-01-29 12:57:36 +01:00
luz paz ae9993bb34 Fix typos 2023-01-28 16:48:31 +01:00
Daan De Meyer 328c58967d Remove usage of 'U' mode bit for opening files in python
The 'U' mode bit is removed in python 3.11. It has been
deprecated for a long time. The 'U' mode bit has no effect
so this change doesn't change any behavior.

See https://docs.python.org/3.11/whatsnew/3.11.html#changes-in-the-python-api
2023-01-28 16:40:13 +01:00
K 75516ffe6d
Fix ringbuffer thread safety on ARM. Fix #715 #388 (#886)
* fix ringbuffer thread safety on ARM. fix #715 #388

This patch addresses the thread safety problem of `jack_ringbuffer_t`
mentioned in #715 and #388. The overbound read bug caused by this problem
is impossible to reproduce on x86 due to its strong memory ordering, but
it is a problem on ARM and other weakly ordered architectures.

Basically, the main problem is that, on a weakly ordered architecture,
it is possible that the pointer increment after `memcpy` becomes visible
to the other thread before `memcpy` finishes:

	memcpy (&(rb->buf[rb->write_ptr]), src, n1);
	// vvv can be visible to reading thread before memcpy finishes
	rb->write_ptr = (rb->write_ptr + n1) & rb->size_mask;

If this happens, the other thread can read the remaining garbage values
in `rb->buf` due to be overwritten by the unfinished `memcpy`.

To fix this, an explicit pair of release/acquire memory fences [1] is
used to ensure the copy on the other thread *happens after* the `memcpy`
finishes so no garbage values can be read.

[1]: https://preshing.com/20130922/acquire-and-release-fences/

* remove volatile qualifier on ringbuf r/w pointers

The volatile constraints are excess when compiler barriers are present.
It generates unnecessary `mov` instructions when pointers aren't going
to be updated.

* simplify read/write space calculations

This optimization is possible because the buffer size is always a power
of 2. See [1] for details.

[1]: https://github.com/drobilla/zix/pull/1#issuecomment-1212687196

* move acq fences to separate lines
2023-01-28 16:38:05 +01:00
Nedko Arnaudov 4651827c88 Adjust version to match the one in wscript 2023-01-28 02:05:05 +02:00
Florian Walpen f18660aa03
CI: Update FreeBSD image to 13.1, fix build.
In principle, major FreeBSD versions should be ABI compatible.
But in this case the python3 binary would only run on 13.1, not 13.0.
2023-01-26 23:20:24 +01:00
Nedko Arnaudov e1a0a00f07
README.rst: Remove (IRC) support links used by jackaudio, adjust for LADI
LADI jack2&jackdbus projects are maintained in parallel with jackaudio.org jack2,
so remove the support links in order to not burder jackaudio project with LADI stuff.
2022-09-10 15:57:36 +03:00
Nedko Arnaudov 0b263c8569
README.rst: Fix hyperlinks (more) 2022-09-10 15:50:52 +03:00
Nedko Arnaudov f656572513
README.rst: Fix hyperlinks (again) and improve wording 2022-09-10 15:49:20 +03:00
Nedko Arnaudov d03a6ab608
README.rst: Fix hyperlinks 2022-09-10 15:42:58 +03:00
Nedko Arnaudov 5abb423518
README.rst: Adjust for LADI JACK 2022-09-10 15:38:26 +03:00
Nedko Arnaudov a13a2ae4fb
COPYING: improve wording 2022-09-10 15:29:09 +03:00
Nedko Arnaudov 71ce0ef001
Move LICENSE to COPYING 2022-09-10 15:20:50 +03:00
Nedko Arnaudov b6f3b326c5
Adjust my copyleft lines in wscripts
See https://github.com/jackaudio/jack2/pull/319
2022-09-10 15:13:29 +03:00
Karl Linden 69b04bee68 License the project clearly
This adds a LICENSE file that describes which licenses this project is
licensed under. This is very important, as the project is licensed under
three licenses.

Also added are copyright notices to the wscript files. I added myself as
copyright holder to them, but there are other people who have
contributed to these files which should have their name in the copyright
header. Clearly stating the license of the wscript files should have
been done long ago.
2022-09-10 13:33:46 +03:00
luz paz a8b7c6c85f Fix typos
(cherry picked from commit 10553de59b1d381b63a7c275f6cb6456029434f2)
2022-09-10 13:07:18 +03:00
Nedko Arnaudov 87be4bcf3c CI: build on ubuntu 18.04 and ubuntu 22.04 2022-08-28 15:08:52 +03:00
Nedko Arnaudov e347240f12 NEWS: Add entry about 2.21.0 release 2022-08-27 22:34:06 +03:00
Nedko Arnaudov afc73aaa9e Rename ChangeLog.rst to NEWS.rst 2022-08-27 22:33:32 +03:00
Nedko Arnaudov 4f90ba09d4 Add pkg-config file for libjackserver 2022-08-27 21:31:25 +03:00
Nedko Arnaudov a219673cac Fix manpage installation
Before this commit the fill_template script used to always
preprocess/install jackd.0 file.

This commit makes preprocessing/installation of jackd.0 man page to
only happen when jackd is configured to be built.
2022-08-27 19:52:12 +03:00
Nedko Arnaudov 067e50dff9 Remove jackdbus from jack2 codebase. Disable jackd
jackdbus is going to be maintained in a dedicated repo

jackd executable is kept but its build is disabled by default.

When jackd build is enabled, D-Bus reservation functionality for jackd
is also enabled unless explicitly disabled with --no-dbus configure
option.
2022-08-27 19:30:15 +03:00
Nedko Arnaudov 55c4b19084 Merge branch 'rb_fix'
commit 4ab3b0744a
Author: krasjet <nil@krj.st>
Date:   Fri Aug 12 18:17:33 2022 +0000

    simplify read/write space calculations

    This optimization is possible because the buffer size is always a power
    of 2. See [1] for details.

    [1]: https://github.com/drobilla/zix/pull/1#issuecomment-1212687196

commit 06749e0c67
Author: krasjet <nil@krj.st>
Date:   Fri Aug 12 18:07:45 2022 +0000

    remove volatile qualifier on ringbuf r/w pointers

    The volatile constraints are excess when compiler barriers are present.
    It generates unnecessary `mov` instructions when pointers aren't going
    to be updated.

commit 165f5fdd92
Author: krasjet <nil@krj.st>
Date:   Thu Jul 21 03:27:10 2022 +0000

    fix ringbuffer thread safety on ARM. fix #715 #388

    This patch addresses the thread safety problem of `jack_ringbuffer_t`
    mentioned in #715 and #388. The overbound read bug caused by this problem
    is impossible to reproduce on x86 due to its strong memory ordering, but
    it is a problem on ARM and other weakly ordered architectures.

    Basically, the main problem is that, on a weakly ordered architecture,
    it is possible that the pointer increment after `memcpy` becomes visible
    to the other thread before `memcpy` finishes:

            memcpy (&(rb->buf[rb->write_ptr]), src, n1);
            // vvv can be visible to reading thread before memcpy finishes
            rb->write_ptr = (rb->write_ptr + n1) & rb->size_mask;

    If this happens, the other thread can read the remaining garbage values
    in `rb->buf` due to be overwritten by the unfinished `memcpy`.

    To fix this, an explicit pair of release/acquire memory fences [1] is
    used to ensure the copy on the other thread *happens after* the `memcpy`
    finishes so no garbage values can be read.

    [1]: https://preshing.com/20130922/acquire-and-release-fences/
2022-08-27 18:10:01 +03:00
krasjet 4ab3b0744a simplify read/write space calculations
This optimization is possible because the buffer size is always a power
of 2. See [1] for details.

[1]: https://github.com/drobilla/zix/pull/1#issuecomment-1212687196
2022-08-27 18:07:35 +03:00
krasjet 06749e0c67 remove volatile qualifier on ringbuf r/w pointers
The volatile constraints are excess when compiler barriers are present.
It generates unnecessary `mov` instructions when pointers aren't going
to be updated.
2022-08-27 18:07:35 +03:00
krasjet 165f5fdd92 fix ringbuffer thread safety on ARM. fix #715 #388
This patch addresses the thread safety problem of `jack_ringbuffer_t`
mentioned in #715 and #388. The overbound read bug caused by this problem
is impossible to reproduce on x86 due to its strong memory ordering, but
it is a problem on ARM and other weakly ordered architectures.

Basically, the main problem is that, on a weakly ordered architecture,
it is possible that the pointer increment after `memcpy` becomes visible
to the other thread before `memcpy` finishes:

	memcpy (&(rb->buf[rb->write_ptr]), src, n1);
	// vvv can be visible to reading thread before memcpy finishes
	rb->write_ptr = (rb->write_ptr + n1) & rb->size_mask;

If this happens, the other thread can read the remaining garbage values
in `rb->buf` due to be overwritten by the unfinished `memcpy`.

To fix this, an explicit pair of release/acquire memory fences [1] is
used to ensure the copy on the other thread *happens after* the `memcpy`
finishes so no garbage values can be read.

[1]: https://preshing.com/20130922/acquire-and-release-fences/
2022-08-27 18:07:35 +03:00
Filipe Coelho 99e5d115ea
Update link to new-session-manager jackaudio page 2022-08-14 23:23:54 +01:00
Nedko Arnaudov 0fbb9c161a Switch build badge to github one 2022-08-14 21:21:23 +03:00
Nedko Arnaudov 110d447299 gh/build.yml: install libdbus-1-dev on ubuntu 2022-08-14 21:13:39 +03:00
Nedko Arnaudov cbb9c88549 New non-debian-ubuntustudio specific build.yml for jack2 2022-08-14 21:03:25 +03:00
Nedko Arnaudov 0c8a21fad6 Merge branch 'jackdbus-split' into stable
This brings two changes:
 * Version is switched from jack-1.9.x to ladi-jack-2.x scheme
 * autostart configure option now defaults to none
2022-08-14 20:43:39 +03:00
Nedko Arnaudov e8ab33123f Default autostart to "none"
Unless overriden during configure stage, autostart now defaults to
none.

This is safer approach for packagers wanting to provide both
jackdbus and jackd executables (via two distinct packages).

See also commit 35f4101850
2022-08-14 20:39:18 +03:00
Nedko Arnaudov 2cdf61c9dc Merge branch ladi-jack2/stable into jackdbus/stable 2022-08-14 19:51:38 +03:00
Nedko Arnaudov 58d33170b2 Merge branch 'stable' into jackdbus-split 2022-08-14 19:46:02 +03:00
Nedko Arnaudov d0c36a341b Remove build.yml for now
The updated build.yml will be made to work on any linux distro,
not only debian derivates. While currently Ubuntu is provided at
github, a runner verifying the build for upstream should run
"./waf --configure && ./waf" steps instead of the deleted ones, that
were running Ubuntu specific steps.
2022-08-14 19:38:35 +03:00
Nedko Arnaudov 9a6e83a3dd
Delete irc.yml
Remove IRC notification bot that was borrowed from the jackaudio repo
2022-08-14 19:30:15 +03:00
Nedko Arnaudov c36e1f9bb1
Delete irc.yml
Remove IRC notification bot that was borrowed from the jackaudio repo
2022-08-14 19:28:45 +03:00
Nedko Arnaudov 414722d40f
Update build.yml
Don't build for non-libre operating systems.
2022-08-14 19:20:14 +03:00
Nedko Arnaudov 6beaff285e LADI JACK2: Switch to 2.minor versioning scheme 2022-08-14 17:31:53 +03:00
Nedko Arnaudov 35f4101850 wscript: Default to jackdbus, enable dbus autolaunching
When 14 years ago --dbus configure option was added to wscript,
I was affraid that deployments of builds configured with defaults will
get broken, so I kept jackd daemon enabled by default.

Since then the mixed jackd+jackdbus deployments had happened -
a bunch of distro packagers ignored the upstream configure time
warning and the JACK2 project suggested packaging approach that
strongly discouraged such deployments.

Another issue that has proven problematic is the configuration of
autolaunching capabilities. For the sake of robust jackdbus
deployments, I'm also enabling dbus autolaunching. This will ensure
that jackdbus daemon will work as designed and expected to behave.

This commit is first of several that will remove the jackd code
from the source tree. Then, jackdbus will be buildabe from
dedicated repo+branch for jackdbus source code only, to be built
against jack2 (with jackdbus stuff removed), installed system-wide and
libjackserver accessible through pkg-config.
2022-08-14 16:04:26 +03:00