diff --git a/.gitignore b/.gitignore index e4f2965..ca91dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1 @@ -jack-1.9.5.tar.bz2 -/jack-1.9.6.tar.bz2 -/jack-1.9.7.tar.bz2 -/jack-1.9.8.tgz -/jack-1.9.9.5.tar.bz2 -/jack-1.9.10.tar.bz2 -/jack2-1.9.12.tar.gz -/jack2-1.9.13.tar.gz -/jack2-1.9.14.tar.gz -/jack2-1.9.16.tar.gz -/jack2-1.9.17.tar.gz -/jack2-1.9.18.tar.gz -/jack2-1.9.19.tar.gz -/jack2-1.9.20.tar.gz -/jack2-1.9.21.tar.gz +SOURCES/jack2-1.9.22.tar.gz diff --git a/.jack-audio-connection-kit.metadata b/.jack-audio-connection-kit.metadata new file mode 100644 index 0000000..638f315 --- /dev/null +++ b/.jack-audio-connection-kit.metadata @@ -0,0 +1 @@ +cb9ba61fe500cf3b5d4ba89365007df68fbe2515 SOURCES/jack2-1.9.22.tar.gz diff --git a/SOURCES/jack-audio-connection-kit-README.Fedora b/SOURCES/jack-audio-connection-kit-README.Fedora new file mode 100644 index 0000000..b6d69f5 --- /dev/null +++ b/SOURCES/jack-audio-connection-kit-README.Fedora @@ -0,0 +1,144 @@ + USING ALSA DIRECTLY + +Switch to root account. + +Install the required packages: + dnf install alsa-plugins-jack + +Add yourself to the jackuser group. + usermod -a -G audio,jackuser "" +Now you will need to log out and log back in, or simply restart the system. + +Start the jack daemon (the best parameters for your sound card may be different): + jackd -R -d alsa -d hw:0 +This will start jack on the first sound card, at 48KHz sampling rate (can be +changed with the "-r" command line parameter), with a period of 1024 frames +(change with "-p", determines the latency) and with 2 interrupts per period +(change with -n). USB sound cards can benefit from running with "-n 3" or +"-n 4". All of these optional parameters should be specified after "-d alsa". + +It is best to replace the card number with the card name as the numbering can +change from boot to boot if there is more than one sound card. The name of a +particular card can be found in the output of "cat /proc/asound/cards", for each +card it is the string between square brackets without the trailing blanks. + +Note: Jack is a sound server and not a daemon - while it does work "in the +background" it is not something similar to unix daemons which are started at +boot time. + + + QJACKCTL + +This application can be used to control the jack sound server with a graphical +interface. It can be started via + qjackctl -s +"-s" parameter makes the jack sound server start immediately. + +When starting jack through qjackctl it is important to note that you should (at +least) change the "Interface" field in the "Setup" dialog to _not_ be "(default)" +which would point Jack to use Pulse Audio. The proper "Interface" is the direct +hw ALSA device (hw:0 for the first card, etc). Even best to use the name of the +card as stated above. + + + USING THE JACK DBUS INTERFACE + +Control applications such as qjackctl can be configured to interact with the jack +sound server using D-Bus. This has the advantage of allowing jack to request the +release of the sound device from Pulseaudio (see below). + +jackdbus is shipped in a separate package. To install this (as root) do: + + dnf install jack-audio-connection-kit-dbus + +and check "Enable D-Bus interface" in Setup -> Misc within Qjackctl + + + INTEGRATE JACK WITH PULSEAUDIO + +Jack will ask Pulse Audio through D-Bus for ownership of the sound card. Pulse +Audio will grant it and Jack will have complete control of it. No conflicts and +no configuration necessary. In this case Pulse Audio will stop using the card +and if it is the only one, you will not have sound for system sounds, browser +media playback, etc (which is usually what you want). Otherwise it is possible +to load a Pulse Audio module that redirects PA to use Jack. + + + + + RUNNING JACK SERVER IN REALTIME MODE + +NOTE: This chapter explains why you have done the above changes in more detail. +It is kept for informational purposes. The changes suggested below is done +automatically by your Jack installation and no manual modification of the +pam configuration should be necessary. + + +The JACK server jackd has the capability to run in a real-time mode +which greatly decreases the chance of audio glitches. The real-time mode +is enabled by passing the -R or --realtime option to jackd when starting +the server. It is only possible to run jackd in real-time mode as a +non-root user by modifying your PAM configuration, PAM stands for +Pluggable Authentication Modules and is the primary authentification +mechanism used on Fedora. The primary source of PAM documentation can be +found at the following at http://www.kernel.org/pub/linux/libs/pam/ + +The specific PAM configuration file that needs to be modified is +/etc/security/limits.conf and it controls the system resource limits. It +is important to understand that modifying the resource limits +configuration files can decrease the security of your system. +Documentation specific to the resource limits PAM module can be found at +http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam-6.html#ss6.12 + +Alternatively, one can create a new file + /etc/security/limits.d/-.conf +that contains the resource limits for individual users and/or groups. The +jack-audio-connection-kit package that comes with Fedora contains the file + /etc/security/limits.d/99-jack.conf +that does this job for you. + +The resource limits that need to be changed to allow jackd to run in +realtime mode are named rtprio and memlock. To increase the limits for a +specific user named fred you would add the following to +/etc/security/limits.conf + +fred - rtprio 20 +fred - memlock 50000 + +The value of rtprio can be set in the range 0 - 99 where any value +greater that 0 will allow the user to change the scheduling policy to +"real-time". By default the JACK server requires a minimum rtprio +setting of 20 but jackd will accept a command line parameter -P or +--realtime-priority which will change the minimum required value of +rtprio that is needed, but the default of 20 is nearly always +sufficient. + +The appropriate value for memlock is dependent on the amount of memory +present in the system but a minimum value of 50000(50MB) and a maximum +value of half the available memory can be used as a rough guideline. + +To verify that the resource limits have been modified you can use the +bash built-in ulimit command, for example: + +$ulimit -a +core file size (blocks, -c) 0 +data seg size (kbytes, -d) unlimited +max nice (-e) 0 +file size (blocks, -f) unlimited +pending signals (-i) 8191 +max locked memory (kbytes, -l) 50000 +max memory size (kbytes, -m) unlimited +open files (-n) 1024 +pipe size (512 bytes, -p) 8 +POSIX message queues (bytes, -q) 819200 +max rt priority (-r) 20 +stack size (kbytes, -s) 10240 +cpu time (seconds, -t) unlimited +max user processes (-u) 8191 +virtual memory (kbytes, -v) unlimited +file locks (-x) unlimited +file locks (-x) unlimited + +Keep in mind that you may have to re-login before changes to limits.conf, +or additions to the limits.d/ directory to take effect. + diff --git a/SOURCES/jack-audio-connection-kit-limits.conf b/SOURCES/jack-audio-connection-kit-limits.conf new file mode 100644 index 0000000..7775824 --- /dev/null +++ b/SOURCES/jack-audio-connection-kit-limits.conf @@ -0,0 +1,7 @@ +# Default limits for users of jack-audio-connection-kit + +@@groupname@ - rtprio 70 +@@groupname@ - memlock 4194304 + +@@pagroup@ - rtprio 20 +@@pagroup@ - nice -20 diff --git a/SOURCES/jack-audio-connection-kit-script.pa b/SOURCES/jack-audio-connection-kit-script.pa new file mode 100644 index 0000000..21d376f --- /dev/null +++ b/SOURCES/jack-audio-connection-kit-script.pa @@ -0,0 +1,20 @@ +#!/usr/bin/pulseaudio -nF + +load-module module-jack-sink +load-module module-jack-source + +load-module module-native-protocol-unix +load-module module-volume-restore +load-module module-default-device-restore +load-module module-rescue-streams +load-module module-suspend-on-idle +.ifexists module-gconf.so +.nofail +load-module module-gconf +.fail +.endif +.ifexists module-x11-publish.so +.nofail +load-module module-x11-publish +.fail +.endif diff --git a/jack-realtime-compat.patch b/SOURCES/jack-realtime-compat.patch similarity index 100% rename from jack-realtime-compat.patch rename to SOURCES/jack-realtime-compat.patch diff --git a/SOURCES/jack2-py312.patch b/SOURCES/jack2-py312.patch new file mode 100644 index 0000000..47f1ec4 --- /dev/null +++ b/SOURCES/jack2-py312.patch @@ -0,0 +1,26 @@ +diff -rupN jack2-1.9.22.old/waflib/Context.py jack2-1.9.22/waflib/Context.py +--- jack2-1.9.22.old/waflib/Context.py 2023-02-02 06:04:10.000000000 -0500 ++++ jack2-1.9.22/waflib/Context.py 2023-07-25 22:30:59.255028763 -0400 +@@ -6,7 +6,9 @@ + Classes and functions enabling the command system + """ + +-import os, re, imp, sys ++import os, re, sys ++import importlib.util ++import importlib.machinery + from waflib import Utils, Errors, Logs + import waflib.Node + +@@ -660,7 +662,10 @@ def load_module(path, encoding=None): + except KeyError: + pass + +- module = imp.new_module(WSCRIPT_FILE) ++ loader = importlib.machinery.SourceFileLoader(WSCRIPT_FILE, WSCRIPT_FILE) ++ spec = importlib.util.spec_from_loader(loader.name, loader) ++ module = importlib.util.module_from_spec(spec) ++ loader.exec_module(module) + try: + code = Utils.readf(path, m='r', encoding=encoding) + except EnvironmentError: diff --git a/jack-audio-connection-kit.spec b/SPECS/jack-audio-connection-kit.spec similarity index 90% rename from jack-audio-connection-kit.spec rename to SPECS/jack-audio-connection-kit.spec index 283204f..e97ca26 100644 --- a/jack-audio-connection-kit.spec +++ b/SPECS/jack-audio-connection-kit.spec @@ -13,8 +13,8 @@ Summary: The Jack Audio Connection Kit Name: jack-audio-connection-kit -Version: 1.9.21 -Release: 1%{?dist} +Version: 1.9.22 +Release: 6%{?dist} # The entire source (~500 files) is a mixture of these three licenses License: GPLv2 and GPLv2+ and LGPLv2+ URL: https://www.jackaudio.org @@ -22,6 +22,8 @@ Source0: https://github.com/jackaudio/jack2/archive/v%{version}/v%{version Source1: %{name}-README.Fedora Source2: %{name}-script.pa Source3: %{name}-limits.conf +# Build with Python >= 3.12 +Patch0: jack2-py312.patch # Adjust default priority. RHBZ#795094 Patch1: jack-realtime-compat.patch @@ -43,15 +45,12 @@ BuildRequires: ncurses-devel BuildRequires: opus-devel BuildRequires: pkgconfig BuildRequires: python3 -BuildRequires: readline-devel -%if 0%{?fedora} -BuildRequires: zita-alsa-pcmi-devel -BuildRequires: zita-resampler-devel -%endif Requires(pre): shadow-utils Requires: pam +Obsoletes: %{name}-example-clients < 1.9.22 + %description JACK is a low-latency audio server, written primarily for the Linux operating system. It can connect a number of different applications to an audio device, as @@ -105,11 +104,7 @@ python3 ./waf configure \ %endif --alsa \ --clients 256 \ - --ports-per-application=2048 \ -%if 0%{?fedora} - --zalsa=yes \ -%endif - --example-tools=yes + --ports-per-application=2048 python3 ./waf build %{?_smp_mflags} -v @@ -131,9 +126,6 @@ install -p -m644 %{SOURCE1} README.Fedora # install pulseaudio script for jack (as documentation part) install -p -m644 %{SOURCE2} jack.pa -# For compatibility with jack1 -mv %{buildroot}%{_bindir}/jack_rec %{buildroot}%{_bindir}/jackrec - # Fix permissions of the modules chmod 755 %{buildroot}%{_libdir}/jack/*.so %{buildroot}%{_libdir}/libjack*.so.*.*.* @@ -147,14 +139,12 @@ exit 0 %doc jack.pa %license COPYING %{_bindir}/jackd -%{_bindir}/jackrec %{_libdir}/jack/ %{_libdir}/libjack.so.0* %{_libdir}/libjacknet.so.0* %{_libdir}/libjackserver.so.0* %config(noreplace) %{_sysconfdir}/security/limits.d/*.conf -%{_mandir}/man1/jackrec.1* %{_mandir}/man1/jackd*.1* %files dbus @@ -170,74 +160,38 @@ exit 0 %{_libdir}/libjackserver.so %{_libdir}/pkgconfig/jack.pc -%files example-clients -%license COPYING -%{_bindir}/alsa_in -%{_bindir}/alsa_out -%{_bindir}/jack_alias -%{_bindir}/jack_bufsize -%{_bindir}/jack_connect -%{_bindir}/jack_disconnect -%{_bindir}/jack_cpu_load -%{_bindir}/jack_evmon -%{_bindir}/jack_freewheel -# These are not ready yet -#{_bindir}/jack_impulse_grabber -%exclude %{_mandir}/man1/jack_impulse_grabber.1* -%{_bindir}/jack_latent_client -%{_bindir}/jack_load -%{_bindir}/jack_unload -%{_bindir}/jack_lsp -%{_bindir}/jack_metro -%{_bindir}/jack_midi_dump -%{_bindir}/jack_midi_latency_test -%{_bindir}/jack_midiseq -%{_bindir}/jack_midisine -%{_bindir}/jack_monitor_client -%{_bindir}/jack_net_master -%{_bindir}/jack_net_slave -%{_bindir}/jack_netsource -%{_bindir}/jack_property -%{_bindir}/jack_samplerate -%{_bindir}/jack_server_control -%{_bindir}/jack_session_notify -%{_bindir}/jack_showtime -%{_bindir}/jack_simple_client -%{_bindir}/jack_simple_session_client -%{_bindir}/jack_thru -%{_bindir}/jack_transport -%{_bindir}/jack_wait -%{_bindir}/jack_zombie - -%{_mandir}/man1/alsa_*.1* -%{_mandir}/man1/jack_bufsize.1* -%{_mandir}/man1/jack_connect.1* -%{_mandir}/man1/jack_disconnect.1* -%{_mandir}/man1/jack_freewheel*.1* -%{_mandir}/man1/jack_load*.1* -%{_mandir}/man1/jack_unload*.1* -%{_mandir}/man1/jack_lsp.1* -%{_mandir}/man1/jack_metro.1* -%{_mandir}/man1/jack_monitor_client.1* -%{_mandir}/man1/jack_netsource.1* -%{_mandir}/man1/jack_property.1* -%{_mandir}/man1/jack_samplerate.1* -%{_mandir}/man1/jack_showtime.1* -%{_mandir}/man1/jack_simple_client.1* -%{_mandir}/man1/jack_transport.1* -%{_mandir}/man1/jack_wait.1* - -# tests -%{_bindir}/jack_cpu -%{_bindir}/jack_iodelay -%{_bindir}/jack_multiple_metro -%{_bindir}/jack_simdtests -%{_bindir}/jack_test - -%{_mandir}/man1/jack_iodelay.1* +%changelog +* Wed Dec 25 2024 Arkady L. Shane - 1.9.22-6 +- Rebuilt for MSVSphere 10 +* Thu Jul 18 2024 Fedora Release Engineering - 1.9.22-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 1.9.22-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 1.9.22-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Jul 25 2023 Orcan Ogetbil - 1.9.22-3 +- Fix build against Python >= 3.12 + +* Thu Jul 20 2023 Fedora Release Engineering - 1.9.22-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sun Feb 05 2023 Guido Aulisi - 1.9.22-1 +- Update to 1.9.22 +- Obsolete example clients package + +* Thu Jan 19 2023 Fedora Release Engineering - 1.9.21-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Aug 12 2022 Mamoru TASAKA - 1.9.21-3 +- Fix FTBFS with python 3.11 + +* Thu Jul 21 2022 Fedora Release Engineering - 1.9.21-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild -%changelog * Thu Apr 21 2022 Guido Aulisi - 1.9.21-1 - Update to 1.9.21 diff --git a/sources b/sources deleted file mode 100644 index a7960eb..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (jack2-1.9.21.tar.gz) = 0e9ce581fca3c5d9ffb1de22b45cae6d94085c6f92ff3554892e25727baf66a2269f10d338d95d991e8380c4be5e0cc1e1453b9f878c7dc2e8a990f3bd458557