about summary refs log tree commit diff
path: root/pkgs/applications/audio/sonic-pi
diff options
context:
space:
mode:
authorzimbatm <zimbatm@zimbatm.com>2016-03-04 14:19:44 +0000
committerzimbatm <zimbatm@zimbatm.com>2016-03-04 14:44:07 +0000
commit4bc516aa540e85ff8e0fa2c88245e4c870b1faf3 (patch)
treec4cd641285f10fac84f34093dfaf0a955c3f4ad7 /pkgs/applications/audio/sonic-pi
parent7a360b13a0ac35c0f6109d251880ae698c13b221 (diff)
sonic-pi: 2.8.0 -> 2.9.0
Fixes compilation and path issues. The executable still segfaults after boot
though.
Diffstat (limited to 'pkgs/applications/audio/sonic-pi')
-rw-r--r--pkgs/applications/audio/sonic-pi/default.nix29
-rw-r--r--pkgs/applications/audio/sonic-pi/fixed-prefixes.patch36
2 files changed, 55 insertions, 10 deletions
diff --git a/pkgs/applications/audio/sonic-pi/default.nix b/pkgs/applications/audio/sonic-pi/default.nix
index ce5844ca7f124..3c7be51554d8d 100644
--- a/pkgs/applications/audio/sonic-pi/default.nix
+++ b/pkgs/applications/audio/sonic-pi/default.nix
@@ -11,25 +11,25 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.8.0";
+  version = "2.9.0";
   name = "sonic-pi-${version}";
 
   src = fetchFromGitHub {
     owner = "samaaron";
     repo = "sonic-pi";
     rev = "v${version}";
-    sha256 = "1yyavgazb6ar7xnmjx460s9p8nh70klaja2yb20nci15k8vngq9h";
+    sha256 = "19db5dxrf6h1v2w3frds5g90nb6izd9ppp7cs2xi6i0m67l6jrwb";
   };
 
   buildInputs = [
-    qscintilla
-    supercollider
-    ruby
-    qt48Full
-    cmake
-    pkgconfig
     bash
+    cmake
     makeWrapper
+    pkgconfig
+    qscintilla
+    qt48Full
+    ruby
+    supercollider
   ];
 
   meta = {
@@ -42,13 +42,22 @@ stdenv.mkDerivation rec {
 
   dontUseCmakeConfigure = true;
 
+  patches = [ ./fixed-prefixes.patch ];
+
+  preConfigure = ''
+    patchShebangs .
+    substituteInPlace app/gui/qt/mainwindow.cpp \
+      --subst-var-by ruby "${ruby}/bin/ruby" \
+      --subst-var out
+  '';
+
   buildPhase = ''
     pushd app/server/bin
-    ${ruby}/bin/ruby compile-extensions.rb
+      ./compile-extensions.rb
     popd
 
     pushd app/gui/qt
-    ${bash}/bin/bash rp-build-app
+      ./rp-build-app
     popd
   '';
 
diff --git a/pkgs/applications/audio/sonic-pi/fixed-prefixes.patch b/pkgs/applications/audio/sonic-pi/fixed-prefixes.patch
new file mode 100644
index 0000000000000..7b045a41cba1e
--- /dev/null
+++ b/pkgs/applications/audio/sonic-pi/fixed-prefixes.patch
@@ -0,0 +1,36 @@
+diff --git a/app/gui/qt/mainwindow.cpp b/app/gui/qt/mainwindow.cpp
+index 0af6cf7..97c17ad 100644
+--- a/app/gui/qt/mainwindow.cpp
++++ b/app/gui/qt/mainwindow.cpp
+@@ -677,28 +677,9 @@ void MainWindow::startServer(){
+ 
+     serverProcess = new QProcess();
+ 
+-    QString root = rootPath();
+-
+-  #if defined(Q_OS_WIN)
+-    QString prg_path = root + "/app/server/native/windows/ruby/bin/ruby.exe";
+-    QString prg_arg = root + "/app/server/bin/sonic-pi-server.rb";
+-    sample_path = root + "/etc/samples";
+-  #elif defined(Q_OS_MAC)
+-    QString prg_path = root + "/server/native/osx/ruby/bin/ruby";
+-    QString prg_arg = root + "/server/bin/sonic-pi-server.rb";
+-    sample_path = root + "/etc/samples";
+-  #else
+-    //assuming Raspberry Pi
+-    QString prg_path = root + "/app/server/native/raspberry/ruby/bin/ruby";
+-    QFile file(prg_path);
+-    if(!file.exists()) {
+-      // use system ruby if bundled ruby doesn't exist
+-      prg_path = "/usr/bin/ruby";
+-    }
+-
+-    QString prg_arg = root + "/app/server/bin/sonic-pi-server.rb";
+-    sample_path = root + "/etc/samples";
+-  #endif
++    QString prg_path = "@ruby@";
++    QString prg_arg = "@out@/app/server/bin/sonic-pi-server.rb";
++    sample_path = "@out@/etc/samples";
+ 
+     prg_path = QDir::toNativeSeparators(prg_path);
+     prg_arg = QDir::toNativeSeparators(prg_arg);