Commit Graph

4138 Commits

Author SHA1 Message Date
Nedko Arnaudov 4651827c88 Adjust version to match the one in wscript 2023-01-28 02:05:05 +02: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
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
Nedko Arnaudov ebd059e3d9 Merge 1.9.21 from 'jackaudioorg-main' into LADI/stable 2022-08-14 15:59:44 +03:00
falkTX 6b3c96d8ae
Merge branch 'master' into develop
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-15 20:14:06 +01:00
falkTX 82ec942605
Update changelog
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-15 20:09:19 +01:00
falkTX 45042beac5 Make JackMachSemaphore more robust, dont use thread_terminate
Fixes #841
2022-04-15 20:02:58 +01:00
David Runge 5aa5861af0 Fix jack_control for flake8 compatibility
dbus/jack_control:
Remove unused imports for os and traceback.print_exc.
Fix indentation, whitespace and line length issues across the entire
file.
Simplify printing in `print_help()` by calling `print()` only once.
2022-04-13 22:57:52 +01:00
David Runge b5ca229866 Run flake8 on all wscript files and on jack_control
.github/workflows/lint.yml:
Ensure that flake8 in CI is run on all wscript files and on
jack_control.
2022-04-13 22:57:52 +01:00
falkTX 88102ec4a7
Bump version to 1.9.21
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 19:02:09 +01:00
falkTX ac00dee3ae
Fix ubuntu-20.04 CI test
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 18:44:24 +01:00
falkTX fc82bfc572 Update changelog
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 18:44:07 +01:00
nick87720z 3a19b628f8
jack_control - shell mode and update (#821)
* jack_control: move to tools for a while

* jack_control: shell mode command

This command runs loop, which executes commands from stdin until EOF
(Ctrl+D in terminal). Command status is printed to stdout.

* jack_control: optimize some functions

* jack_control: unused function

* jack_control: more informative message about dbus typesig error

* jack_control: Fix shell mode I/O

* restore jack_control path
2022-04-13 18:31:49 +01:00
David Runge aa27576236
Fix wscripts syntax (#826)
* Add flake8 configuration

.flake8:
Add flake8 configuration that limits the line length to 120 chars and
outputs to flake8.txt

* Add flake8.txt to gitignore

.gitignore:
Add flake8.txt (flake8 output file) to ignore.

* Syntax fixes and cleanup for top-level wscript

wscript:
Fix syntax of wscript according to pep8 (but do not break long lines).
Remove unused imports and move all module level imports to the top of
the file.
Fix broken build target of IIO driver (source argument to
`create_driver_obj()` supplied an uninitialized variable).
Break lines at 120 chars.

* Fix common/wscript syntax

common/wscript:
Fix syntax problems, unneeded imports and break lines at 120 chars.

* Fix compat/alloca/wscript syntax

compat/alloca/wscript:
Fix compat/alloca/wscript syntax

* Fix compat/wscript syntax

compat/wscript:
Fix compat/wscript syntax

* Fix dbus/wscript syntax

dbus/wscript:
Fix syntax and break lintes at 120 chars.

* Fix example-clients/wscript syntax

example-clients/wscript:
Fix syntax and remove commented code.

* Fix tests/wscript syntax

tests/wscript:
Fix syntax and commented code.

* Fix tools/wscript syntax

tools/wscript:
Fix tools/wscript syntax.

* Add github workflow for linting wscripts

.github/workflows/lint.yml:
Add github workflow for linting wscripts using findutils and flake8.

* Fix project version extraction in CI

.github/workflows/build.yml:
Adapt the project version extraction in CI to the syntax changes in
the top-level wscript.
2022-04-13 18:29:29 +01:00
Be cceca54255
fix JackWeakAPI on Windows (#846)
* JackWeakAPI: fix DLL loading on Windows

LoadLibrary takes a LPCWSTR (UTF16). LoadLibraryA is needed to
work with ASCII C string literals.

* JackWeakAPI: call tryload_libjack if it hasn't been called already

On non-Windows tryload_libjack is loaded on startup with
__attribute__((constructor)) but with MSVC, Microsoft documentation
says to not load libraries in a DLL's initialization function:
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-best-practices

* JackWeakAPI: add debugging message for Windows
2022-04-13 18:25:47 +01:00
falkTX 84d80c0a8c
Make sure CI builds do not use LTO
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 17:43:16 +01:00
falkTX 61f0d4accb
Update changelog, fixup for CI builds
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 17:38:08 +01:00
falkTX c9d8173d27
Make example-tools off by default
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 17:24:02 +01:00
falkTX 6af0909e1d
Make example-tools off by default
Signed-off-by: falkTX <falktx@falktx.com>
2022-04-13 17:21:30 +01:00