;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015, 2017, 2020, 2021 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016, 2021 Efraim Flashner ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017, 2019, 2020 Pierre Langlois ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2019 Ricardo Wurmus ;;; Copyright © 2020 Michael Rohleder ;;; Copyright © 2021 Simon Streit ;;; Copyright © 2021 Guillaume Le Vaillant ;;; Copyright © 2022 John Kehayias ;;; Copyright © 2022 Joeke de Graaf ;;; ;;; 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 . (define-module (gnu packages mp3) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages gcc) #:use-module (gnu packages bash) #:use-module (gnu packages boost) #:use-module (gnu packages cdrom) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:u
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; 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 uucp)
  #:use-module (gnu packages golang)
  #:use-module (gnu packages golang-build)
  #:use-module (gnu packages golang-compression)
  #:use-module (gnu packages golang-crypto)
  #:use-module (gnu packages golang-web)
  #:use-module (gnu packages texinfo)
  #:use-module (guix licenses)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system go))

(define-public uucp
  (package
    (name "uucp")
    (version "1.07")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/uucp/uucp-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "0b5nhl9vvif1w3wdipjsk8ckw49jj1w85xw1mmqi3zbcpazia306"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
             ;; The old 'configure' script doesn't support the arguments
             ;; that we pass by default.
             (setenv "CONFIG_SHELL" (which "sh"))
             (let ((out (assoc-ref outputs "out")))
               (invoke "./configure"
                       (string-append "--prefix=" out)
                       (string-append "--infodir=" out
                                      "/share/info"))))))))
    (home-page "https://www.gnu.org/software/uucp/uucp.html")
    (synopsis "UUCP protocol implementation")
    (description
     "Taylor UUCP is the GNU implementation of UUCP (Unix-to-Unix Copy), a
set of utilities for remotely transferring files, email and net news
between computers.")
    (license gpl2+)))

(define-public nncp
  (package
    (name "nncp")
    (version "7.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://www.nncpgo.org/download/nncp-"
                           version ".tar.xz"))
       (sha256
        (base32
         "1r1zgj7gpkdmdm3wf31m0xi8y313kzd4dbyp4r4y8khnp32jvn8l"))
       (modules '((ice-9 ftw)
                  (guix build utils)))
       (snippet
        '(begin
           ;; Unbundle dependencies.
           ;; TODO: go.cypherpunks.ru was down at the time of
           ;; packaging. Unbundle go.cypherpunks dependencies as well once it
           ;; comes back online.
           (for-each (lambda (file)
                       (unless (member file (list "." ".." "go.cypherpunks.ru"))
                         (delete-file-recursively (string-append "src/vendor/" file))))
                     (scandir "src/vendor"))
           ;; Delete built documentation.
           (delete-file "doc/nncp.info")
           #t))))
    (build-system gnu-build-system)
    (arguments
     `(#:modules ((guix build gnu-build-system)
                  ((guix build go-build-system) #:prefix go:)
                  (guix build utils))
       #:imported-modules ,%go-build-system-modules
       #:phases
       (modify-phases %standard-phases
         (add-before 'unpack 'setup-go-environment
           (assoc-ref go:%standard-phases 'setup-go-environment))
         (add-after 'unpack 'go-unpack
           (lambda* (#:key source #:allow-other-keys)
             ;; Copy source to GOPATH.
             (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
             ;; Move bundled dependencies to GOPATH.
             (for-each (lambda (dependency)
                         (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
                                                     dependency)
                                      (string-append "../src/go.cypherpunks.ru/"
                                                     dependency)))
                       (list "balloon" "recfile"))
             ;; Delete empty bundled dependencies directory.
             (delete-file-recursively "src/vendor")))
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
               (setenv "GO_LDFLAGS" "-trimpath")
               ;; Set configuration path.
               (setenv "CFGPATH" "/etc/nncp.hjson")
               ;; Set output directories.
               (setenv "BINDIR" (string-append out "/bin"))
               (setenv "INFODIR" (string-append out "/share/info"))
               (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
             ;; Set absolute store paths to sh and cat.
             (substitute* (list "src/pipe.go" "src/toss_test.go")
               (("/bin/sh") (which "sh")))
             (substitute* "src/toss_test.go"
               (("; cat") (string-append "; " (which "cat"))))
             ;; Remove module flags.
             (substitute* (list "bin/default.do" "bin/hjson-cli.do" "test.do")
               ((" -mod=vendor") "")
               ((" -m") ""))
             ;; Use the correct module path. `go list` does not report the
             ;; correct module path since we have moved the source files.
             (substitute* "bin/default.do"
               (("^mod=[^\n]*" all) "mod=go.cypherpunks.ru/nncp/v7"))
             ;; Disable timeout in tests. Tests can take longer than the
             ;; default timeout on spinning disks.
             (substitute* "test.do"
               (("test") "test -timeout 0"))))
         (replace 'check
           (lambda* (#:key tests? #:allow-other-keys)
             (when tests?
               (invoke "contrib/do" "-c" "test")))))))
    (inputs
     (list go-github-com-davecgh-go-xdr
           go-github-com-dustin-go-humanize
           go-github-com-flynn-noise
           go-github-com-gorhill-cronexpr
           go-github-com-hjson-hjson-go-v4
           go-github-com-klauspost-compress
           go-golang-org-x-crypto
           go-golang-org-x-net
           go-golang-org-x-term
           go-lukechampine-com-blake3))
    (native-inputs
     (list go texinfo))
    (home-page "http://www.nncpgo.org/")
    (synopsis "Store and forward utilities")
    (description "NNCP (Node to Node copy) is a collection of utilities
simplifying secure store-and-forward files, mail and command exchanging.
These utilities are intended to help build up small size (dozens of nodes)
ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
networks for fire-and-forget secure reliable files, file requests, Internet
mail and commands transmission.  All packets are integrity checked, end-to-end
encrypted, explicitly authenticated by known participants public keys.  Onion
encryption is applied to relayed packets.  Each node acts both as a client and
server, can use push and poll behaviour model.  Multicasting areas, offline
sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
storages, air-gapped computers and online TCP daemon with full-duplex
resumable data transmission exists are all supported.")
    (license gpl3)))
y it supports both ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.") ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1. (license (list license:lgpl2.1 license:mpl1.1)))) (define-public minimp3 ;; The latest commit is used as there is no release. (let ((commit "afb604c06bc8beb145fecd42c0ceb5bda8795144") (revision "0")) (package (name "minimp3") (version (git-version "0.0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/lieff/minimp3") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0brgrbij8swhp7lac21xnnrr5l0371lkr5vz6h9x0dbz1qq2xhsj")))) ;; TODO: minimp3 has many more files for at least tests with scripts to ;; run them, although it is unclear how to easily package them. (build-system copy-build-system) (arguments '(#:install-plan '(("minimp3.h" "include/") ("minimp3_ex.h" "include/")))) (home-page "https://github.com/lieff/minimp3") (synopsis "Minimalistic MP3 decoder header library") (description "Minimp3 is a header-only MP3 decoder library.") (license license:cc0)))) (define-public mp3info (package (name "mp3info") (version "0.8.5a") (source (origin (method url-fetch) (uri (string-append "https://ibiblio.org" "/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-" version ".tgz")) (sha256 (base32 "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04")) (modules '((guix build utils))) (snippet '(begin (substitute* "Makefile" (("/bin/rm") "rm") (("/usr/bin/install") "install") (("man/man1") "share/man/man1")) #t)))) (build-system gnu-build-system) (outputs '("out" "gui")) ;GTK+ interface in "gui" (arguments '(#:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* "Makefile" (("prefix=.*") (string-append "prefix := " out "\n")))) #t)) (add-before 'install 'pre-install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p (string-append out "/bin")) (mkdir-p (string-append out "/share/man/man1"))) #t)) (add-after 'install 'post-install (lambda* (#:key outputs #:allow-other-keys) ;; Move the GTK+ interface to "gui". (let ((out (assoc-ref outputs "out")) (gui (assoc-ref outputs "gui"))) (mkdir-p (string-append gui "/bin")) (rename-file (string-append out "/bin/gmp3info") (string-append gui "/bin/gmp3info"))) #t))) #:tests? #f)) (native-inputs (list pkg-config)) (inputs (list gtk+-2 ncurses)) (home-page "https://www.ibiblio.org/mp3info/") (synopsis "MP3 technical info viewer and ID3 1.x tag editor") (description "MP3Info is a little utility used to read and modify the ID3 tags of MP3 files. MP3Info can also display various technical aspects of an MP3 file including playing time, bit-rate, sampling frequency and other attributes in a pre-defined or user-specifiable output format.") (license license:gpl2+))) (define-public libmp3splt (package (name "libmp3splt") (version "0.9.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/mp3splt/libmp3splt/" version "/libmp3splt-" version ".tar.gz")) (sha256 (base32 "1p1mn2hsmj5cp40fnc8g1yfvk72p8pjxi866gjdkgjsqrr7xdvih")))) (build-system gnu-build-system) (inputs (list flac libid3tag libmad libogg libltdl libvorbis pcre)) (native-inputs (list pkg-config)) (synopsis "Library for splitting mp3 and ogg vorbis files") (description "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin and an end time position, without decoding. For splitting an album, one may select split points and file names manually or obtain them automatically from CDDB (internet or a local file) or from .cue files. The tool also supports automatic silence split, that can be used also to adjust cddb/cue splitpoints. This package contains the library.") (license license:gpl2+) (home-page "https://mp3splt.sourceforge.net/mp3splt_page/home.php"))) (define-public mp3splt (package (name "mp3splt") (version "2.6.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/mp3splt/mp3splt/" version "/mp3splt-" version ".tar.gz")) (sha256 (base32 "1aiv20gypb6r84qabz8gblk8vi42cg3x333vk2pi3fyqvl82phry")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list libmp3splt)) (synopsis "Utility for splitting mp3 and ogg vorbis files") (description "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin and an end time position, without decoding. For splitting an album, one may select split points and file names manually or obtain them automatically from CDDB (internet or a local file) or from .cue files. The tool also supports automatic silence split, that can be used also to adjust cddb/cue splitpoints. This package contains the binary.") (license license:gpl2+) (home-page "https://mp3splt.sourceforge.net/mp3splt_page/home.php"))) (define-public mpg123 (package (name "mpg123") (version "1.31.2") (source (origin (method url-fetch) (uri (list (string-append "mirror://sourceforge/mpg123/mpg123/" version "/mpg123-" version ".tar.bz2") (string-append "https://www.mpg123.org/download/mpg123-" version ".tar.bz2"))) (sha256 (base32 "1pn777l9m7qbsx4v93gnav8bf6yi3skzdz8x81mkpx1ibs824zxi")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-default-audio=pulse"))) (native-inputs (list pkg-config)) (inputs (list alsa-lib pulseaudio)) (home-page "https://www.mpg123.org/") (synopsis "Console MP3 player and decoder library") (description "Mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers 1,2 and 3 (MPEG 1.0 layer 3 aka MP3 most commonly tested). It comes with a command-line tool as well as a C library, libmpg123.") (license license:lgpl2.1))) (define-public mpg321 (package (name "mpg321") (version "0.3.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/mpg321/mpg321/" version "/mpg321_" version ".orig.tar.gz")) (file-name (string-append "mpg321-" version ".tar.gz")) (sha256 (base32 "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5")) (patches (search-patches "mpg321-CVE-2019-14247.patch" "mpg321-gcc-10.patch")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-alsa"))) (inputs `(("zlib" ,zlib) ("libmad" ,libmad) ("libid3tag" ,libid3tag) ("libao" ,ao))) (home-page "https://mpg321.sourceforge.net/") (synopsis "Command-line MP3 player") (description "Mpg321 is a command-line mp3 player. mpg321 is used for frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for use with CD-recording software).") (license license:gpl2))) (define-public lame (package (name "lame") (version "3.100") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/lame/lame/" (version-major+minor version) "/lame-" version ".tar.gz")) (sha256 (base32 "07nsn5sy3a8xbmw1bidxnsj5fj6kg9ai04icmqw40ybkp353dznx")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'install 'install-pkg-config (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (pkg-config-dir (string-append out "/lib/pkgconfig"))) (mkdir-p pkg-config-dir) (with-output-to-file (string-append pkg-config-dir "/lame.pc") (lambda _ (format #t "prefix=~@*~a~@ libdir=${prefix}/lib~@ includedir=${prefix}/include~@ Name: lame~@ Description:~@ Version: ~a~@ Libs: -L${libdir} -lmp3lame~@ Cflags: -I${includedir}~%" out ,version))))))))) (home-page "https://lame.sourceforge.net/") (synopsis "MPEG Audio Layer III (MP3) encoder") (description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.") (license license:lgpl2.0))) (define-public ripperx (package (name "ripperx") (version "2.8.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/ripperx/ripperx/" version "/ripperx-" version ".tar.bz2")) (sha256 (base32 "1ss3c1a5hx6c99q1cryxg0jhbnbdj6ga9xyz0dzlz9qhzg5qswfs")) (patches (search-patches "ripperx-missing-file.patch")))) (build-system gnu-build-system) (propagated-inputs (list font-ghostscript cdparanoia flac lame vorbis-tools)) (inputs (list glib gtk+-2 id3lib taglib)) (native-inputs (list pkg-config)) (synopsis "GTK program to rip and encode CD audio tracks") (description "RipperX is a GTK program to rip CD audio tracks and encode them to the Ogg, MP3, or FLAC formats. Its goal is to be easy to use, requiring only a few mouse clicks to convert an entire album. It supports CDDB lookups for album and track information.") (license license:gpl2) (home-page "https://sourceforge.net/projects/ripperx/"))) (define-public libmpcdec (package (name "libmpcdec") (version "1.2.6") (source (origin (method url-fetch) (uri (string-append "https://files.musepack.net/source/libmpcdec-" version ".tar.bz2")) (sha256 (base32 "1a0jdyga1zfi4wgkg3905y6inghy3s4xfs5m4x7pal08m0llkmab")))) (build-system gnu-build-system) (synopsis "Decoding library for the Musepack audio format") (description "This library supports decoding of the Musepack (MPC) audio compression format.") (license license:bsd-3) (home-page "https://musepack.net"))) (define-public mpc123 (package (name "mpc123") (version "0.2.4") (source (origin (method url-fetch) (uri (list (string-append "mirror://sourceforge/mpc123/version%20" version "/mpc123-" version ".tar.gz") (string-append "mirror://debian/pool/main/m/" name "/" name "_" version ".orig.tar.gz"))) (sha256 (base32 "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1")) (patches (search-patches "mpc123-initialize-ao.patch")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (replace 'configure (lambda _ (substitute* "Makefile" (("CC[[:blank:]]*:=.*") "CC := gcc\n")) (setenv "CFLAGS" "-fcommon -g"))) ;allow compilation with GCC 10 (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin"))) (install-file "mpc123" bin))))) #:tests? #f)) (native-inputs `(("gettext" ,gettext-minimal))) (inputs `(("libao" ,ao) ("libmpcdec" ,libmpcdec))) (home-page "https://github.com/bucciarati/mpc123") (synopsis "Audio player for Musepack-formatted files") (description "Mpc123 is a command-line player for files in the Musepack audio compression format (.mpc files).") (license license:gpl2+))) (define-public eyed3 (package (name "eyed3") (version "0.9.6") (source (origin (method url-fetch) (uri (pypi-uri "eyeD3" version)) (sha256 (base32 "063mpg5bks9dgggjyag8968z5r7z4x50s0m0rja956dk1zn68l2b")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; the required test data contains copyrighted material (propagated-inputs (list python-deprecation python-filetype python-grako python-magic python-pathlib python-six)) (synopsis "MP3 tag ID3 metadata editor") (description "eyeD3 is a Python tool for working with audio files, specifically mp3 files containing ID3 metadata (i.e. song info). It provides a command-line tool (eyeD3) and a Python library (import eyed3) that can be used to write your own applications or plugins that are callable from the command-line tool.") (home-page "https://eyed3.readthedocs.io/en/latest/") (license license:gpl2+))) (define-public chromaprint (package (name "chromaprint") (version "1.5.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/acoustid/chromaprint/releases/download/v" version "/chromaprint-" version ".tar.gz")) (sha256 (base32 "072y6c7ijkm6r674f6z089rbdazrmxzpdcsm6y6vf64b7gxdiam1")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; tests require googletest *sources* ;;#:configure-flags '("-DBUILD_TESTS=ON") ; for building the tests #:configure-flags '("-DBUILD_TOOLS=ON") ; for fpcalc #:test-target "check")) (inputs ;; requires one of FFmpeg (prefered), FFTW3 or vDSP ;; use the same ffmpeg version as for acoustid-fingerprinter (list ffmpeg-4 boost)) (home-page "https://acoustid.org/chromaprint") (synopsis "Audio fingerprinting library") (description "Chromaprint is a library for calculating audio fingerprints which are used by the Acoustid service. Its main purpose is to provide an accurate identifier for record tracks.") (license license:lgpl2.1+))) (define-public python-audioread (package (name "python-audioread") (version "2.1.9") (source (origin (method url-fetch) (uri (pypi-uri "audioread" version)) (sha256 (base32 "129hab8x9sb3plff2bkq4xnzc3i8k9rgcm1a36l813kc0m10wj53")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; there is no "audiofile" fixture (native-inputs (list python-pytest python-pytest-runner)) (home-page "https://github.com/sampsyo/audioread") (synopsis "Decode audio files using whichever backend is available") (description "This package provides a Python library for audo decoding. It uses whatever audio backend is available, such as GStreamer, Core Audio, MAD, FFmpeg, etc.") (license license:expat))) (define-public python-pyacoustid (package (name "python-pyacoustid") (version "1.2.2") (source (origin (method url-fetch) (uri (pypi-uri "pyacoustid" version)) (sha256 (base32 "0ha15m41r8ckmanc4k9nrlb9hprvhdjxndzw40a1yj3z1b1xjyf2")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'chromaprint-path (lambda* (#:key inputs #:allow-other-keys) (substitute* "chromaprint.py" (("libchromaprint.so.1") (string-append (assoc-ref inputs "chromaprint") "/lib/libchromaprint.so.1"))) (substitute* "acoustid.py" (("'fpcalc'") (string-append "'" (assoc-ref inputs "chromaprint") "/bin/fpcalc'"))) #t))))) (inputs (list chromaprint)) (propagated-inputs (list python-audioread python-requests)) (home-page "https://github.com/beetbox/pyacoustid") (synopsis "Bindings for Chromaprint acoustic fingerprinting") (description "This package provides bindings for the Chromaprint acoustic fingerprinting library and the Acoustid API.") (license license:expat))) (define-public python-pytaglib (package (name "python-pytaglib") (version "1.4.6") (source (origin (method url-fetch) (uri (pypi-uri "pytaglib" version)) (sha256 (base32 "0li970qslfymz4vk1wrij2nfqw3l15cpc3fjjci48mpvg17gbnhn")) ;; Delete file generated by Cython. (modules '((guix build utils))) (snippet '(begin (delete-file "src/taglib.cpp"))))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases ;; Ensure that the Cython file is regenerated. (add-after 'unpack 'setup-environment (lambda _ (setenv "PYTAGLIB_CYTHONIZE" "1")))))) (native-inputs (list python-cython python-pytest)) (inputs (list taglib)) (home-page "https://github.com/supermihi/pytaglib") (synopsis "Python bindings for taglib") (description "This package is a Python audio tagging library. It is cross-platform, works with all Python versions, and is very simple to use yet fully featured.") (license license:gpl3))) (define-public wavbreaker (package (name "wavbreaker") (version "0.15") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/thp/wavbreaker/") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "16h0sfcb8av6a368giizzwv9m0lq5c3bnf4b9vyyh9nkbbsc7c3j")))) (build-system meson-build-system) (arguments '(#:modules ((guix build utils) (guix build meson-build-system)) #:phases (modify-phases %standard-phases (add-after 'install 'wrap-program ;; This wrapping is necessary to make wavbreaker find things it ;; needs in pure environments. (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (adwaita-icons (assoc-ref inputs "adwaita-icon-theme")) (hicolor-icons (assoc-ref inputs "hicolor-icon-theme")) (shared-mime (assoc-ref inputs "shared-mime-info"))) (wrap-program (string-append out "/bin/wavbreaker") ;; Needed in order for wavbreakere to find the icons it needs `("XDG_DATA_DIRS" ":" prefix ,(map (lambda (package) (string-append package "/share")) `(,out ;for wavbreaker's icon ,adwaita-icons ,hicolor-icons ,shared-mime))) ;; This is necessary to load some pixbufs like Adwaita's ;; check-symbolic.svg and wavbreaker's own logo in the ;; 'about' section. `("GDK_PIXBUF_MODULE_FILE" = (,(getenv "GDK_PIXBUF_MODULE_FILE"))) ;; Needed for GTK's file chooser to not crash. `("GSETTINGS_SCHEMA_DIR" = (,(string-append (assoc-ref inputs "gtk+") "/share/glib-2.0/schemas")))))))))) (native-inputs (list pkg-config cmake)) (inputs (list glib gtk+ ao bash-minimal adwaita-icon-theme shared-mime-info hicolor-icon-theme gsettings-desktop-schemas)) (home-page "https://wavbreaker.sourceforge.io/") (synopsis "WAV and MP3 file splitter with a GUI") (description "Wavbreaker is a WAV and MP3 file splitter. It can be used to break up a WAV or MP3 audio file into multiple WAV files. Wavbreaker contains a helpful waveform display of the audio file being edited, to help the user in splitting the file at the right point. Wavbreaker also supports splitting MP3 files without re-encoding them, to preserve their original audio quality.") (license license:gpl2+)))