From: Marius Bakke <mbakke@fastmail.com>
To: Giacomo Leidi <goodoldpaul@autistici.org>, 41053@debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul@autistici.org>
Subject: [bug#41053] [PATCH 1/2] gnu: Add ableton-link.
Date: Tue, 05 May 2020 19:34:49 +0200 [thread overview]
Message-ID: <87368ez3nq.fsf@devup.no> (raw)
In-Reply-To: <20200503160608.5905-1-goodoldpaul@autistici.org>
[-- Attachment #1: Type: text/plain, Size: 7605 bytes --]
Giacomo Leidi <goodoldpaul@autistici.org> writes:
> * gnu/packages/audio.scm (ableton-link): New variable.
> * gnu/packages/patches/ableton-link-system-libraries-debian.patch: Patch
> CMakeLists.txt to use system libraries.
> * gnu/local.mk (dist_patch_DATA): Add it.
[...]
> +(define-public ableton-link
> + (package
> + (name "ableton-link")
> + (version "3.0.2")
> + (source (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/Ableton/link.git")
> + (commit (string-append "Link-" version))))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32
> + "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir"))
> + (modules '((guix build utils)))
> + (patches
> + (search-patches "ableton-link-system-libraries-debian.patch"))
> + (snippet
> + '(begin
> + ;; Fix tests
> + (substitute* "ci/run-tests.py"
> + (("root_dir,") "root_dir, os.pardir,"))
Can you expand on the comment with what this substitution does, i.e. how
it fixes tests?
> + (native-inputs
> + `(("catch" ,catch-framework)
> + ("python" ,python) ;; For running tests
> + ("portaudio" ,portaudio) ;; For portaudio examples
> + ("qtbase" ,qtbase) ;; For Qt examples
Nit-pick: only one semicolon for margin comments. We typically also do
not add a space between the semicolon and the comment in that case.
> + ("qtdeclarative" ,qtdeclarative)
> + ("qttools" ,qttools)))
> + (inputs
> + `(("jack" ,jack-1) ;; For JACK examples
> + ("qtquickcontrols" ,qtquickcontrols))) ;; For Qt examples
> + (propagated-inputs
> + `(("asio" ,asio)))
Can you add a comment about why asio is propagated? We try to avoid
propagation where possible.
> + (arguments
> + `(#:configure-flags
> + '("-DBUILD_TYPE=Release"
You can use #:build-type instead of passing -DCMAKE_BUILD_TYPE. Is
there a particular reason why the default "RelWithDebInfo" does not cut
it?
> + "-DLINK_BUILD_QT_EXAMPLES=ON"
> + "-DLINK_BUILD_JACK=ON")
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'check
> + (lambda* (#:key inputs #:allow-other-keys)
> + (let* ((python (string-append (assoc-ref inputs "python")
> + "/bin/python3"))
> + (version ,(package-version ableton-link))
You can simply unquote version where needed instead of adding a let
binding.
> + (run-tests (string-append "../ableton-link-"
> + version
I.e.: ,version
> + "-checkout/ci/run-tests.py")))
> + (and (invoke python run-tests "--target" "LinkCoreTest")
> + (invoke python run-tests "--target" "LinkDiscoveryTest")))))
Nit-pick: The (and ...) is unnecessary because INVOKE would throw an
exception upon failure instead of #f.
> + (add-before 'install 'patch-cmake
> + (lambda* (#:key inputs #:allow-other-keys)
> + (let* ((version ,(package-version ableton-link))
> + (source (string-append "../ableton-link-"
> + version
Use ,version here too.
> + "-checkout/")))
> + (substitute* (string-append source
> + "cmake_include/AsioStandaloneConfig.cmake")
Note: if you run this phase immediately after 'unpack, you don't have to
add a binding for the source directory as you can refer to this file by
just (substitute* "cmake_include/AsioStandaloneConfig.cmake"). But
perhaps that will break things?
> + (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
> + "modules/asio-standalone/asio/include"))
> + (string-append (assoc-ref inputs "asio")
> + "/include")))
> + (substitute* (string-append source "AbletonLinkConfig.cmake")
> + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
> + "${CMAKE_CURRENT_LIST_DIR}/../../../include")
> + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
> + "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp"))
> + #t)))
> + (replace 'install
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (bin (string-append out "/bin"))
> + (lib-cmake (string-append out "/lib/cmake/ableton-link"))
> + (version ,(package-version ableton-link))
> + (source (string-append "../ableton-link-" version "-checkout")))
Use ,version here too.
> + (for-each (lambda (test-file)
> + (delete-file test-file))
> + '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
> + (copy-recursively "bin" bin)
> + (copy-recursively (string-append source "/include/ableton")
> + (string-append out "/include/ableton"))
> + (install-file (string-append source "/AbletonLinkConfig.cmake")
> + lib-cmake)
> + (install-file (string-append source
> + "/cmake_include/AsioStandaloneConfig.cmake")
> + (string-append lib-cmake "/cmake_include"))
Terrible that we have to install "manually" here! But oh well.
> + #t))))))
> + (home-page "https://github.com/Ableton/link")
> + (synopsis "Synchronizes musical beat, tempo, and phase across multiple applications")
s/Synchronizes/Synchronize/
> + (description
> + "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
> +across multiple applications running on one or more devices. Applications on devices
> +connected to a local network discover each other automatically and form a musical
> +session in which each participant can perform independently: anyone can start or stop
> +while still staying in time.")
Pretty cool stuff! :-)
> + (license license:gpl2+)))
> diff --git a/gnu/packages/patches/ableton-link-system-libraries-debian.patch b/gnu/packages/patches/ableton-link-system-libraries-debian.patch
> new file mode 100644
> index 0000000000..0c12c62546
> --- /dev/null
> +++ b/gnu/packages/patches/ableton-link-system-libraries-debian.patch
> @@ -0,0 +1,27 @@
> +Description: Drop dependencies on included 3rd-party libs
> + upstream includes git-submodules for Catch and ASIO (not found in the tarball).
> + on Debian we want to use the system provided libraries.
> +Author: IOhannes m zmölnig
> +Origin: Debian
> +Forwarded: not-needed
> +Last-Update: 2016-10-26
> +---
> +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Great that you took care to unbundle dependencies. Can you add a link
to where you found this patch?
Otherwise LGTM, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
next prev parent reply other threads:[~2020-05-05 17:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-03 16:03 [bug#41053] [PATCH] gnu: supercollider: Update to 3.11.0 goodoldpaul
2020-05-03 16:06 ` [bug#41053] [PATCH 1/2] gnu: Add ableton-link Giacomo Leidi
2020-05-03 16:06 ` [bug#41053] [PATCH 2/2] gnu: supercollider: Update to 3.11.0 Giacomo Leidi
2020-05-05 17:39 ` Marius Bakke
2020-05-05 20:19 ` goodoldpaul
2020-05-06 20:44 ` bug#41053: " Marius Bakke
2020-05-05 17:34 ` Marius Bakke [this message]
2020-05-05 20:19 ` [bug#41053] [PATCH 1/2] gnu: Add ableton-link goodoldpaul
2020-05-05 20:27 ` Giacomo Leidi
2020-05-05 20:27 ` [bug#41053] [PATCH 2/2] gnu: supercollider: Update to 3.11.0 Giacomo Leidi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87368ez3nq.fsf@devup.no \
--to=mbakke@fastmail.com \
--cc=41053@debbugs.gnu.org \
--cc=goodoldpaul@autistici.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).