[PATCH 0/6] Add yabridge.

  • Open
  • quality assurance status badge
Details
3 participants
  • Gabriel Wicki
  • Nicolas Graves
  • Sughosha
Owner
unassigned
Submitted by
Sughosha
Severity
normal
S
S
Sughosha wrote on 1 Nov 2023 10:07
[PATCH 0/6] gnu: Add yabridge.
(address . guix-patches@gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
cover.1698829285.git.sughosha@disroot.org
This series of patches adds yabridge.

Sughosha (6):
gnu: asio: Update to 1.28.0.
gnu: Add bitsery.
gnu: Add function2.
gnu: Add tomlplusplus.
gnu: Add clap.
gnu: Add yabridge.

gnu/local.mk | 2 +
gnu/packages/audio.scm | 151 ++++++++++++++
gnu/packages/cpp.scm | 79 ++++++++
gnu/packages/networking.scm | 6 +-
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
6 files changed, 462 insertions(+), 3 deletions(-)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch


base-commit: c0895371c5759c7d9edb330774e90f192cc4cf2c
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 1/6] gnu: asio: Update to 1.28.0.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@proton.me)
cd33a672a97b984133ed98b96d8050959277c06f.1698829285.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/networking.scm (asio): Update to 1.28.0.
---
gnu/packages/networking.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 86309e4ab3..1d50025d83 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3412,14 +3412,14 @@ (define-public can-utils
(define-public asio
(package
(name "asio")
- (version "1.22.2")
+ (version "1.28.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asio/asio/"
- version " (Stable)/asio-" version ".tar.bz2"))
+ version " (Stable)/asio-" version ".tar.gz"))
(sha256
- (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp"))))
+ (base32 "15yavn07m6fasf0lrxljx3p79zi23mzn0g0fhggrnngyqqyaam78"))))
(build-system gnu-build-system)
(inputs
(list boost openssl))
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 2/6] gnu: Add bitsery.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@proton.me)
569e9401ff75a25937a96c1acbe8dbb0f04d4ca3.1698829285.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (bitsery): New variable.
---
gnu/packages/cpp.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 0ce60c49de..7d91c72489 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2278,6 +2278,30 @@ (define-public gulrak-filesystem
(home-page "https://github.com/gulrak/filesystem")
(license license:expat)))
+(define-public bitsery
+ (package
+ (name "bitsery")
+ (version "5.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fraillt/bitsery")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hv2fya7w53bfhlk79b1qnjg1qy076s8kvg22sfdq05bh0hxqrxf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-DBITSERY_BUILD_TESTS=ON")))
+ (native-inputs (list googletest))
+ (synopsis "Header only C++ binary serialization library")
+ (description "This package provides header only C++ binary serialization
+library. It is designed around the networking requirements for real-time data
+delivery, especially for games.")
+ (home-page "https://github.com/fraillt/bitsery")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 3/6] gnu: Add function2.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@proton.me)
ee00a117b9678a612b9ebac0ecd9c92387b5f55f.1698829285.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (function2): New variable.

Change-Id: I29eb928aa943fa6b796d699271ca523075d44d38
---
gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 7d91c72489..6c99f39639 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2302,6 +2302,39 @@ (define-public bitsery
(home-page "https://github.com/fraillt/bitsery")
(license license:expat)))
+(define-public function2
+ (package
+ (name "function2")
+ (version "4.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Naios/function2")
+ (commit version)
+ ;; Tests require to compile googletest with custom
+ ;; features.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0zdi6jk3srjkx82kbmd9rfmj9c1rr2xlsz2hbdcjvcjp63vzzxd1"))))
+ (build-system cmake-build-system)
+ ;; The test size_match_layout fails on i586/i686. For more info:
+ ;; https://github.com/Naios/function2/issues/57
+ (arguments
+ (list #:tests? #f))
+ (synopsis "Improved implementations of std::function")
+ (description "This package provides the following implementations of
+std::function:
+@itemize
+@item copyable fu2::function
+@item move-only fu2::unique_function (capable of holding move only types)
+@item non-owning fu2::function_view (capable of referencing callables in a non
+owning way)
+@end itemize")
+ (home-page "https://naios.github.io/function2/")
+ (license license:boost1.0)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 5/6] gnu: Add clap.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
1998f3b99d5d118b047b8ece6333ddb11988b7cc.1698829285.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap): New variable.

Change-Id: I595adff236eacaf2934f4649e2f27a367f33d0ae
---
gnu/packages/audio.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 7c49ba1841..3a99131d1b 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2715,6 +2715,28 @@ (define-public jalv
plugin function as a JACK application.")
(license license:isc)))
+(define-public clap
+ (package
+ (name "clap")
+ (version "1.1.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0z1van2wj68qv5rcvf19rc4xg57ywycdzmc0wrzss334cd9z8qyg"))))
+ (build-system cmake-build-system)
+ (synopsis "Audio Plugin API")
+ (description
+ "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
+defines a standard for Digital Audio Workstations and audio plugins to work
+together.")
+ (home-page "https://cleveraudio.org/")
+ (license license:expat)))
+
(define-public ladspa
(package
(name "ladspa")
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 6/6] gnu: Add yabridge.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
16a0c66df80da5013e2d12979b6829e6273338cb.1698829285.git.sughosha@disroot.org
* gnu/packages/audio.scm (yabridge): New variable.
* gnu/packages/patches/yabridge-5.0.4-fix-dependency-search.patch:
New file.
* gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch:
New file.
* gnu/local.mk: Register the patch files.

Change-Id: I10331fbc9827bf1665a03afafe44a6c45c2c4c76
---
gnu/local.mk | 2 +
gnu/packages/audio.scm | 129 ++++++++++++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
4 files changed, 358 insertions(+)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch

Toggle diff (416 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 27e57302ae..d0867724e1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2114,6 +2114,7 @@ dist_patch_DATA = \
%D%/packages/patches/vinagre-newer-rdp-parameters.patch \
%D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
+ %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \
@@ -2165,6 +2166,7 @@ dist_patch_DATA = \
%D%/packages/patches/xterm-370-explicit-xcursor.patch \
%D%/packages/patches/xygrib-fix-finding-data.patch \
%D%/packages/patches/xygrib-newer-proj.patch \
+ %D%/packages/patches/yabridge-5.0.4-fix-dependency-search.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
%D%/packages/patches/zig-do-not-link-against-librt.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 3a99131d1b..aae97d4169 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -73,7 +73,9 @@ (define-module (gnu packages audio)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
@@ -136,6 +138,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages vim) ;xxd
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wine)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -5927,6 +5930,132 @@ (define-public mbelib
(license (list license:bsd-3 ; test/ framework
license:isc))))) ; the rest
+(define-public yabridge
+ (package
+ (name "yabridge")
+ (version "5.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/yabridge")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ayl706nv67jkixbrh9z7225gdwg2s4rzndx77761x33mk6by7a8"))
+ (patches
+ (search-patches
+ "yabridge-5.0.4-dependencies.patch"))
+ (modules '((guix build utils)))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "--cross-file=" #$source "/cross-wine.conf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-vst3-subproject
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (assoc-ref inputs "vst3sdk") "subprojects/vst3")))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/chainloader/utils.cpp"
+ (("\"/usr/local/lib64\",")
+ (string-append "\"/usr/local/lib64\",\n\""
+ #$output "/lib\",")))
+ (let ((wine
+ #$(match (%current-system)
+ ((or "x86_64-linux" "aarch64-linux") "wine64")
+ (_ "wine32")))
+ (arch
+ #$(match (%current-system)
+ ((or "x86_64-linux" "aarch64-linux")
+ "x86_64-unix")
+ (_ "i386-unix"))))
+ (substitute* "meson.build"
+ (("-lole32")
+ (search-input-file inputs
+ (string-append "/lib/" wine "/wine/"
+ arch "/libole32.a")))
+ (("-lshell32")
+ (search-input-file inputs
+ (string-append "/lib/" wine "/wine/"
+ arch "/libshell32.a")))
+ (("-luuid")
+ (search-input-file inputs
+ (string-append "/lib/" wine "/wine/"
+ arch "/libuuid.a")))))))
+ (replace 'install
+ (lambda _
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/bin")))
+ (find-files "." "-host\\.exe(|\\.so)$"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/lib")))
+ (find-files "." "libyabridge")))))))
+ (native-inputs
+ ;; NOTE: Use the default clap version with the next update of yabrigde.
+ ;; https://github.com/robbert-vdh/yabridge/commit/f67a170a882266d30e76977653272471498eab68
+ `(("clap"
+ ,(let ((version "1.1.7"))
+ (package/inherit clap
+ (version version)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name "clap" version))
+ (sha256
+ (base32
+ "1afjvllmzf2xmrpy8mcxk7zhii93b447ciaqw9lkj2wh9z217hsr")))))))
+ ("cmake-minimal" ,cmake-minimal)
+ ("function2" ,function2)
+ ("gulrak-filesystem" ,gulrak-filesystem)
+ ("pkg-config" ,pkg-config)
+ ("tomlplusplus" ,tomlplusplus)
+ ;; This is VST3 SDK v3.7.7_build_19 with the documentation and VSTGUI
+ ;; submodules removed and a dummy `meson.build` file that just lists all
+ ;; source files.
+ ("vst3sdk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/vst3sdk")
+ (commit (string-append "v3.7.7_build_19-patched"))
+ ;; Required for vst3_base, vst3_pluginterfaces,
+ ;; and vst3_public_sdk.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
+ (patches
+ (search-patches
+ "vst3sdk-3.7.7-allow-winelib-compilation.patch"))))))
+ (inputs
+ (list asio
+ bitsery
+ dbus
+ libxcb
+ (match (%current-system)
+ ((or "x86_64-linux" "aarch64") wine64)
+ (_ wine))))
+ ;; Support the platforms that are supported by wine and wine64.
+ (supported-systems
+ (package-supported-systems wine64))
+ (home-page "https://github.com/robbert-vdh/yabridge")
+ (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
+ (description
+ "@code{yabridge} is Yet Another way to use Windows audio plugins. It
+supports using both 32-bit and 64-bit Windows VST2, VST3, and CLAP plugins in
+64-bit Linux plugin hosts as if they were native plugins, with optional support
+for plugin groups to enable inter-plugin communication for VST2 plugins and
+quick startup times.")
+ (license license:gpl3+)))
+
(define-public ableton-link
(package
(name "ableton-link")
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..43639f978f
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
diff --git a/gnu/packages/patches/yabridge-5.0.4-dependencies.patch b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
new file mode 100644
index 0000000000..77db050e91
--- /dev/null
+++ b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
@@ -0,0 +1,36 @@
+Meson fails to detect bitsery, function2 and gulrak-filesystem.
+https://github.com/robbert-vdh/yabridge/issues/18
+
+This patch removes these dependencies in "meson.build".
+
+
+diff --git a/meson.build b/meson.build
+index d8d9135b..b35ebfcd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -248,22 +248,13 @@ else
+ asio_dep = dependency('asio', version : '>=1.22.0')
+ endif
+
+-if meson.version().version_compare('>=0.60')
+- # Bitsery's CMake build definition is capitalized for some reason
+- bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
+-else
+- # Mmeson <=0.6.0 didn't support multiple names for a dependency, and since at
+- # the moment this is only relevant for packing on Arch btw, it's probably
+- # better to remove this conditional later than it is to bump the minimum Meson
+- # version now.
+- bitsery_dep = dependency('bitsery', version : '>=5.2.0')
+-endif
++bitsery_dep = declare_dependency()
+
+ # The D-Bus headers are also only accessed through the include path. We don't
+ # link to libdbus-1 to make soname changes don't completely break yabridge.
+ dbus_dep = dependency('dbus-1').partial_dependency(compile_args : true, includes : true)
+-function2_dep = dependency('function2', version : '>=4.0.0')
+-ghc_filesystem_dep = dependency('ghc_filesystem', modules : 'ghcFilesystem::ghc_filesystem', version : '>=1.5.0')
++function2_dep = declare_dependency()
++ghc_filesystem_dep = declare_dependency()
+ threads_dep = dependency('threads')
+ # Tomlplusplus recently added a shraed library version. We don't want to link to that.
+ tomlplusplus_dep = dependency('tomlplusplus', version : '>=3.3.0', default_options : ['compile_library=false']).partial_dependency(compile_args : true, includes : true)
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:09
[PATCH 4/6] gnu: Add tomlplusplus.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
70d0b1f869f5e305c8f74c307b74a42ff47e5359.1698829285.git.sughosha@disroot.org
* gnu/packages/cpp.scm (tomlplusplus): New variable.

Change-Id: I7c12b76fe135cd22b54a56560aac699e452009bb
---
gnu/packages/cpp.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 6c99f39639..450c4b3dc1 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -78,6 +78,7 @@ (define-module (gnu packages cpp)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages c)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
@@ -2335,6 +2336,27 @@ (define-public function2
(home-page "https://naios.github.io/function2/")
(license license:boost1.0)))
+(define-public tomlplusplus
+ (package
+ (name "tomlplusplus")
+ (version "3.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/marzer/tomlplusplus")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hvbifzcc97r9jwjzpnq31ynqnj5y93cjz4frmgddnkg8hxmp6w7"))))
+ (build-system meson-build-system)
+ (native-inputs (list cmake-minimal))
+ (synopsis "Header-only TOML config file parser and serializer for C++17")
+ (description "This package provides Header-only TOML config file parser and
+serializer for C++17.")
+ (home-page "https://marzer.github.io/tomlplusplus/")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 1 Nov 2023 10:24
(address . control@debbugs.gnu.org)
BC29CF01-11F4-40F4-A32D-7B255814EAD7@disroot.org
merge 66870 63065
quit
Attachment: file
S
S
Sughosha wrote on 1 Nov 2023 10:28
(address . control@debbugs.gnu.org)
DE46F1CE-E15D-424A-BFF8-2FCFD2870356@disroot.org
retitle 63065 [PATCH v4 0/7] gnu: Add yabridgectl.
quit
Attachment: file
S
S
sughosha wrote on 8 Nov 2023 15:22
(address . control@debbugs.gnu.org)
4a157948b5ac0ca4293ff61b80a91ef8@disroot.org
unmerge 63065

quit
Attachment: file
G
G
Gabriel Wicki wrote on 29 Nov 2023 14:25
(address . control@debbugs.gnu.org)
xzasa4jvsferwqw2rhjowxcnff3k6a4ykazss3aw3av3hiuir4@ptegcj4viy7z
retitle 66870 [PATCH 0/6] Add yabridge.
thanks
G
G
Gabriel Wicki wrote on 29 Nov 2023 15:48
Review
(name . Sughosha)(address . sughosha@disroot.org)(address . 66870@debbugs.gnu.org)
kfwilbbj5xvbrd6qxt6wg5qtobqmqjwbiyhes2qcoiin4r2mgh@hvcxlt5gdttz
Hi

So i've de-frizzled the patches by renaming #66870 to "[PATCH 0/6] Add
yabridge."

[PATCH 1/6] looks good to me! Have you checked the packages depending
on asio still build and work?

You can check the dependents with this command:

$ guix refresh -l asio
Building the following 8 packages would ensure 16 dependent packages are rebuilt: emacs-ob-sclang@0.1-1.cd3f3c8 cl-collider@2018.7.15-0.a469088 ecl-cl-collider@2018.7.15-0.a469088 gnome-arcade@0.240 widelands@1.1 musikcube@3.0.1 jami@20230323.0 restbed@4.8

I checked and they all still build fine :)

[PATCH 2/6] LGTM.

[PATCH 3/6] Looks goot, although I am a bit confused WRT the comment for
the (recursive #t) clause in the (source ..) field (indicating we need
to recursively copy the repo for the tests to complete) and argument
(#:tests? #f) indicating that the tests wouldn't be run.

[PATCH 4/6] LGTM.

[PATCH 5/6] LGTM.

[PATCH 6/6] Wow, now this is a big one! Apart from the following
comments this looks good to me!

- I'm not sure whether your (let ((arch))) clause isn't an abuse; you
test whether (%current-system) is either x86_64-linux or aarch64-linux
and set it to x86_64-unix and i386-unix otherwise. Does this actually
work for aarch64-linux systems? You could make use of the
target-64-bit? function in (guix utils) and only allow the package to
build on x86 systems. Also, you inherit wine64's supported-systems
field - which only lists x86_64-linux. Building for i368 seems to be
unsupported by our wine packages (or wine in general?)

- I'm a bit confused about your patch series adding clap 1.1.9 -
although yabridge seems to need 1.1.7. Why not add clap@1.1.7 with this
series and with the next upgrade of yabridge also update clap?
- Similar with input vst3sdk: Why not add it as a separate package?
If I interpret the situation correctly, using default definitions of
these inputs could also let you simplify your native-inputs list to the
new style.



All packages built fine and running $(guix style) didn't change
anything.
$(guix lint) on the patched packages gave the following output:

~/src/guix/gnu/packages/networking.scm:3431:15: asio@1.28.0: permanent
fetching CVE database for 2023...
~/src/guix/gnu/packages/networking.scm:3417:5: asio@1.28.0:
source not archived on Software Heritage and missing from the Disarchive
database
~/src/guix/gnu/packages/cpp.scm:2311:13: function2@4.2.3:
can be upgraded to 4.2.4
~/src/guix/gnu/packages/audio.scm:2724:13: clap@1.1.9: can
be upgraded to 1.1.10
~/src/guix/gnu/packages/audio.scm:6002:0: yabridge@5.0.5:
line 6002 is way too long (95 characters)
~/src/guix/gnu/packages/audio.scm:6013:0: yabridge@5.0.5:
line 6013 is way too long (100 characters)



Please send in a updated patch-set.

Thanks for your time and effort!
g
S
S
sughosha wrote on 30 Nov 2023 09:15
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)(address . 66870@debbugs.gnu.org)
8C60685B-138C-4D25-9598-3DA6EDC52C53@disroot.org
Hi,

Thanks for the review.

Toggle quote (3 lines)
> So i've de-frizzled the patches by renaming #66870 to "[PATCH 0/6] Add
> yabridge."

Thank you.

Toggle quote (3 lines)
> [PATCH 1/6] looks good to me! Have you checked the packages depending
> on asio still build and work?

I checked only musikcube, jami and widelands and they worked fine.
Others
must work as well.

Toggle quote (6 lines)
> [PATCH 3/6] Looks goot, although I am a bit confused WRT the comment
> for
> the (recursive #t) clause in the (source ..) field (indicating we need
> to recursively copy the repo for the tests to complete) and argument
> (#:tests? #f) indicating that the tests wouldn't be run.

Removed "(recursive #t)".

Toggle quote (9 lines)
> - I'm not sure whether your (let ((arch))) clause isn't an abuse; you
> test whether (%current-system) is either x86_64-linux or aarch64-linux
> and set it to x86_64-unix and i386-unix otherwise. Does this actually
> work for aarch64-linux systems? You could make use of the
> target-64-bit? function in (guix utils) and only allow the package to
> build on x86 systems. Also, you inherit wine64's supported-systems
> field - which only lists x86_64-linux. Building for i368 seems to be
> unsupported by our wine packages (or wine in general?)

Removed the substitute as it is no more needed.

Toggle quote (4 lines)
> - I'm a bit confused about your patch series adding clap 1.1.9 -
> although yabridge seems to need 1.1.7. Why not add clap@1.1.7 with this
> series and with the next upgrade of yabridge also update clap?

Moved clap@1.1.7 to a seperate definition.

Toggle quote (5 lines)
> - Similar with input vst3sdk: Why not add it as a separate package?
> If I interpret the situation correctly, using default definitions of
> these inputs could also let you simplify your native-inputs list to the
> new style.

This vst3sdk is not the original one. It is found in a different
repository than the original one and is suppose to clone as subproject.
So
it does not make sense to package it in a seperate definition.

Toggle quote (19 lines)
> $(guix lint) on the patched packages gave the following output:
>
> ~/src/guix/gnu/packages/networking.scm:3431:15: asio@1.28.0: permanent
> redirect from https://think-async.com/Asio to
> https://think-async.com/Asio/
> fetching CVE database for 2023...
> ~/src/guix/gnu/packages/networking.scm:3417:5: asio@1.28.0:
> source not archived on Swith "(let ((arch)))"oftware Heritage and
> missing from the Disarchive
> database
> ~/src/guix/gnu/packages/cpp.scm:2311:13: function2@4.2.3:
> can be upgraded to 4.2.4
> ~/src/guix/gnu/packages/audio.scm:2724:13: clap@1.1.9: can
> be upgraded to 1.1.10
> ~/src/guix/gnu/packages/audio.scm:6002:0: yabridge@5.0.5:
> line 6002 is way too long (95 characters)
> ~/src/guix/gnu/packages/audio.scm:6013:0: yabridge@5.0.5:
> line 6013 is way too long (100 characters)

Fixed and updated these packages.

I will submit the v2 patches with the above changes.

Regards,
Sughosha
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 1/7] gnu: asio: Update to 1.28.0.
(address . 66870@debbugs.gnu.org)
6f5cc74f73fb4f4a28c2e40b525058f2b3005ad0.1701334597.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/networking.scm (asio): Update to 1.28.0.
[home-page]: Fix homepage.

Change-Id: I7c21512a60a2621911d856d53cef14638e4d2afb
---
gnu/packages/networking.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 6b415076e8..bfd53e0a3f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3381,14 +3381,14 @@ (define-public can-utils
(define-public asio
(package
(name "asio")
- (version "1.22.2")
+ (version "1.28.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asio/asio/"
- version " (Stable)/asio-" version ".tar.bz2"))
+ version " (Stable)/asio-" version ".tar.gz"))
(sha256
- (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp"))))
+ (base32 "15yavn07m6fasf0lrxljx3p79zi23mzn0g0fhggrnngyqqyaam78"))))
(build-system gnu-build-system)
(inputs
(list boost openssl))
@@ -3397,7 +3397,7 @@ (define-public asio
(list
(string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
(string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))))
- (home-page "https://think-async.com/Asio")
+ (home-page "https://think-async.com/Asio/")
(synopsis "C++ library for ASynchronous network I/O")
(description "Asio is a cross-platform C++ library for network and
low-level I/O programming that provides developers with a consistent
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 0/7] gnu: Add yabridge.
(address . 66870@debbugs.gnu.org)
cover.1701334597.git.sughosha@disroot.org
This v2 series contains updates and fixes mistakes in v1.

Sughosha (7):
gnu: asio: Update to 1.28.0.
gnu: Add bitsery.
gnu: Add function2.
gnu: Add tomlplusplus.
gnu: Add clap.
gnu: Add clap-1.1.7.
gnu: Add yabridge.

gnu/local.mk | 2 +
gnu/packages/audio.scm | 125 ++++++++++++
gnu/packages/cpp.scm | 76 +++++++
gnu/packages/networking.scm | 8 +-
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
6 files changed, 434 insertions(+), 4 deletions(-)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch


base-commit: bdbb9dc27a590b08651d058f06a42caa26e04abb
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 2/7] gnu: Add bitsery.
(address . 66870@debbugs.gnu.org)
a4169fed966e2980c17b9c0db182734f6502562c.1701334597.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (bitsery): New variable.
---
gnu/packages/cpp.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 5e35a03254..16fd5bcec5 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2319,6 +2319,30 @@ (define-public gulrak-filesystem
(home-page "https://github.com/gulrak/filesystem")
(license license:expat)))
+(define-public bitsery
+ (package
+ (name "bitsery")
+ (version "5.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fraillt/bitsery")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hv2fya7w53bfhlk79b1qnjg1qy076s8kvg22sfdq05bh0hxqrxf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-DBITSERY_BUILD_TESTS=ON")))
+ (native-inputs (list googletest))
+ (synopsis "Header only C++ binary serialization library")
+ (description "This package provides header only C++ binary serialization
+library. It is designed around the networking requirements for real-time data
+delivery, especially for games.")
+ (home-page "https://github.com/fraillt/bitsery")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 4/7] gnu: Add tomlplusplus.
(address . 66870@debbugs.gnu.org)
4a63919d60c7b947d990be5faf4d42ccf3d71107.1701334597.git.sughosha@disroot.org
* gnu/packages/cpp.scm (tomlplusplus): New variable.

Change-Id: I7c12b76fe135cd22b54a56560aac699e452009bb
---
gnu/packages/cpp.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 24e519b10b..272127737b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -78,6 +78,7 @@ (define-module (gnu packages cpp)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages c)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
@@ -2373,6 +2374,27 @@ (define-public function2
(home-page "https://naios.github.io/function2/")
(license license:boost1.0)))
+(define-public tomlplusplus
+ (package
+ (name "tomlplusplus")
+ (version "3.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/marzer/tomlplusplus")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hvbifzcc97r9jwjzpnq31ynqnj5y93cjz4frmgddnkg8hxmp6w7"))))
+ (build-system meson-build-system)
+ (native-inputs (list cmake-minimal))
+ (synopsis "Header-only TOML config file parser and serializer for C++17")
+ (description "This package provides Header-only TOML config file parser and
+serializer for C++17.")
+ (home-page "https://marzer.github.io/tomlplusplus/")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 5/7] gnu: Add clap.
(address . 66870@debbugs.gnu.org)
3ea9ec83b90d6d852065c7810ad5d0907579dc51.1701334597.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap): New variable.

Change-Id: I595adff236eacaf2934f4649e2f27a367f33d0ae
---
gnu/packages/audio.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e4fe4c2da7..e964c74438 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2715,6 +2715,28 @@ (define-public jalv
plugin function as a JACK application.")
(license license:isc)))
+(define-public clap
+ (package
+ (name "clap")
+ (version "1.1.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0skn3cvh7zs173v3i6ywdmddqzrhxvivwdisvmqc6hvq594f8z80"))))
+ (build-system cmake-build-system)
+ (synopsis "Audio Plugin API")
+ (description
+ "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
+defines a standard for Digital Audio Workstations and audio plugins to work
+together.")
+ (home-page "https://cleveraudio.org/")
+ (license license:expat)))
+
(define-public ladspa
(package
(name "ladspa")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 3/7] gnu: Add function2.
(address . 66870@debbugs.gnu.org)
eda28672b93c14b67a5acc639fd6f52ed51cfe2d.1701334597.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (function2): New variable.

Change-Id: I29eb928aa943fa6b796d699271ca523075d44d38
---
gnu/packages/cpp.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 16fd5bcec5..24e519b10b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2343,6 +2343,36 @@ (define-public bitsery
(home-page "https://github.com/fraillt/bitsery")
(license license:expat)))
+(define-public function2
+ (package
+ (name "function2")
+ (version "4.2.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Naios/function2")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "15k8i872s2jpwbpxfq42lr96q9wplvr8gjs2msf5i4ylyp846dgf"))))
+ (build-system cmake-build-system)
+ ;; The test size_match_layout fails on i586/i686. For more info:
+ ;; https://github.com/Naios/function2/issues/57
+ (arguments
+ (list #:tests? #f))
+ (synopsis "Improved implementations of std::function")
+ (description "This package provides the following implementations of
+std::function:
+@itemize
+@item copyable fu2::function
+@item move-only fu2::unique_function (capable of holding move only types)
+@item non-owning fu2::function_view (capable of referencing callables in a non
+owning way)
+@end itemize")
+ (home-page "https://naios.github.io/function2/")
+ (license license:boost1.0)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 6/7] gnu: Add clap-1.1.7.
(address . 66870@debbugs.gnu.org)
d260ec53102dfdce06fbac3dd27322bc84d4c94e.1701334597.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap-1.1.7): New variable.

Change-Id: Iae9f11784279fc7a73087d2009a6d7e280fe80b8
---
gnu/packages/audio.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Toggle diff (27 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e964c74438..6e1da4c288 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2737,6 +2737,20 @@ (define-public clap
(home-page "https://cleveraudio.org/")
(license license:expat)))
+(define-public clap-1.1.7
+ (let ((version "1.1.7"))
+ (package/inherit clap
+ (version version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name "clap" version))
+ (sha256
+ (base32
+ "1afjvllmzf2xmrpy8mcxk7zhii93b447ciaqw9lkj2wh9z217hsr")))))))
+
(define-public ladspa
(package
(name "ladspa")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 10:02
[PATCH v2 7/7] gnu: Add yabridge.
(address . 66870@debbugs.gnu.org)
4481b93da8aad542e3e65080e17271055482c3cb.1701334597.git.sughosha@disroot.org
* gnu/packages/audio.scm (yabridge): New variable.
* gnu/packages/patches/yabridge-5.0.4-dependencies.patch:
New file.
* gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch:
New file.
* gnu/local.mk: Register the patch files.

Change-Id: Ic7e5fdc3b24349a01ed9b301d0a353e55c4479b8
---
gnu/local.mk | 2 +
gnu/packages/audio.scm | 89 ++++++++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
4 files changed, 318 insertions(+)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch

Toggle diff (376 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index a8142bb0f2..c93a7b3659 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2119,6 +2119,7 @@ dist_patch_DATA = \
%D%/packages/patches/vinagre-newer-rdp-parameters.patch \
%D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
+ %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \
@@ -2170,6 +2171,7 @@ dist_patch_DATA = \
%D%/packages/patches/xterm-370-explicit-xcursor.patch \
%D%/packages/patches/xygrib-fix-finding-data.patch \
%D%/packages/patches/xygrib-newer-proj.patch \
+ %D%/packages/patches/yabridge-5.0.4-dependencies.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
%D%/packages/patches/zig-do-not-link-against-librt.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 6e1da4c288..36b673104d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -73,7 +73,9 @@ (define-module (gnu packages audio)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
@@ -136,6 +138,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages vim) ;xxd
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wine)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -5941,6 +5944,92 @@ (define-public mbelib
(license (list license:bsd-3 ; test/ framework
license:isc))))) ; the rest
+(define-public yabridge
+ (package
+ (name "yabridge")
+ (version "5.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/yabridge")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ayl706nv67jkixbrh9z7225gdwg2s4rzndx77761x33mk6by7a8"))
+ (patches
+ (search-patches
+ "yabridge-5.0.4-dependencies.patch"))
+ (modules '((guix build utils)))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "--cross-file=" #$source "/cross-wine.conf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-vst3-subproject
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (assoc-ref inputs "vst3sdk") "subprojects/vst3")))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/chainloader/utils.cpp"
+ (("\"/usr/local/lib64\",")
+ (string-append "\"/usr/local/lib64\",\n\""
+ #$output "/lib\",")))))
+ (replace 'install
+ (lambda _
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/bin")))
+ (find-files "." "-host\\.exe(|\\.so)$"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/lib")))
+ (find-files "." "libyabridge")))))))
+ (native-inputs
+ ;; NOTE: Use the latest clap version with the next update of yabrigde.
+ `(("clap" ,clap-1.1.7)
+ ("cmake-minimal" ,cmake-minimal)
+ ("function2" ,function2)
+ ("gulrak-filesystem" ,gulrak-filesystem)
+ ("pkg-config" ,pkg-config)
+ ("tomlplusplus" ,tomlplusplus)
+ ;; This is VST3 SDK v3.7.7_build_19 with the documentation and VSTGUI
+ ;; submodules removed and a dummy `meson.build` file that just lists all
+ ;; source files.
+ ("vst3sdk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/vst3sdk")
+ (commit (string-append "v3.7.7_build_19-patched"))
+ ;; Required for vst3_base, vst3_pluginterfaces,
+ ;; and vst3_public_sdk.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
+ (patches
+ (search-patches
+ "vst3sdk-3.7.7-allow-winelib-compilation.patch"))))))
+ (inputs
+ (list asio
+ bitsery
+ dbus
+ libxcb
+ wine64))
+ (supported-systems
+ (package-supported-systems wine64))
+ (home-page "https://github.com/robbert-vdh/yabridge")
+ (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
+ (description
+ "@code{yabridge} is Yet Another way to use Windows audio plugins. It
+supports using Windows VST2, VST3, and CLAP plugins in plugin hosts as if they
+were native plugins, with optional support for plugin groups to enable
+inter-plugin communication for VST2 plugins and quick startup times.")
+ (license license:gpl3+)))
+
(define-public ableton-link
(package
(name "ableton-link")
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..43639f978f
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
diff --git a/gnu/packages/patches/yabridge-5.0.4-dependencies.patch b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
new file mode 100644
index 0000000000..77db050e91
--- /dev/null
+++ b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
@@ -0,0 +1,36 @@
+Meson fails to detect bitsery, function2 and gulrak-filesystem.
+https://github.com/robbert-vdh/yabridge/issues/18
+
+This patch removes these dependencies in "meson.build".
+
+
+diff --git a/meson.build b/meson.build
+index d8d9135b..b35ebfcd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -248,22 +248,13 @@ else
+ asio_dep = dependency('asio', version : '>=1.22.0')
+ endif
+
+-if meson.version().version_compare('>=0.60')
+- # Bitsery's CMake build definition is capitalized for some reason
+- bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
+-else
+- # Mmeson <=0.6.0 didn't support multiple names for a dependency, and since at
+- # the moment this is only relevant for packing on Arch btw, it's probably
+- # better to remove this conditional later than it is to bump the minimum Meson
+- # version now.
+- bitsery_dep = dependency('bitsery', version : '>=5.2.0')
+-endif
++bitsery_dep = declare_dependency()
+
+ # The D-Bus headers are also only accessed through the include path. We don't
+ # link to libdbus-1 to make soname changes don't completely break yabridge.
+ dbus_dep = dependency('dbus-1').partial_dependency(compile_args : true, includes : true)
+-function2_dep = dependency('function2', version : '>=4.0.0')
+-ghc_filesystem_dep = dependency('ghc_filesystem', modules : 'ghcFilesystem::ghc_filesystem', version : '>=1.5.0')
++function2_dep = declare_dependency()
++ghc_filesystem_dep = declare_dependency()
+ threads_dep = dependency('threads')
+ # Tomlplusplus recently added a shraed library version. We don't want to link to that.
+ tomlplusplus_dep = dependency('tomlplusplus', version : '>=3.3.0', default_options : ['compile_library=false']).partial_dependency(compile_args : true, includes : true)
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:09
Re: Review
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)(address . 66870@debbugs.gnu.org)
88DDB778-4EFD-4FE8-802F-2E75FADFE48E@disroot.org
A small thing to remove in [PATCH v2 7/7]:
in yabridge definition, "(modules '((guix build utils)))" inside "(source)" is not needed. If you can remove it before merging, it would be great.

Thank you.
Attachment: file
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 2/7] gnu: Add bitsery.
(address . 66870@debbugs.gnu.org)
a4169fed966e2980c17b9c0db182734f6502562c.1701340263.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (bitsery): New variable.
---
gnu/packages/cpp.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 5e35a03254..16fd5bcec5 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2319,6 +2319,30 @@ (define-public gulrak-filesystem
(home-page "https://github.com/gulrak/filesystem")
(license license:expat)))
+(define-public bitsery
+ (package
+ (name "bitsery")
+ (version "5.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fraillt/bitsery")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hv2fya7w53bfhlk79b1qnjg1qy076s8kvg22sfdq05bh0hxqrxf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-DBITSERY_BUILD_TESTS=ON")))
+ (native-inputs (list googletest))
+ (synopsis "Header only C++ binary serialization library")
+ (description "This package provides header only C++ binary serialization
+library. It is designed around the networking requirements for real-time data
+delivery, especially for games.")
+ (home-page "https://github.com/fraillt/bitsery")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 1/7] gnu: asio: Update to 1.28.0.
(address . 66870@debbugs.gnu.org)
6f5cc74f73fb4f4a28c2e40b525058f2b3005ad0.1701340263.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/networking.scm (asio): Update to 1.28.0.
[home-page]: Fix homepage.

Change-Id: I7c21512a60a2621911d856d53cef14638e4d2afb
---
gnu/packages/networking.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Toggle diff (35 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 6b415076e8..bfd53e0a3f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3381,14 +3381,14 @@ (define-public can-utils
(define-public asio
(package
(name "asio")
- (version "1.22.2")
+ (version "1.28.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asio/asio/"
- version " (Stable)/asio-" version ".tar.bz2"))
+ version " (Stable)/asio-" version ".tar.gz"))
(sha256
- (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp"))))
+ (base32 "15yavn07m6fasf0lrxljx3p79zi23mzn0g0fhggrnngyqqyaam78"))))
(build-system gnu-build-system)
(inputs
(list boost openssl))
@@ -3397,7 +3397,7 @@ (define-public asio
(list
(string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
(string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))))
- (home-page "https://think-async.com/Asio")
+ (home-page "https://think-async.com/Asio/")
(synopsis "C++ library for ASynchronous network I/O")
(description "Asio is a cross-platform C++ library for network and
low-level I/O programming that provides developers with a consistent

base-commit: bdbb9dc27a590b08651d058f06a42caa26e04abb
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 5/7] gnu: Add clap.
(address . 66870@debbugs.gnu.org)
3ea9ec83b90d6d852065c7810ad5d0907579dc51.1701340263.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap): New variable.

Change-Id: I595adff236eacaf2934f4649e2f27a367f33d0ae
---
gnu/packages/audio.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e4fe4c2da7..e964c74438 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2715,6 +2715,28 @@ (define-public jalv
plugin function as a JACK application.")
(license license:isc)))
+(define-public clap
+ (package
+ (name "clap")
+ (version "1.1.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0skn3cvh7zs173v3i6ywdmddqzrhxvivwdisvmqc6hvq594f8z80"))))
+ (build-system cmake-build-system)
+ (synopsis "Audio Plugin API")
+ (description
+ "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
+defines a standard for Digital Audio Workstations and audio plugins to work
+together.")
+ (home-page "https://cleveraudio.org/")
+ (license license:expat)))
+
(define-public ladspa
(package
(name "ladspa")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 3/7] gnu: Add function2.
(address . 66870@debbugs.gnu.org)
eda28672b93c14b67a5acc639fd6f52ed51cfe2d.1701340263.git.sughosha@disroot.org
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (function2): New variable.

Change-Id: I29eb928aa943fa6b796d699271ca523075d44d38
---
gnu/packages/cpp.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 16fd5bcec5..24e519b10b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2343,6 +2343,36 @@ (define-public bitsery
(home-page "https://github.com/fraillt/bitsery")
(license license:expat)))
+(define-public function2
+ (package
+ (name "function2")
+ (version "4.2.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Naios/function2")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "15k8i872s2jpwbpxfq42lr96q9wplvr8gjs2msf5i4ylyp846dgf"))))
+ (build-system cmake-build-system)
+ ;; The test size_match_layout fails on i586/i686. For more info:
+ ;; https://github.com/Naios/function2/issues/57
+ (arguments
+ (list #:tests? #f))
+ (synopsis "Improved implementations of std::function")
+ (description "This package provides the following implementations of
+std::function:
+@itemize
+@item copyable fu2::function
+@item move-only fu2::unique_function (capable of holding move only types)
+@item non-owning fu2::function_view (capable of referencing callables in a non
+owning way)
+@end itemize")
+ (home-page "https://naios.github.io/function2/")
+ (license license:boost1.0)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 4/7] gnu: Add tomlplusplus.
(address . 66870@debbugs.gnu.org)
4a63919d60c7b947d990be5faf4d42ccf3d71107.1701340263.git.sughosha@disroot.org
* gnu/packages/cpp.scm (tomlplusplus): New variable.

Change-Id: I7c12b76fe135cd22b54a56560aac699e452009bb
---
gnu/packages/cpp.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 24e519b10b..272127737b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -78,6 +78,7 @@ (define-module (gnu packages cpp)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages c)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
@@ -2373,6 +2374,27 @@ (define-public function2
(home-page "https://naios.github.io/function2/")
(license license:boost1.0)))
+(define-public tomlplusplus
+ (package
+ (name "tomlplusplus")
+ (version "3.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/marzer/tomlplusplus")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hvbifzcc97r9jwjzpnq31ynqnj5y93cjz4frmgddnkg8hxmp6w7"))))
+ (build-system meson-build-system)
+ (native-inputs (list cmake-minimal))
+ (synopsis "Header-only TOML config file parser and serializer for C++17")
+ (description "This package provides Header-only TOML config file parser and
+serializer for C++17.")
+ (home-page "https://marzer.github.io/tomlplusplus/")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 6/7] gnu: Add clap-1.1.7.
(address . 66870@debbugs.gnu.org)
d260ec53102dfdce06fbac3dd27322bc84d4c94e.1701340263.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap-1.1.7): New variable.

Change-Id: Iae9f11784279fc7a73087d2009a6d7e280fe80b8
---
gnu/packages/audio.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Toggle diff (27 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e964c74438..6e1da4c288 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2737,6 +2737,20 @@ (define-public clap
(home-page "https://cleveraudio.org/")
(license license:expat)))
+(define-public clap-1.1.7
+ (let ((version "1.1.7"))
+ (package/inherit clap
+ (version version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name "clap" version))
+ (sha256
+ (base32
+ "1afjvllmzf2xmrpy8mcxk7zhii93b447ciaqw9lkj2wh9z217hsr")))))))
+
(define-public ladspa
(package
(name "ladspa")
--
2.41.0
S
S
Sughosha wrote on 30 Nov 2023 11:32
[PATCH v3 7/7] gnu: Add yabridge.
(address . 66870@debbugs.gnu.org)
0dd723d14d26f8ecb64fe829a046452e2189b69b.1701340263.git.sughosha@disroot.org
* gnu/packages/audio.scm (yabridge): New variable.
* gnu/packages/patches/yabridge-5.0.4-dependencies.patch:
New file.
* gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch:
New file.
* gnu/local.mk: Register the patch files.

Change-Id: Ic7e5fdc3b24349a01ed9b301d0a353e55c4479b8
---
gnu/local.mk | 2 +
gnu/packages/audio.scm | 88 ++++++++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
4 files changed, 317 insertions(+)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch

Toggle diff (375 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index a8142bb0f2..c93a7b3659 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2119,6 +2119,7 @@ dist_patch_DATA = \
%D%/packages/patches/vinagre-newer-rdp-parameters.patch \
%D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
+ %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \
@@ -2170,6 +2171,7 @@ dist_patch_DATA = \
%D%/packages/patches/xterm-370-explicit-xcursor.patch \
%D%/packages/patches/xygrib-fix-finding-data.patch \
%D%/packages/patches/xygrib-newer-proj.patch \
+ %D%/packages/patches/yabridge-5.0.4-dependencies.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
%D%/packages/patches/zig-do-not-link-against-librt.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 6e1da4c288..f842548c93 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -73,7 +73,9 @@ (define-module (gnu packages audio)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
@@ -136,6 +138,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages vim) ;xxd
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wine)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -5941,6 +5944,91 @@ (define-public mbelib
(license (list license:bsd-3 ; test/ framework
license:isc))))) ; the rest
+(define-public yabridge
+ (package
+ (name "yabridge")
+ (version "5.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/yabridge")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ayl706nv67jkixbrh9z7225gdwg2s4rzndx77761x33mk6by7a8"))
+ (patches
+ (search-patches
+ "yabridge-5.0.4-dependencies.patch"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "--cross-file=" #$source "/cross-wine.conf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-vst3-subproject
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (assoc-ref inputs "vst3sdk") "subprojects/vst3")))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/chainloader/utils.cpp"
+ (("\"/usr/local/lib64\",")
+ (string-append "\"/usr/local/lib64\",\n\""
+ #$output "/lib\",")))))
+ (replace 'install
+ (lambda _
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/bin")))
+ (find-files "." "-host\\.exe(|\\.so)$"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/lib")))
+ (find-files "." "libyabridge")))))))
+ (native-inputs
+ ;; NOTE: Use the latest clap version with the next update of yabrigde.
+ `(("clap" ,clap-1.1.7)
+ ("cmake-minimal" ,cmake-minimal)
+ ("function2" ,function2)
+ ("gulrak-filesystem" ,gulrak-filesystem)
+ ("pkg-config" ,pkg-config)
+ ("tomlplusplus" ,tomlplusplus)
+ ;; This is VST3 SDK v3.7.7_build_19 with the documentation and VSTGUI
+ ;; submodules removed and a dummy `meson.build` file that just lists all
+ ;; source files.
+ ("vst3sdk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/vst3sdk")
+ (commit (string-append "v3.7.7_build_19-patched"))
+ ;; Required for vst3_base, vst3_pluginterfaces,
+ ;; and vst3_public_sdk.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
+ (patches
+ (search-patches
+ "vst3sdk-3.7.7-allow-winelib-compilation.patch"))))))
+ (inputs
+ (list asio
+ bitsery
+ dbus
+ libxcb
+ wine64))
+ (supported-systems
+ (package-supported-systems wine64))
+ (home-page "https://github.com/robbert-vdh/yabridge")
+ (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
+ (description
+ "@code{yabridge} is Yet Another way to use Windows audio plugins. It
+supports using Windows VST2, VST3, and CLAP plugins in plugin hosts as if they
+were native plugins, with optional support for plugin groups to enable
+inter-plugin communication for VST2 plugins and quick startup times.")
+ (license license:gpl3+)))
+
(define-public ableton-link
(package
(name "ableton-link")
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..43639f978f
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
diff --git a/gnu/packages/patches/yabridge-5.0.4-dependencies.patch b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
new file mode 100644
index 0000000000..77db050e91
--- /dev/null
+++ b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
@@ -0,0 +1,36 @@
+Meson fails to detect bitsery, function2 and gulrak-filesystem.
+https://github.com/robbert-vdh/yabridge/issues/18
+
+This patch removes these dependencies in "meson.build".
+
+
+diff --git a/meson.build b/meson.build
+index d8d9135b..b35ebfcd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -248,22 +248,13 @@ else
+ asio_dep = dependency('asio', version : '>=1.22.0')
+ endif
+
+-if meson.version().version_compare('>=0.60')
+- # Bitsery's CMake build definition is capitalized for some reason
+- bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
+-else
+- # Mmeson <=0.6.0 didn't support multiple names for a dependency, and since at
+- # the moment this is only relevant for packing on Arch btw, it's probably
+- # better to remove this conditional later than it is to bump the minimum Meson
+- # version now.
+- bitsery_dep = dependency('bitsery', version : '>=5.2.0')
+-endif
++bitsery_dep = declare_dependency()
+
+ # The D-Bus headers are also only accessed through the include path. We don't
+ # link to libdbus-1 to make soname changes don't completely break yabridge.
+ dbus_dep = dependency('dbus-1').partial_dependency(compile_args : true, includes : true)
+-function2_dep = dependency('function2', version : '>=4.0.0')
+-ghc_filesystem_dep = dependency('ghc_filesystem', modules : 'ghcFilesystem::ghc_filesystem', version : '>=1.5.0')
++function2_dep = declare_dependency()
++ghc_filesystem_dep = declare_dependency()
+ threads_dep = dependency('threads')
+ # Tomlplusplus recently added a shraed library version. We don't want to link to that.
+ tomlplusplus_dep = dependency('tomlplusplus', version : '>=3.3.0', default_options : ['compile_library=false']).partial_dependency(compile_args : true, includes : true)
--
2.41.0
N
N
Nicolas Graves wrote on 28 Oct 10:46 +0100
[PATCH v4 3/5] gnu: Add clap.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
20241028094646.3557-3-ngraves@ngraves.fr
From: Sughosha <sughosha@disroot.org>

* gnu/packages/audio.scm (clap): New variable.

Change-Id: I595adff236eacaf2934f4649e2f27a367f33d0ae
---
gnu/packages/audio.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 1ab0cbdd05..e69dcc5d8c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2762,6 +2762,28 @@ (define-public jalv
plugin function as a JACK application.")
(license license:isc)))
+(define-public clap
+ (package
+ (name "clap")
+ (version "1.1.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0skn3cvh7zs173v3i6ywdmddqzrhxvivwdisvmqc6hvq594f8z80"))))
+ (build-system cmake-build-system)
+ (synopsis "Audio Plugin API")
+ (description
+ "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
+defines a standard for Digital Audio Workstations and audio plugins to work
+together.")
+ (home-page "https://cleveraudio.org/")
+ (license license:expat)))
+
(define-public ladspa
(package
(name "ladspa")
--
2.46.0
N
N
Nicolas Graves wrote on 28 Oct 10:46 +0100
[PATCH v4 2/5] gnu: Add function2.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@proton.me)
20241028094646.3557-2-ngraves@ngraves.fr
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (function2): New variable.

Change-Id: I29eb928aa943fa6b796d699271ca523075d44d38
---
gnu/packages/cpp.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 8cc7cfb1b0..9899fc595d 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2595,6 +2595,36 @@ (define-public bitsery
(home-page "https://github.com/fraillt/bitsery")
(license license:expat)))
+(define-public function2
+ (package
+ (name "function2")
+ (version "4.2.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Naios/function2")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "15k8i872s2jpwbpxfq42lr96q9wplvr8gjs2msf5i4ylyp846dgf"))))
+ (build-system cmake-build-system)
+ ;; The test size_match_layout fails on i586/i686. For more info:
+ ;; https://github.com/Naios/function2/issues/57
+ (arguments
+ (list #:tests? #f))
+ (synopsis "Improved implementations of std::function")
+ (description "This package provides the following implementations of
+std::function:
+@itemize
+@item copyable fu2::function
+@item move-only fu2::unique_function (capable of holding move only types)
+@item non-owning fu2::function_view (capable of referencing callables in a non
+owning way)
+@end itemize")
+ (home-page "https://naios.github.io/function2/")
+ (license license:boost1.0)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.46.0
N
N
Nicolas Graves wrote on 28 Oct 10:46 +0100
[PATCH v4 1/5] gnu: Add bitsery.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@proton.me)
20241028094646.3557-1-ngraves@ngraves.fr
From: Sughosha <sughosha@proton.me>

* gnu/packages/cpp.scm (bitsery): New variable.
---
gnu/packages/cpp.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 26fc169154..8cc7cfb1b0 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2571,6 +2571,30 @@ (define-public gulrak-filesystem
(home-page "https://github.com/gulrak/filesystem")
(license license:expat)))
+(define-public bitsery
+ (package
+ (name "bitsery")
+ (version "5.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fraillt/bitsery")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hv2fya7w53bfhlk79b1qnjg1qy076s8kvg22sfdq05bh0hxqrxf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-DBITSERY_BUILD_TESTS=ON")))
+ (native-inputs (list googletest))
+ (synopsis "Header only C++ binary serialization library")
+ (description "This package provides header only C++ binary serialization
+library. It is designed around the networking requirements for real-time data
+delivery, especially for games.")
+ (home-page "https://github.com/fraillt/bitsery")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.46.0
N
N
Nicolas Graves wrote on 28 Oct 10:46 +0100
[PATCH v4 4/5] gnu: Add clap-1.1.7.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
20241028094646.3557-4-ngraves@ngraves.fr
From: Sughosha <sughosha@disroot.org>

* gnu/packages/audio.scm (clap-1.1.7): New variable.

Change-Id: Iae9f11784279fc7a73087d2009a6d7e280fe80b8
---
gnu/packages/audio.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Toggle diff (27 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e69dcc5d8c..c3bcf6a13c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2784,6 +2784,20 @@ (define-public clap
(home-page "https://cleveraudio.org/")
(license license:expat)))
+(define-public clap-1.1.7
+ (let ((version "1.1.7"))
+ (package/inherit clap
+ (version version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name "clap" version))
+ (sha256
+ (base32
+ "1afjvllmzf2xmrpy8mcxk7zhii93b447ciaqw9lkj2wh9z217hsr")))))))
+
(define-public ladspa
(package
(name "ladspa")
--
2.46.0
N
N
Nicolas Graves wrote on 28 Oct 10:46 +0100
[PATCH v4 5/5] gnu: Add yabridge.
(address . 66870@debbugs.gnu.org)(name . Sughosha)(address . sughosha@disroot.org)
20241028094646.3557-5-ngraves@ngraves.fr
From: Sughosha <sughosha@disroot.org>

* gnu/packages/audio.scm (yabridge): New variable.
* gnu/packages/patches/yabridge-5.0.4-dependencies.patch:
New file.
* gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch:
New file.
* gnu/local.mk: Register the patch files.

Change-Id: Ic7e5fdc3b24349a01ed9b301d0a353e55c4479b8
---
gnu/local.mk | 2 +
gnu/packages/audio.scm | 87 ++++++++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
4 files changed, 316 insertions(+)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch

Toggle diff (370 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 6bd7c75090..2bf577e2a7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2293,6 +2293,7 @@ dist_patch_DATA = \
%D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch \
%D%/packages/patches/virt-manager-fix-gtk-cursor-theme-backtace.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
+ %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \
@@ -2347,6 +2348,7 @@ dist_patch_DATA = \
%D%/packages/patches/xterm-370-explicit-xcursor.patch \
%D%/packages/patches/xygrib-fix-finding-data.patch \
%D%/packages/patches/xygrib-newer-proj.patch \
+ %D%/packages/patches/yabridge-5.0.4-dependencies.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
%D%/packages/patches/zig-use-baseline-cpu-by-default.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index c3bcf6a13c..8f95fed26e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -78,6 +78,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages cdrom)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
@@ -146,6 +147,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages vim) ;xxd
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wine)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -6661,3 +6663,88 @@ (define-public easyeffects
@item Stereo tools
@end itemize")
(license license:gpl3+)))
+
+(define-public yabridge
+ (package
+ (name "yabridge")
+ (version "5.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/yabridge")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ayl706nv67jkixbrh9z7225gdwg2s4rzndx77761x33mk6by7a8"))
+ (patches
+ (search-patches
+ "yabridge-5.0.4-dependencies.patch"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "--cross-file=" #$source "/cross-wine.conf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-vst3-subproject
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (assoc-ref inputs "vst3sdk") "subprojects/vst3")))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/chainloader/utils.cpp"
+ (("\"/usr/local/lib64\",")
+ (string-append "\"/usr/local/lib64\",\n\""
+ #$output "/lib\",")))))
+ (replace 'install
+ (lambda _
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/bin")))
+ (find-files "." "-host\\.exe(|\\.so)$"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/lib")))
+ (find-files "." "libyabridge")))))))
+ (native-inputs
+ ;; NOTE: Use the latest clap version with the next update of yabrigde.
+ `(("clap" ,clap-1.1.7)
+ ("cmake-minimal" ,cmake-minimal)
+ ("function2" ,function2)
+ ("gulrak-filesystem" ,gulrak-filesystem)
+ ("pkg-config" ,pkg-config)
+ ("tomlplusplus" ,tomlplusplus)
+ ;; This is VST3 SDK v3.7.7_build_19 with the documentation and VSTGUI
+ ;; submodules removed and a dummy `meson.build` file that just lists all
+ ;; source files.
+ ("vst3sdk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/vst3sdk")
+ (commit (string-append "v3.7.7_build_19-patched"))
+ ;; Required for vst3_base, vst3_pluginterfaces,
+ ;; and vst3_public_sdk.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
+ (patches
+ (search-patches
+ "vst3sdk-3.7.7-allow-winelib-compilation.patch"))))))
+ (inputs
+ (list asio
+ bitsery
+ dbus
+ libxcb
+ wine64))
+ (supported-systems
+ (package-supported-systems wine64))
+ (home-page "https://github.com/robbert-vdh/yabridge")
+ (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
+ (description
+ "@code{yabridge} is Yet Another way to use Windows audio plugins. It
+supports using Windows VST2, VST3, and CLAP plugins in plugin hosts as if they
+were native plugins, with optional support for plugin groups to enable
+inter-plugin communication for VST2 plugins and quick startup times.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..43639f978f
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
diff --git a/gnu/packages/patches/yabridge-5.0.4-dependencies.patch b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
new file mode 100644
index 0000000000..77db050e91
--- /dev/null
+++ b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
@@ -0,0 +1,36 @@
+Meson fails to detect bitsery, function2 and gulrak-filesystem.
+https://github.com/robbert-vdh/yabridge/issues/18
+
+This patch removes these dependencies in "meson.build".
+
+
+diff --git a/meson.build b/meson.build
+index d8d9135b..b35ebfcd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -248,22 +248,13 @@ else
+ asio_dep = dependency('asio', version : '>=1.22.0')
+ endif
+
+-if meson.version().version_compare('>=0.60')
+- # Bitsery's CMake build definition is capitalized for some reason
+- bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
+-else
+- # Mmeson <=0.6.0 didn't support multiple names for a dependency, and since at
+- # the moment this is only relevant for packing on Arch btw, it's probably
+- # better to remove this conditional later than it is to bump the minimum Meson
+- # version now.
+- bitsery_dep = dependency('bitsery', version : '>=5.2.0')
+-endif
++bitsery_dep = declare_dependency()
+
+ # The D-Bus headers are also only accessed through the include path. We don't
+ # link to libdbus-1 to make soname changes don't completely break yabridge.
+ dbus_dep = dependency('dbus-1').partial_dependency(compile_args : true, includes : true)
+-function2_dep = dependency('function2', version : '>=4.0.0')
+-ghc_filesystem_dep = dependency('ghc_filesystem', modules : 'ghcFilesystem::ghc_filesystem', version : '>=1.5.0')
++function2_dep = declare_dependency()
++ghc_filesystem_dep = declare_dependency()
+ threads_dep = dependency('threads')
+ # Tomlplusplus recently added a shraed library version. We don't want to link to that.
+ tomlplusplus_dep = dependency('tomlplusplus', version : '>=3.3.0', default_options : ['compile_library=false']).partial_dependency(compile_args : true, includes : true)
--
2.46.0
G
G
Gabriel Wicki wrote on 25 Nov 17:32 +0100
Patchset review
(address . 66870@debbugs.gnu.org)
ceea7qbasyeebkvf7qxo2mg2zvhyznbwyjrcsfzkkxm7bqcscg@nxha7odqzrmv
There hasn't been any activity in quite some time so I use my
(perceived) responsability of being the only member of the audio team to
bump this issue/patch-request.

I guess this all (still) looks fine. Giving it a quick and dirty (I
tried mumi for the first time) attempt to build and test the products I
failed. Maybe re-basing the patch-series and re-submitting a
**complete** series would streamline merging? I will try to figure out
how I can help with that - given my team-membership and the lack of
merging-power (:
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 00/11] gnu: Add yabridge and yabridgectl.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
cover.1732814113.git.sughosha@disroot.org
This patch series adds yabridge and yabridgectl.

Sughosha (11):
gnu: Add bitsery.
gnu: Add function2.
gnu: Add clap.
gnu: Add clap-1.1.
gnu: Add yabridge.
gnu: rust-rustyline-9: Update to 9.1.2.
gnu: Add rust-promptly-0.3.
gnu: Add rust-reflink-0.1.
gnu: Add rust-ryu-0.2.
gnu: Add rust-serde-jsonrc-0.1.
gnu: Add yabridgectl.

gnu/local.mk | 3 +
gnu/packages/audio.scm | 180 +++++++++++++++++
gnu/packages/cpp.scm | 62 ++++++
gnu/packages/crates-io.scm | 94 ++++++++-
...k-0.1-fix-64bit-toolchain-assumption.patch | 24 +++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
7 files changed, 587 insertions(+), 3 deletions(-)
create mode 100644 gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch


base-commit: 369d2698b0bfc3726f8e6d232d43d0dda832225f
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 01/11] gnu: Add bitsery.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
d8cc36cb0de9fb4049d7fd544c55af617cc46bda.1732814113.git.sughosha@disroot.org
* gnu/packages/cpp.scm (bitsery): New variable.

Change-Id: I9118c5341ef473fbc8394fbad0f533f9e8c8e490
---
gnu/packages/cpp.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index eacc6e46ab..48fb323cd5 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2582,6 +2582,31 @@ (define-public gulrak-filesystem
(home-page "https://github.com/gulrak/filesystem")
(license license:expat)))
+(define-public bitsery
+ (package
+ (name "bitsery")
+ (version "5.2.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fraillt/bitsery")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0s628p6qayajan4v8arsmbvzsml8zhc56k01zhmnlakbl7v0vwip"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:cmake cmake ;needs cmake minimum version 3.25
+ #:configure-flags #~(list "-DBITSERY_BUILD_TESTS=ON")))
+ (native-inputs (list googletest))
+ (synopsis "Header only C++ binary serialization library")
+ (description "This package provides header only C++ binary serialization
+library. It is designed around the networking requirements for real-time data
+delivery, especially for games.")
+ (home-page "https://github.com/fraillt/bitsery")
+ (license license:expat)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 06/11] gnu: rust-rustyline-9: Update to 9.1.2.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
0e3c29cff60e0123d7f360399b8742b2fd78b907.1732814113.git.sughosha@disroot.org
* gnu/packages/crates-io.scm (rust-rustyline-9): Update to 9.1.2.

Change-Id: I326c5bd19cd2bed27929a7e538496bac1116672b
---
gnu/packages/crates-io.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (32 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 16f7a0a389..b68aae9b45 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -66711,14 +66711,14 @@ (define-public rust-rustyline-9
(package
(inherit rust-rustyline-12)
(name "rust-rustyline")
- (version "9.0.0")
+ (version "9.1.2")
(source
(origin
(method url-fetch)
(uri (crate-uri "rustyline" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1mj0cgdyw6gaadsg7yxsnb9n4bdl91qga9kiwyd4hqqsi31qf13r"))))
+ (base32 "0f8069ljhiv9nf97y975wvv9yvx82w3lm9g50d5n298fkiw2cy6v"))))
(arguments
`(#:skip-build? #t
#:cargo-inputs
@@ -66730,7 +66730,7 @@ (define-public rust-rustyline-9
("rust-libc" ,rust-libc-0.2)
("rust-log" ,rust-log-0.4)
("rust-memchr" ,rust-memchr-2)
- ("rust-nix" ,rust-nix-0.22)
+ ("rust-nix" ,rust-nix-0.23)
("rust-radix-trie" ,rust-radix-trie-0.2)
("rust-regex" ,rust-regex-1)
("rust-scopeguard" ,rust-scopeguard-1)
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 07/11] gnu: Add rust-promptly-0.3.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
a4582a147bce6ee0c6bded9c33ba05828a5f6909.1732814114.git.sughosha@disroot.org
* gnu/packages/crates-io.scm (rust-promptly-0.3): New variable.

Change-Id: I96fb7eceab48fbcbd7c43a25affea38dfb9b1a8e
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index b68aae9b45..ce339eb3d6 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -57272,6 +57272,27 @@ (define-public rust-project-origins-1
(description "Resolve project origins and kinds from a path.")
(license license:asl2.0)))
+(define-public rust-promptly-0.3
+ (package
+ (name "rust-promptly")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "promptly" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1fl0548ww11gpja8hlsfc8jgxk00rdd48n1g6icgwadhlp2wdjws"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-rustyline" ,rust-rustyline-9)
+ ("rust-url" ,rust-url-2))))
+ (home-page "https://github.com/anowell/promptly")
+ (synopsis "Opinionated CLI prompting helper")
+ (description "This package provides opinionated CLI prompting helper.")
+ (license license:expat)))
+
(define-public rust-propfuzz-0.0.1
(package
(name "rust-propfuzz")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 04/11] gnu: Add clap-1.1.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
f61b44037db3b6e1e73a7690b3142622f0c331de.1732814113.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap-1.1): New variable.

Change-Id: I17bcba1818a1b3ffa4318e4a3a7afe1242388cd4
---
gnu/packages/audio.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)

Toggle diff (26 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 2e6e36a608..98245dd05e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2893,6 +2893,19 @@ (define-public clap
(home-page "https://cleveraudio.org/")
(license license:expat)))
+(define-public clap-1.1
+ (package/inherit clap
+ (version "1.1.10")
+ (source (origin
+ (inherit (package-source clap))
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name (package-name clap) version))
+ (sha256
+ (base32
+ "0skn3cvh7zs173v3i6ywdmddqzrhxvivwdisvmqc6hvq594f8z80"))))))
+
(define-public ladspa
(package
(name "ladspa")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 05/11] gnu: Add yabridge.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
5212b5b349e392f9d2b2de4a2ac4b7168bbe0915.1732814113.git.sughosha@disroot.org
* gnu/packages/audio.scm (yabridge): New variable.
* gnu/packages/patches/yabridge-5.0.4-dependencies.patch: New file.
* gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch: New file.
* gnu/local.mk: Register the patch files.

Change-Id: Ib514f80e9e060326ba9a34b2e1f3d40245fba1c7
---
gnu/local.mk | 2 +
gnu/packages/audio.scm | 82 ++++++++
...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++
.../patches/yabridge-5.0.4-dependencies.patch | 36 ++++
4 files changed, 311 insertions(+)
create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
create mode 100644 gnu/packages/patches/yabridge-5.0.4-dependencies.patch

Toggle diff (367 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c89fd88282..bc93477fa3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2309,6 +2309,7 @@ dist_patch_DATA = \
%D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch \
%D%/packages/patches/virt-manager-fix-gtk-cursor-theme-backtace.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
+ %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \
@@ -2362,6 +2363,7 @@ dist_patch_DATA = \
%D%/packages/patches/xterm-370-explicit-xcursor.patch \
%D%/packages/patches/xygrib-fix-finding-data.patch \
%D%/packages/patches/xygrib-newer-proj.patch \
+ %D%/packages/patches/yabridge-5.0.4-dependencies.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
%D%/packages/patches/zig-use-baseline-cpu-by-default.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 98245dd05e..444c0d0659 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -78,6 +78,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages cdrom)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
@@ -147,6 +148,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages vim) ;xxd
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages wine)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -6769,3 +6771,83 @@ (define-public easyeffects
@item Stereo tools
@end itemize")
(license license:gpl3+)))
+
+(define-public yabridge
+ (package
+ (name "yabridge")
+ (version "5.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/yabridge")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0r7q72jmd44wynxphwhgm17wkfgm6zfdrpfnhsj8b53406ykgq71"))
+ (patches
+ (search-patches "yabridge-5.0.4-dependencies.patch"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list "-Dsystem-asio=true"
+ (string-append "--cross-file=" #$source
+ "/cross-wine.conf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'add-vst3-subproject
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (assoc-ref inputs "vst3sdk") "subprojects/vst3")))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/chainloader/utils.cpp"
+ (("\"/usr/local/lib64\",")
+ (string-append "\"/usr/local/lib64\",\n\""
+ #$output "/lib\",")))))
+ (replace 'install
+ (lambda _
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/bin")))
+ (find-files "." "-host\\.exe(|\\.so)$"))
+ (for-each
+ (lambda (file)
+ (install-file file (string-append #$output "/lib")))
+ (find-files "." "libyabridge")))))))
+ (native-inputs
+ (list cmake-minimal gulrak-filesystem pkg-config))
+ (inputs
+ `(("asio" ,asio)
+ ("bitsery" ,bitsery)
+ ("clap" ,clap-1.1)
+ ("dbus" ,dbus)
+ ("function2" ,function2)
+ ("libxcb" ,libxcb)
+ ("tomlplusplus" ,tomlplusplus)
+ ;; This is VST3 SDK v3.7.7_build_19 with the documentation and VSTGUI
+ ;; submodules removed and a dummy `meson.build` file that just lists all
+ ;; source files.
+ ("vst3sdk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robbert-vdh/vst3sdk")
+ (commit (string-append "v3.7.7_build_19-patched"))
+ ;; Required for vst3_base, vst3_pluginterfaces,
+ ;; and vst3_public_sdk.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
+ (patches
+ (search-patches "vst3sdk-3.7.7-allow-winelib-compilation.patch"))))
+ ("wine64" ,wine64)))
+ (home-page "https://github.com/robbert-vdh/yabridge")
+ (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
+ (description
+ "@code{yabridge} is Yet Another way to use Windows audio plugins. It
+supports using Windows VST2, VST3, and CLAP plugins in plugin hosts as if they
+were native plugins, with optional support for plugin groups to enable
+inter-plugin communication for VST2 plugins and quick startup times.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..c35a2c3795
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
\ No newline at end of file
diff --git a/gnu/packages/patches/yabridge-5.0.4-dependencies.patch b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
new file mode 100644
index 0000000000..ca06da050d
--- /dev/null
+++ b/gnu/packages/patches/yabridge-5.0.4-dependencies.patch
@@ -0,0 +1,36 @@
+Meson fails to detect bitsery, function2 and gulrak-filesystem.
+https://github.com/robbert-vdh/yabridge/issues/18
+
+This patch removes these dependencies in "meson.build".
+
+
+diff --git a/meson.build b/meson.build
+index d8d9135b..b35ebfcd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -248,22 +248,13 @@ else
+ asio_dep = dependency('asio', version : '>=1.22.0')
+ endif
+
+-if meson.version().version_compare('>=0.60')
+- # Bitsery's CMake build definition is capitalized for some reason
+- bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
+-else
+- # Mmeson <=0.6.0 didn't support multiple names for a dependency, and since at
+- # the moment this is only relevant for packing on Arch btw, it's probably
+- # better to remove this conditional later than it is to bump the minimum Meson
+- # version now.
+- bitsery_dep = dependency('bitsery', version : '>=5.2.0')
+-endif
++bitsery_dep = declare_dependency()
+
+ # The D-Bus headers are also only accessed through the include path. We don't
+ # link to libdbus-1 to make soname changes don't completely break yabridge.
+ dbus_dep = dependency('dbus-1').partial_dependency(compile_args : true, includes : true)
+-function2_dep = dependency('function2', version : '>=4.0.0')
+-ghc_filesystem_dep = dependency('ghc_filesystem', modules : 'ghcFilesystem::ghc_filesystem', version : '>=1.5.0')
++function2_dep = declare_dependency()
++ghc_filesystem_dep = declare_dependency()
+ threads_dep = dependency('threads')
+ # Tomlplusplus recently added a shraed library version. We don't want to link to that.
+ tomlplusplus_dep = dependency('tomlplusplus', version : '>=3.3.0', default_options : ['compile_library=false']).partial_dependency(compile_args : true, includes : true)
\ No newline at end of file
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 08/11] gnu: Add rust-reflink-0.1.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
a4c1019661374d47d4e94f2823f469e780b84589.1732814114.git.sughosha@disroot.org
* gnu/packages/crates-io.scm (rust-reflink-0.1): New variable.
* gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch:
New file.
* gnu/local.mk: Register the patch file.

Change-Id: I193db0f4e51a133b8791ca9461032655da20137f
---
gnu/local.mk | 1 +
gnu/packages/crates-io.scm | 25 +++++++++++++++++++
...k-0.1-fix-64bit-toolchain-assumption.patch | 24 ++++++++++++++++++
3 files changed, 50 insertions(+)
create mode 100644 gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch

Toggle diff (81 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index bc93477fa3..bfe80f3ebe 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2133,6 +2133,7 @@ dist_patch_DATA = \
%D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
%D%/packages/patches/rust-cargo-edit-remove-ureq.patch \
+ %D%/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch \
%D%/packages/patches/rust-ring-0.17-ring-core.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index ce339eb3d6..bf41835bf7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -62339,6 +62339,31 @@ (define-public rust-reference-counted-singleton-0.1
can be recreated as needed.")
(license license:expat)))
+(define-public rust-reflink-0.1
+ (package
+ (name "rust-reflink")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "reflink" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1glcyqvryv2zj6kjbfji0cldrkincqx3ds3wjwl4qnsnig15wn5w"))
+ (patches
+ (search-patches
+ "rust-reflink-0.1-fix-64bit-toolchain-assumption.patch"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-libc" ,rust-libc-0.2)
+ ("rust-winapi" ,rust-winapi-0.3))))
+ (home-page "https://github.com/nicokoch/reflink")
+ (synopsis "Copy-on-write mechanism on supported file systems")
+ (description "This package provides copy-on-write mechanism on supported
+file systems.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-refpool-0.4
(package
(name "rust-refpool")
diff --git a/gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch b/gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch
new file mode 100644
index 0000000000..1fc877815f
--- /dev/null
+++ b/gnu/packages/patches/rust-reflink-0.1-fix-64bit-toolchain-assumption.patch
@@ -0,0 +1,24 @@
+This patch fixes assuming a 64-bit toolchain.
+https://github.com/nicokoch/reflink/pull/5
+
+
+--- reflink-0.1.3/src/sys/unix.rs 2019-04-02 16:13:06.000000000 +0200
++++ "reflink-0.1.3 (Kopie)/src/sys/unix.rs" 2023-06-29 09:47:26.867681403 +0200
+@@ -7,7 +7,7 @@
+ use std::os::unix::io::AsRawFd;
+
+ // TODO is this equal on all archs? Just tested on x86_64 and x86.
+- const IOCTL_FICLONE: u64 = 0x40049409;
++ macro_rules! IOCTL_FICLONE { () => (0x40049409) };
+
+ let src = fs::File::open(&from)?;
+
+@@ -18,7 +18,7 @@
+ .open(&to)?;
+ let ret = unsafe {
+ // http://man7.org/linux/man-pages/man2/ioctl_ficlonerange.2.html
+- libc::ioctl(dest.as_raw_fd(), IOCTL_FICLONE, src.as_raw_fd())
++ libc::ioctl(dest.as_raw_fd(), IOCTL_FICLONE!(), src.as_raw_fd())
+ };
+
+ if ret == -1 {
\ No newline at end of file
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 10/11] gnu: Add rust-serde-jsonrc-0.1.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
0d71bf22316817891bb8d200c283f6f9952e6cf9.1732814114.git.sughosha@disroot.org
* gnu/packages/crates-io.scm (rust-serde-jsonrc-0.1): New variable.

Change-Id: If18e89af220b7b93874c4fc04a18530f76a9c4ea
---
gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index dca087e09d..a1da138795 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -69625,6 +69625,35 @@ (define-public rust-serde-json-core-0.4
("rust-serde" ,rust-serde-1))
#:cargo-development-inputs (("rust-serde-derive" ,rust-serde-derive-1))))))
+(define-public rust-serde-jsonrc-0.1
+ (package
+ (name "rust-serde-jsonrc")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "serde_jsonrc" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1a5q0ba7jhgfl63l16plgl7sx1k58l2caxf7z2j5l677rh5yk4dm"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:tests? #f ;`Deserialize` and `Serialize` are defined multiple times
+ #:cargo-inputs
+ (("rust-indexmap" ,rust-indexmap-1)
+ ("rust-itoa" ,rust-itoa-0.4)
+ ("rust-ryu" ,rust-ryu-0.2)
+ ("rust-serde" ,rust-serde-1))
+ #:cargo-development-inputs
+ (("rust-compiletest-rs" ,rust-compiletest-rs-0.3)
+ ("rust-serde-bytes" ,rust-serde-bytes-0.10)
+ ("rust-serde-derive" ,rust-serde-derive-1))))
+ (home-page "https://github.com/serde-rs/json")
+ (synopsis "JSON serialization file format")
+ (description
+ "This package provides a JSON serialization file format.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-serde-path-to-error-0.1
(package
(name "rust-serde-path-to-error")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 09/11] gnu: Add rust-ryu-0.2.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
1763f2459623732806f485340df26a09d1202739.1732814114.git.sughosha@disroot.org
* gnu/packages/crates-io.scm (rust-ryu-0.2): New variable.

Change-Id: I76208b6f4563be43628a87c8a0bc5e3f1bb8f826
---
gnu/packages/crates-io.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)

Toggle diff (26 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index bf41835bf7..dca087e09d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -67147,6 +67147,19 @@ (define-public rust-ryu-1
quickly convert floating point numbers to decimal strings.")
(license (list license:asl2.0 license:boost1.0))))
+(define-public rust-ryu-0.2
+ (package
+ (inherit rust-ryu-1)
+ (name "rust-ryu")
+ (version "0.2.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "ryu" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "13wsi4408qxi9w44pdf5zfds4ym7np2070wkhg1g4j4dvi4rasmr"))))))
+
(define-public rust-s3handler-0.7
(package
(name "rust-s3handler")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 02/11] gnu: Add function2.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
224340001752a08606aeff67e4f5ab0ba0a1fe76.1732814113.git.sughosha@disroot.org
* gnu/packages/cpp.scm (function2): New variable.

Change-Id: Ida408b7746b3cb8828285b05fcc0abee4b1863ba
---
gnu/packages/cpp.scm | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (50 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 48fb323cd5..9f56779a40 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2607,6 +2607,43 @@ (define-public bitsery
(home-page "https://github.com/fraillt/bitsery")
(license license:expat)))
+(define-public function2
+ (package
+ (name "function2")
+ (version "4.2.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Naios/function2")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0l4kn81lfi687mv2d2mkrrqgjp9v186jlfshrgcr5717lwqw39xg"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Unbundle googletest.
+ '(begin
+ (delete-file-recursively "test")
+ (substitute* "CMakeLists.txt"
+ (("add_subdirectory\\(test\\)") ""))))))
+ (build-system cmake-build-system)
+ ;; The test size_match_layout fails on i586/i686. For more info:
+ ;; https://github.com/Naios/function2/issues/57
+ (arguments
+ (list #:tests? #f))
+ (synopsis "Improved implementations of std::function")
+ (description "This package provides the following implementations of
+std::function:
+@itemize
+@item copyable fu2::function
+@item move-only fu2::unique_function (capable of holding move only types)
+@item non-owning fu2::function_view (capable of referencing callables in a non
+owning way)
+@end itemize")
+ (home-page "https://naios.github.io/function2/")
+ (license license:boost1.0)))
+
(define-public cpp-mustache
(package
(name "cpp-mustache")
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 11/11] gnu: Add yabridgectl.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
0a9cd14799233f14b04b3b57ee2dbf8cff1bb429.1732814114.git.sughosha@disroot.org
* gnu/packages/audio.scm (yabridgectl): New variable.

Change-Id: Ide287422cff7d6641a2d732de0e4f4b3ae784f76
---
gnu/packages/audio.scm | 63 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (87 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 444c0d0659..517334198d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -81,6 +81,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages curl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
@@ -154,6 +155,7 @@ (define-module (gnu packages audio)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system glib-or-gtk)
@@ -6851,3 +6853,64 @@ (define-public yabridge
were native plugins, with optional support for plugin groups to enable
inter-plugin communication for VST2 plugins and quick startup times.")
(license license:gpl3+)))
+
+(define-public yabridgectl
+ (package/inherit yabridge
+ (name "yabridgectl")
+ (source (origin
+ (inherit (package-source yabridge))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Use reflink from the system istead of git.
+ `(substitute* "tools/yabridgectl/Cargo.toml"
+ (("reflink = .*$")
+ (string-append "reflink = \""
+ ,(package-version rust-reflink-0.1)
+ "\"\n"))))))
+ (build-system cargo-build-system)
+ (arguments
+ (list #:cargo-inputs
+ `(("rust-anyhow" ,rust-anyhow-1)
+ ("rust-clap" ,rust-clap-4)
+ ("rust-colored" ,rust-colored-2)
+ ("rust-is-executable" ,rust-is-executable-1)
+ ("rust-goblin" ,rust-goblin-0.6)
+ ("rust-libloading" ,rust-libloading-0.7)
+ ("rust-promptly" ,rust-promptly-0.3)
+ ("rust-rayon" ,rust-rayon-1)
+ ("rust-reflink" ,rust-reflink-0.1)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-serde-derive" ,rust-serde-derive-1)
+ ("rust-serde-jsonrc" ,rust-serde-jsonrc-0.1)
+ ("rust-textwrap" ,rust-textwrap-0.16)
+ ("rust-toml" ,rust-toml-0.5)
+ ("rust-walkdir" ,rust-walkdir-2)
+ ("rust-which" ,rust-which-4)
+ ("rust-xdg" ,rust-xdg-2))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "tools/yabridgectl")))
+ (add-after 'change-directory 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "src"
+ (substitute* '("config.rs" "main.rs")
+ (("/usr") (assoc-ref inputs "yabridge"))))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/yabridgectl")
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "yabridge") "/lib")
+ ,(string-append (assoc-ref inputs "dbus") "/lib")))
+ `("PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "yabridge")
+ "/bin")))))))))
+ (native-inputs '())
+ (inputs
+ (list bash-minimal dbus))
+ (propagated-inputs
+ (list yabridge))
+ (synopsis "Utility to set up and update yabridge")
+ (description
+ "@command{yabridgectl} is a tool to setup and update @code{yabridge}.")))
--
2.46.0
S
S
Sughosha wrote on 28 Nov 18:15 +0100
[PATCH v6 03/11] gnu: Add clap.
(name . Gabriel Wicki)(address . gabriel@erlikon.ch)
eb9058dec50bc2abdd284bc72d565bde8f725d96.1732814113.git.sughosha@disroot.org
* gnu/packages/audio.scm (clap): New variable.

Change-Id: Ia0f634b363f36a3f4c1dbb3a2a793f17b5a56c43
---
gnu/packages/audio.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index f842d77031..2e6e36a608 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2871,6 +2871,28 @@ (define-public jalv
plugin function as a JACK application.")
(license license:isc)))
+(define-public clap
+ (package
+ (name "clap")
+ (version "1.2.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/free-audio/clap")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1azyxb5nby9bd3xd2sfib18m8a0lhlmkbw9y3brfqxvbs012yxsv"))))
+ (build-system cmake-build-system)
+ (synopsis "Audio Plugin API")
+ (description
+ "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
+defines a standard for Digital Audio Workstations and audio plugins to work
+together.")
+ (home-page "https://cleveraudio.org/")
+ (license license:expat)))
+
(define-public ladspa
(package
(name "ladspa")
--
2.46.0
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 66870@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 66870
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch