Subject: Re: [bug#30259] [PATCH] gnu: octave: Add audio and Qt GUI support.

From: [email-masked]
Date: Fri, 26 Jan 2018 19:20:53 +0000

On Fri, 26 Jan 2018, [email-masked] wrote:
> On Fri, 26 Jan 2018, Kei Kebreau <[email-masked]> wrote:
>> * gnu/packages/maths.scm (octave)[inputs]: Add qscintilla, qt, suitesparse,
>> libsndfile, portaudio and alsa-lib.
>> [native-inputs]: Add qttools.
>> [arguments]: Add 'patch-qscintilla-library-name' phase.
>
> Woo! Nice :) I've started work on the Qt GUI a while ago but
> never finished it. Do you think we should split this into octave
> and octave-qt (or octave-gui)? Qt is quiet huge and not everyone
> will want this I think.
>
> Building this now and getting back to you with results.
>
>> ---
>>  gnu/packages/maths.scm | 23 ++++++++++++++++++++++-
>>  1 file changed, 22 insertions(+), 1 deletion(-)
>>
>> diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
>> index bce662737..172f1da07 100644
>> --- a/gnu/packages/maths.scm
>> +++ b/gnu/packages/maths.scm
>> @@ -52,6 +52,7 @@
>>    #:use-module (guix build-system ocaml)
>>    #:use-module (guix build-system r)
>>    #:use-module (gnu packages algebra)
>> +  #:use-module (gnu packages audio)
>>    #:use-module (gnu packages autotools)
>>    #:use-module (gnu packages bison)
>>    #:use-module (gnu packages boost)
>> @@ -74,6 +75,7 @@
>>    #:use-module (gnu packages image)
>>    #:use-module (gnu packages java)
>>    #:use-module (gnu packages less)
>> +  #:use-module (gnu packages linux)
>>    #:use-module (gnu packages lisp)
>>    #:use-module (gnu packages logging)
>>    #:use-module (gnu packages lua)
>> @@ -91,8 +93,10 @@
>>    #:use-module (gnu packages popt)
>>    #:use-module (gnu packages perl)
>>    #:use-module (gnu packages pkg-config)
>> +  #:use-module (gnu packages pulseaudio)
>>    #:use-module (gnu packages python)
>>    #:use-module (gnu packages python-web)
>> +  #:use-module (gnu packages qt)
>>    #:use-module (gnu packages readline)
>>    #:use-module (gnu packages tbb)
>>    #:use-module (gnu packages scheme)
>> @@ -1310,12 +1314,19 @@ can solve two kinds of problems:
>>         ("zlib" ,zlib)
>>         ("curl" ,curl)
>>         ("texinfo" ,texinfo)
>> -       ("graphicsmagick" ,graphicsmagick)))
>> +       ("graphicsmagick" ,graphicsmagick)
>> +       ("qscintilla", qscintilla)
>> +       ("qt", qtbase)
>> +       ("suitesparse" ,suitesparse)
>> +       ("libsndfile" ,libsndfile)
>> +       ("portaudio" ,portaudio)
>> +       ("alsa-lib" ,alsa-lib)))
>>      (native-inputs
>>       `(("lzip" ,lzip)
>>         ("gfortran" ,gfortran)
>>         ("pkg-config" ,pkg-config)
>>         ("perl" ,perl)
>> +       ("qttools" ,qttools) ;for lrelease
>>         ;; The following inputs are not actually used in the build process.
>>         ;; However, the ./configure gratuitously tests for their existence and
>>         ;; assumes that programs not present at build time are also not, and
>> @@ -1333,6 +1344,16 @@ can solve two kinds of problems:
>>                              "/bin/sh"))
>>         #:phases
>>         (modify-phases %standard-phases
>> +         (add-before 'configure 'patch-qscintilla-library-name
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             ;; The QScintilla library that the Octave configure script tries
>> +             ;; to link with should be named libqscintilla-qt5.so, but the
>> +             ;; QScintilla input provides the shared library as
>> +             ;; libqscintilla2_qt5.so.
>> +             (substitute* "configure"
>> +               (("qscintilla2-qt5")
>> +                "qscintilla2_qt5"))
>> +             #t))
>>           (add-after 'configure 'configure-makeinfo
>>             (lambda* (#:key inputs #:allow-other-keys)
>>               (substitute* "libinterp/corefcn/help.cc"

Build, compiled, installed, LGTM and works for me. At least the
minimal basics I've tested.

However I still think we should split it later on. I'm not sure
if other systems just provide it in one piece or if they provide
octave-cli, octave-qt, etc.
In my scenario we don't have substitutes for Qt all the time and someone running a
machine which isn't capable of building Qt wants to use octave.
-- 
ng0 :: https://ea.n0.is
A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/