unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add praat
@ 2016-08-30 16:08 Brendan Tildesley
  2016-08-30 19:02 ` ng0
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Brendan Tildesley @ 2016-08-30 16:08 UTC (permalink / raw)
  To: guix-devel

This marks my first attempt at writing a package definition for Guix.
Please assume it is broken since I still don't know what I'm doing, and
forgive me if you need to school me on things written in the manual. If
someone on GuixSD could test if it builds, load an audio file and see if
it plays correctly, that would be a good test. When I compiled it on
Parabola, it sets the wrong audio server by default so I had to change
it in settings to ALSA via PortAudio in the GUI. I'm interested to see
if it requires that on someone else's configuration too.


From 7c473fcf114e011ee4e11b766f0be82591ba2ac8 Mon Sep 17 00:00:00 2001
From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
Date: Wed, 31 Aug 2016 01:13:18 +1000
Subject: [PATCH] gnu: Add praat

* gnu/packages/linguistics.scm (praat): New variable
---
 gnu/packages/linguistics.scm | 81
++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100644 gnu/packages/linguistics.scm

diff --git a/gnu/packages/linguistics.scm b/gnu/packages/linguistics.scm
new file mode 100644
index 0000000..40b38f8
--- /dev/null
+++ b/gnu/packages/linguistics.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages linguistics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages linux) ; for alsa-lib
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages pulseaudio))
+
+(define-public praat
+  (package
+    (name "praat")
+    (version "6.0.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/praat/praat/archive/v"
version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1fhzqzygx5h6xkjaxwgzvnby393q7c3lby0fq3bnhscfdhzkm0a0"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("alsa-lib" ,alsa-lib)
+       ("pulseaudio" ,pulseaudio)
+       ("python" ,python)))             ; optional scripts
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before
+          'build
+          'copy-makefile
+          ;; setup makefile for compiling on Linux as per README.md.
There may
+          ;; be issues with this. The audio config may need to be
changed in
+          ;; the GUI. If that is the case when tested on GuixSD, I'd
like to
+          ;; figure out how to patch praat to work by default.
+          (lambda _
+            (copy-file "makefiles/makefile.defs.linux.pulse"
+                       "makefile.defs")
+            #t))
+         (replace
+          'install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (target (string-append out "/bin")))
+              (mkdir-p target)
+              (install-file "praat" target))
+            #t)))))
+    (home-page "http://praat.org")
+    (synopsis "Doing phonetics by computer")
+    (description
+     "Praat is a program for linguists to analyse, synthesize, and
manipulate
+speech, generate graphs for scientific papers, and more.")
+    (license license:gpl2)))
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-08-30 16:08 [PATCH] gnu: Add praat Brendan Tildesley
@ 2016-08-30 19:02 ` ng0
  2016-08-30 19:07 ` Marius Bakke
  2016-09-01 17:43 ` Brendan Tildesley
  2 siblings, 0 replies; 9+ messages in thread
From: ng0 @ 2016-08-30 19:02 UTC (permalink / raw)
  To: Brendan Tildesley, guix-devel

Hi, thanks for your patch.
I am not able to apply this without editing it, could you resend it in
an appended file?

Brendan Tildesley <brendan.tildesley@openmailbox.org> writes:

> This marks my first attempt at writing a package definition for Guix.
> Please assume it is broken since I still don't know what I'm doing, and
> forgive me if you need to school me on things written in the manual. If
> someone on GuixSD could test if it builds, load an audio file and see if
> it plays correctly, that would be a good test. When I compiled it on
> Parabola, it sets the wrong audio server by default so I had to change
> it in settings to ALSA via PortAudio in the GUI. I'm interested to see
> if it requires that on someone else's configuration too.
>
>
> From 7c473fcf114e011ee4e11b766f0be82591ba2ac8 Mon Sep 17 00:00:00 2001
> From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
> Date: Wed, 31 Aug 2016 01:13:18 +1000
> Subject: [PATCH] gnu: Add praat
>
> * gnu/packages/linguistics.scm (praat): New variable
> ---
>  gnu/packages/linguistics.scm | 81
> ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 81 insertions(+)
>  create mode 100644 gnu/packages/linguistics.scm
>
> diff --git a/gnu/packages/linguistics.scm b/gnu/packages/linguistics.scm
> new file mode 100644
> index 0000000..40b38f8
> --- /dev/null
> +++ b/gnu/packages/linguistics.scm
> @@ -0,0 +1,81 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2016 Brendan Tildesley <brendan.tildesley@openmailbox.org>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages linguistics)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix utils)
> +  #:use-module (guix download)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages linux) ; for alsa-lib
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages version-control)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages pulseaudio))
> +
> +(define-public praat
> +  (package
> +    (name "praat")
> +    (version "6.0.19")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://github.com/praat/praat/archive/v"
> version ".tar.gz"))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32 "1fhzqzygx5h6xkjaxwgzvnby393q7c3lby0fq3bnhscfdhzkm0a0"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (inputs
> +     `(("gtk" ,gtk+-2)
> +       ("alsa-lib" ,alsa-lib)
> +       ("pulseaudio" ,pulseaudio)
> +       ("python" ,python)))             ; optional scripts
> +    (arguments
> +     `(#:tests? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         (delete 'configure)
> +         (add-before
> +          'build
> +          'copy-makefile
> +          ;; setup makefile for compiling on Linux as per README.md.
> There may
> +          ;; be issues with this. The audio config may need to be
> changed in
> +          ;; the GUI. If that is the case when tested on GuixSD, I'd
> like to
> +          ;; figure out how to patch praat to work by default.
> +          (lambda _
> +            (copy-file "makefiles/makefile.defs.linux.pulse"
> +                       "makefile.defs")
> +            #t))
> +         (replace
> +          'install
> +          (lambda* (#:key outputs #:allow-other-keys)
> +            (let* ((out (assoc-ref outputs "out"))
> +                   (target (string-append out "/bin")))
> +              (mkdir-p target)
> +              (install-file "praat" target))
> +            #t)))))
> +    (home-page "http://praat.org")
> +    (synopsis "Doing phonetics by computer")
> +    (description
> +     "Praat is a program for linguists to analyse, synthesize, and
> manipulate
> +speech, generate graphs for scientific papers, and more.")
> +    (license license:gpl2)))
> -- 
> 2.9.3
>
>
>
>

-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-08-30 16:08 [PATCH] gnu: Add praat Brendan Tildesley
  2016-08-30 19:02 ` ng0
@ 2016-08-30 19:07 ` Marius Bakke
  2016-08-31 16:08   ` Alex Griffin
  2016-09-01 17:43 ` Brendan Tildesley
  2 siblings, 1 reply; 9+ messages in thread
From: Marius Bakke @ 2016-08-30 19:07 UTC (permalink / raw)
  To: Brendan Tildesley, guix-devel

[-- Attachment #1: Type: text/plain, Size: 996 bytes --]

Brendan Tildesley <brendan.tildesley@openmailbox.org> writes:

> This marks my first attempt at writing a package definition for Guix.
> Please assume it is broken since I still don't know what I'm doing, and
> forgive me if you need to school me on things written in the manual. If
> someone on GuixSD could test if it builds, load an audio file and see if
> it plays correctly, that would be a good test. When I compiled it on
> Parabola, it sets the wrong audio server by default so I had to change
> it in settings to ALSA via PortAudio in the GUI. I'm interested to see
> if it requires that on someone else's configuration too.

Hi Brendan,

Thanks for your contribution!

The patch was not recognized by my mail client, it's likely your mail
user agent changed the formatting.

I've fixed the patch indentation and commit message, and also added it
to local.mk, see updated patch below.

I don't have a Guix system with audio atm so someone else will have to
review it :)

Cheers,
Marius


[-- Attachment #2: 0001-gnu-Add-praat.patch --]
[-- Type: text/x-patch, Size: 4388 bytes --]

From b2194272655f6455e7a7ad7bdf78cb827f204f3d Mon Sep 17 00:00:00 2001
From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
Date: Wed, 31 Aug 2016 02:08:15 +1000
Subject: [PATCH 1/1] gnu: Add praat.

* gnu/packages/linguistics.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk                 |  1 +
 gnu/packages/linguistics.scm | 79 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+)
 create mode 100644 gnu/packages/linguistics.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index d75ab54..c38bdef 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -211,6 +211,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/libusb.scm			\
   %D%/packages/libunwind.scm			\
   %D%/packages/libupnp.scm			\
+  %D%/packages/linguistics.scm			\
   %D%/packages/links.scm			\
   %D%/packages/linux.scm			\
   %D%/packages/lirc.scm				\
diff --git a/gnu/packages/linguistics.scm b/gnu/packages/linguistics.scm
new file mode 100644
index 0000000..6c4823c
--- /dev/null
+++ b/gnu/packages/linguistics.scm
@@ -0,0 +1,79 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages linguistics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages linux) ; for alsa-lib
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages pulseaudio))
+
+(define-public praat
+  (package
+    (name "praat")
+    (version "6.0.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/praat/praat/archive/v"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1fhzqzygx5h6xkjaxwgzvnby393q7c3lby0fq3bnhscfdhzkm0a0"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("alsa-lib" ,alsa-lib)
+       ("pulseaudio" ,pulseaudio)
+       ("python" ,python)))             ; optional scripts
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'copy-makefile
+           ;; setup makefile for compiling on Linux as per README.md. There may
+           ;; be issues with this. The audio config may need to be changed in
+           ;; the GUI. If that is the case when tested on GuixSD, I'd like to
+           ;; figure out how to patch praat to work by default.
+           (lambda _
+             (copy-file "makefiles/makefile.defs.linux.pulse"
+                        "makefile.defs")
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (target (string-append out "/bin")))
+               (mkdir-p target)
+               (install-file "praat" target))
+             #t)))))
+    (home-page "http://praat.org")
+    (synopsis "Doing phonetics by computer")
+    (description
+     "Praat is a program for linguists to analyse, synthesize, and
+manipulate speech, generate graphs for scientific papers, and more.")
+    (license license:gpl2)))
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-08-30 19:07 ` Marius Bakke
@ 2016-08-31 16:08   ` Alex Griffin
  0 siblings, 0 replies; 9+ messages in thread
From: Alex Griffin @ 2016-08-31 16:08 UTC (permalink / raw)
  To: Marius Bakke, Brendan Tildesley, guix-devel

On Tue, Aug 30, 2016, at 02:07 PM, Marius Bakke wrote:
> I don't have a Guix system with audio atm so someone else will have to
> review it :)

It works for me on GuixSD OOTB.

Brendan Tildesley wrote:
> +    (home-page "http://praat.org")

The docs point to "http://www.praat.org", so I think we should include
the www.

> +    (synopsis "Doing phonetics by computer")
> +    (description
> +     "Praat is a program for linguists to analyse, synthesize, and
> +manipulate speech, generate graphs for scientific papers, and more.")

I know it's Praat's tagline, but the synopsis doesn't match the rest of
our packages. Something like "Phonetic analysis program" would be
better. The description could probably be a bit more fleshed out too,
but I think it's also fine if you don't want to bother.

> +    (license license:gpl2)))

This should be gpl2+. It looks like praat bundles some third-party
libraries under external/ with various licenses. These should be
unbundled if possible, or else their licenses should be added to praat's
license field.

Thanks for contributing, hope it's not too much trouble cleaning up
these last few details!
-- 
Alex Griffin

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-08-30 16:08 [PATCH] gnu: Add praat Brendan Tildesley
  2016-08-30 19:02 ` ng0
  2016-08-30 19:07 ` Marius Bakke
@ 2016-09-01 17:43 ` Brendan Tildesley
  2016-09-02 11:08   ` ng0
  2016-09-02 12:20   ` Ludovic Courtès
  2 siblings, 2 replies; 9+ messages in thread
From: Brendan Tildesley @ 2016-09-01 17:43 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 586 bytes --]

Please discard the first patch and consider this updated version. I was
able to identify a timestamp and remove it, make the build reproducible.
Also, I have added all the licenses to the best of my ability, by which
I mean I ripped off the debian package. Praat looks messy but it's fun
software. For example, you if you are learning a tonal language, you can
import recordings to have it show the contours and see how they differ
from the idealised textbook versions (quite a lot!) --
http://www.sinosplice.com/life/archives/2008/01/21/seeing-the-tones-of-mandarin-chinese-with-praat

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-praat.patch --]
[-- Type: text/x-patch; name="0001-gnu-Add-praat.patch", Size: 5653 bytes --]

From bdc94ded90345e67885a7aa3b7e649bc546ad22c Mon Sep 17 00:00:00 2001
From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
Date: Fri, 2 Sep 2016 03:28:58 +1000
Subject: [PATCH] gnu: Add praat

* gnu/packages/linguistics.scm (praat): New variable
---
 gnu/local.mk                 |   1 +
 gnu/packages/linguistics.scm | 111 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 112 insertions(+)
 create mode 100644 gnu/packages/linguistics.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 5b90dfb..795a246 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -214,6 +214,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/libunwind.scm			\
   %D%/packages/libupnp.scm			\
   %D%/packages/links.scm			\
+  %D%/packages/linguistics.scm			\
   %D%/packages/linux.scm			\
   %D%/packages/lirc.scm				\
   %D%/packages/lisp.scm				\
diff --git a/gnu/packages/linguistics.scm b/gnu/packages/linguistics.scm
new file mode 100644
index 0000000..70a0d43
--- /dev/null
+++ b/gnu/packages/linguistics.scm
@@ -0,0 +1,111 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages linguistics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages linux) ; for alsa-lib
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages pulseaudio))
+
+(define-public praat
+  (package
+    (name "praat")
+    (version "6.0.19")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://github.com/praat/praat/archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32 "1fhzqzygx5h6xkjaxwgzvnby393q7c3lby0fq3bnhscfdhzkm0a0"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("alsa-lib" ,alsa-lib)
+       ("pulseaudio" ,pulseaudio)
+       ("python" ,python)))             ; optional scripts
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'be-timeless
+           (lambda _
+             (substitute* "external/portaudio/pa_front.c"
+               ((" \\(built \" __DATE__  \" \" __TIME__ \"\\)") ""))
+             #t))
+         (add-before
+             'build
+             'copy-makefile
+           (lambda _
+             (copy-file "makefiles/makefile.defs.linux.pulse"
+                        "makefile.defs")
+             #t))
+         (replace
+             'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (target (string-append out "/bin")))
+               (mkdir-p target)
+               (install-file "praat" target))
+             #t))))) 
+    (home-page "http://www.praat.org")
+    (synopsis "Phonetics analysis program for linguists")
+    (description
+     "According to its authors, praat is \"doing phonetics by
+computer\". Through its graphical interface, several speech analysis
+functionalities are available: spectrograms, cochleograms, and pitch and
+formant extraction. Articulatory synthesis, as well as synthesis from pitch,
+formant, and intensity are also available. Other features are segmentation,
+labelling using the phonetic alphabet, and computation of statistics. Praat is
+configurable and extensible through its own scripting language and has
+provisions for communicating with other programs.")
+    (license (list
+              ;; Praat it's self (no version stated => gpl2+ by gpl terms)
+              ;; EEG/*, FFNet/*, LPC/* external/mp3/*
+              ;; external/espeak/espeakdata_FileInMemory.*
+              ;; contrib/ola/*
+              ;; kar/ipaSerifRegularPS.cpp
+              ;; dwsys/regularExp.h
+              ;; dwsys/NUMmathlib.cpp
+              license:gpl2+
+              ;; external/gsl/*
+              ;; external/glpk/*
+              ;; external/espeak/*
+              license:gpl3+
+              ;; external/flac/*
+              license:bsd-3
+              ;; external/portaudio/*
+              license:expat
+              ;; num/NUMrandom.cpp
+              license:public-domain
+              ;; external/flac/flac_share_alloc.h
+              ;; external/glpk/colamd.c
+              license:lgpl2.1+
+              ))))
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-09-01 17:43 ` Brendan Tildesley
@ 2016-09-02 11:08   ` ng0
  2016-09-02 12:20   ` Ludovic Courtès
  1 sibling, 0 replies; 9+ messages in thread
From: ng0 @ 2016-09-02 11:08 UTC (permalink / raw)
  To: Brendan Tildesley, guix-devel

Brendan Tildesley <brendan.tildesley@openmailbox.org> writes:

> Please discard the first patch and consider this updated version. I was
> able to identify a timestamp and remove it, make the build reproducible.
> Also, I have added all the licenses to the best of my ability, by which
> I mean I ripped off the debian package. Praat looks messy but it's fun
> software. For example, you if you are learning a tonal language, you can
> import recordings to have it show the contours and see how they differ
> from the idealised textbook versions (quite a lot!) --
> http://www.sinosplice.com/life/archives/2008/01/21/seeing-the-tones-of-mandarin-chinese-with-praat
> From bdc94ded90345e67885a7aa3b7e649bc546ad22c Mon Sep 17 00:00:00 2001
> From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
> Date: Fri, 2 Sep 2016 03:28:58 +1000
> Subject: [PATCH] gnu: Add praat
>
> * gnu/packages/linguistics.scm (praat): New variable
> ---
>  gnu/local.mk                 |   1 +
>  gnu/packages/linguistics.scm | 111 +++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 112 insertions(+)
>  create mode 100644 gnu/packages/linguistics.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 5b90dfb..795a246 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -214,6 +214,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/libunwind.scm			\
>    %D%/packages/libupnp.scm			\
>    %D%/packages/links.scm			\
> +  %D%/packages/linguistics.scm			\
>    %D%/packages/linux.scm			\
>    %D%/packages/lirc.scm				\
>    %D%/packages/lisp.scm				\
> diff --git a/gnu/packages/linguistics.scm b/gnu/packages/linguistics.scm
> new file mode 100644
> index 0000000..70a0d43
> --- /dev/null
> +++ b/gnu/packages/linguistics.scm
> @@ -0,0 +1,111 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2016 Brendan Tildesley <brendan.tildesley@openmailbox.org>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages linguistics)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix utils)
> +  #:use-module (guix download)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages linux) ; for alsa-lib
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages version-control)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages pulseaudio))

These are just minor details to save lines of code, which do not affect
the build process. I assume the package builds as you wrote before.

> +(define-public praat
> +  (package
> +    (name "praat")
> +    (version "6.0.19")
> +    (source (origin
> +              (method url-fetch)
> +              (uri
> +               (string-append
> +                "https://github.com/praat/praat/archive/v" version ".tar.gz"))

I would move this up:

                 (uri (string-append "https://github.com/praat/praat/archive/v" version ".tar.gz"))

but as this saves nothing, you could as well do:

                 (uri (string-append "https://github.com/praat/praat/"
                                     "archive/v" version ".tar.gz"))

> +              (file-name (string-append name "-" version ".tar.gz"))
> +              (sha256
> +               (base32 "1fhzqzygx5h6xkjaxwgzvnby393q7c3lby0fq3bnhscfdhzkm0a0"))))

This could be moved, as (almost) every package does this:
(sha256
 (base32
   "incrediblelongspelltosummoncthulhu"))

> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (inputs
> +     `(("gtk" ,gtk+-2)
> +       ("alsa-lib" ,alsa-lib)
> +       ("pulseaudio" ,pulseaudio)
> +       ("python" ,python)))             ; optional scripts
> +    (arguments
> +     `(#:tests? #f

         `(#:tests? #f ; Tests fail because $reason(s)
or just:
         `(#:tests? #f ; No make check

> +       #:phases
> +       (modify-phases %standard-phases
> +         (delete 'configure)
> +         (add-after 'unpack 'be-timeless
> +           (lambda _
> +             (substitute* "external/portaudio/pa_front.c"
> +               ((" \\(built \" __DATE__  \" \" __TIME__ \"\\)") ""))
> +             #t))
> +         (add-before
> +             'build
> +             'copy-makefile

As far as I know we can change this to
(add-before 'build 'copy-makefile

> +           (lambda _
> +             (copy-file "makefiles/makefile.defs.linux.pulse"
> +                        "makefile.defs")
> +             #t))
> +         (replace
> +             'install

and this to (replace 'install

> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (target (string-append out "/bin")))
> +               (mkdir-p target)
> +               (install-file "praat" target))
> +             #t))))) 
> +    (home-page "http://www.praat.org")
> +    (synopsis "Phonetics analysis program for linguists")
> +    (description
> +     "According to its authors, praat is \"doing phonetics by
> +computer\". Through its graphical interface, several speech analysis
> +functionalities are available: spectrograms, cochleograms, and pitch and
> +formant extraction. Articulatory synthesis, as well as synthesis from pitch,
> +formant, and intensity are also available. Other features are segmentation,
> +labelling using the phonetic alphabet, and computation of statistics. Praat is
> +configurable and extensible through its own scripting language and has
> +provisions for communicating with other programs.")

The license list is pretty long. I would change it...

> +    (license (list
> +              ;; Praat it's self (no version stated => gpl2+ by gpl terms)
> +              ;; EEG/*, FFNet/*, LPC/* external/mp3/*
> +              ;; external/espeak/espeakdata_FileInMemory.*
> +              ;; contrib/ola/*
> +              ;; kar/ipaSerifRegularPS.cpp
> +              ;; dwsys/regularExp.h
> +              ;; dwsys/NUMmathlib.cpp
> +              license:gpl2+
> +              ;; external/gsl/*
> +              ;; external/glpk/*
> +              ;; external/espeak/*
> +              license:gpl3+
> +              ;; external/flac/*
> +              license:bsd-3
> +              ;; external/portaudio/*
> +              license:expat
> +              ;; num/NUMrandom.cpp
> +              license:public-domain
> +              ;; external/flac/flac_share_alloc.h
> +              ;; external/glpk/colamd.c
> +              license:lgpl2.1+
> +              ))))

...to:

(license (list
          ;; Praat itself (no version stated => gpl2+ by gpl terms)
          ;; EEG/*, FFNet/*, LPC/* external/mp3/*
          ;; external/espeak/espeakdata_FileInMemory.*
          ;; contrib/ola/* , kar/ipaSerifRegularPS.cpp
          ;; dwsys/regularExp.h , dwsys/NUMmathlib.cpp
          license:gpl2+
          ;; external/gsl/* , external/glpk/* , external/espeak/*
          license:gpl3+
          license:bsd-3 ; external/flac/*
          license:expat ; external/portaudio/*
          license:public-domain ; num/NUMrandom.cpp
          ;; external/flac/flac_share_alloc.h , external/glpk/colamd.c
          license:lgpl2.1+))))
and this                  ^ otherwise the parens feel lonely and lint
                            becomes sad.


Or something similar to this.
> -- 
> 2.9.3
>

-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-09-01 17:43 ` Brendan Tildesley
  2016-09-02 11:08   ` ng0
@ 2016-09-02 12:20   ` Ludovic Courtès
  2016-09-02 15:12     ` Brendan Tildesley
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-09-02 12:20 UTC (permalink / raw)
  To: Brendan Tildesley; +Cc: guix-devel

Hi Brendan,

Brendan Tildesley <brendan.tildesley@openmailbox.org> skribis:

> Please discard the first patch and consider this updated version. I was
> able to identify a timestamp and remove it, make the build reproducible.

Awesome!

> From bdc94ded90345e67885a7aa3b7e649bc546ad22c Mon Sep 17 00:00:00 2001
> From: Brendan Tildesley <brendan.tildesley@openmailbox.org>
> Date: Fri, 2 Sep 2016 03:28:58 +1000
> Subject: [PATCH] gnu: Add praat
>
> * gnu/packages/linguistics.scm (praat): New variable

[...]

> +         (add-after 'unpack 'be-timeless
> +           (lambda _
> +             (substitute* "external/portaudio/pa_front.c"
> +               ((" \\(built \" __DATE__  \" \" __TIME__ \"\\)") ""))
> +             #t))

Could you move it to a ‘snippet’ in the ‘origin’ form?  (See the
‘squeak-vm’ package for an example.)

> +    (license (list
> +              ;; Praat it's self (no version stated => gpl2+ by gpl terms)
> +              ;; EEG/*, FFNet/*, LPC/* external/mp3/*
> +              ;; external/espeak/espeakdata_FileInMemory.*
> +              ;; contrib/ola/*
> +              ;; kar/ipaSerifRegularPS.cpp
> +              ;; dwsys/regularExp.h
> +              ;; dwsys/NUMmathlib.cpp
> +              license:gpl2+
> +              ;; external/gsl/*
> +              ;; external/glpk/*
> +              ;; external/espeak/*
> +              license:gpl3+
> +              ;; external/flac/*
> +              license:bsd-3
> +              ;; external/portaudio/*
> +              license:expat
> +              ;; num/NUMrandom.cpp
> +              license:public-domain
> +              ;; external/flac/flac_share_alloc.h
> +              ;; external/glpk/colamd.c
> +              license:lgpl2.1+
> +              ))))

As Alex Griffin wrote, we should remove all of external/ in ‘snippet’
(see item #9 about “bundling” at
<https://www.gnu.org/software/guix/manual/html_node/Submitting-Patches.html>),
and instead add GSL, GLPK, FLAC, etc. as ‘inputs’ of the package.

Would you like to try it?

I think this is the only remaining blocker here.

Thank you for your work!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-09-02 12:20   ` Ludovic Courtès
@ 2016-09-02 15:12     ` Brendan Tildesley
  2016-09-03 13:43       ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Brendan Tildesley @ 2016-09-02 15:12 UTC (permalink / raw)
  To: guix-devel

On 2016-09-02 22:20, Ludovic Courtès wrote:
> [...]
>
>> +         (add-after 'unpack 'be-timeless
>> +           (lambda _
>> +             (substitute* "external/portaudio/pa_front.c"
>> +               ((" \\(built \" __DATE__  \" \" __TIME__ \"\\)") ""))
>> +             #t))
> Could you move it to a ‘snippet’ in the ‘origin’ form?  (See the
> ‘squeak-vm’ package for an example.)
>
Sure.
> As Alex Griffin wrote, we should remove all of external/ in ‘snippet’
> (see item #9 about “bundling” at
> <https://www.gnu.org/software/guix/manual/html_node/Submitting-Patches.html>),
> and instead add GSL, GLPK, FLAC, etc. as ‘inputs’ of the package.
>
> Would you like to try it?
>
> I think this is the only remaining blocker here.
>
> Thank you for your work!
>
> Ludo’.

I don't have any issue with this per se, but I haven't the slightest
clue how to due it. Praat Has no configure script, rather it just has a
make file that compiles everything into a single binary. is the code in
FLAC the same as the flac package?? How would I go about making these
external packages? Also I'm wondering how to go about adding an icon and
.desktop file supporting internationalisation. It seems upstream should
do this but they haven't so the package is nothing like a standard GNU
program. Is it possible to do all this without learning C?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add praat
  2016-09-02 15:12     ` Brendan Tildesley
@ 2016-09-03 13:43       ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2016-09-03 13:43 UTC (permalink / raw)
  To: Brendan Tildesley; +Cc: guix-devel

Brendan Tildesley <brendan.tildesley@openmailbox.org> skribis:

> On 2016-09-02 22:20, Ludovic Courtès wrote:
>> [...]
>>
>>> +         (add-after 'unpack 'be-timeless
>>> +           (lambda _
>>> +             (substitute* "external/portaudio/pa_front.c"
>>> +               ((" \\(built \" __DATE__  \" \" __TIME__ \"\\)") ""))
>>> +             #t))
>> Could you move it to a ‘snippet’ in the ‘origin’ form?  (See the
>> ‘squeak-vm’ package for an example.)
>>
> Sure.
>> As Alex Griffin wrote, we should remove all of external/ in ‘snippet’
>> (see item #9 about “bundling” at
>> <https://www.gnu.org/software/guix/manual/html_node/Submitting-Patches.html>),
>> and instead add GSL, GLPK, FLAC, etc. as ‘inputs’ of the package.
>>
>> Would you like to try it?
>>
>> I think this is the only remaining blocker here.
>>
>> Thank you for your work!
>>
>> Ludo’.
>
> I don't have any issue with this per se, but I haven't the slightest
> clue how to due it.

Roughly:

  (origin
    …
    (modules '((guix build utils)))
    (snippet '(delete-file-recursively "external")))  ;like ‘rm -rf’

The ‘crossmap’ package is one example of that.

> Praat Has no configure script, rather it just has a make file that
> compiles everything into a single binary. is the code in FLAC the same
> as the flac package??

I hope so.

> How would I go about making these external packages?

Most or all of them are already packaged.  So just add:

  (inputs
    `(("gsl" ,gsl)
      ("glpk" ,gplk)
      ("flac" ,flac)
      …))

Maybe you’ll also have to tweak the Makefile so it doesn’t try to build
stuff in external/.

Could you give it a try and report back?

> Also I'm wondering how to go about adding an icon and .desktop file
> supporting internationalisation. It seems upstream should do this but
> they haven't so the package is nothing like a standard GNU program. Is
> it possible to do all this without learning C?

Probably, but let’s leave that for a subsequent patch.  :-)

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-09-03 13:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-30 16:08 [PATCH] gnu: Add praat Brendan Tildesley
2016-08-30 19:02 ` ng0
2016-08-30 19:07 ` Marius Bakke
2016-08-31 16:08   ` Alex Griffin
2016-09-01 17:43 ` Brendan Tildesley
2016-09-02 11:08   ` ng0
2016-09-02 12:20   ` Ludovic Courtès
2016-09-02 15:12     ` Brendan Tildesley
2016-09-03 13:43       ` Ludovic Courtès

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).