gnu: Add soundconverter.
* gnu/packages/gnome.scm (soundconverter): New variable. * gnu/packages/patches/soundconverter-remove-gconf-dependency.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
parent
b5a927b3ba
commit
0d3f170864
@ -1150,6 +1150,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/slim-reset.patch \
|
||||
%D%/packages/patches/slim-login.patch \
|
||||
%D%/packages/patches/sooperlooper-build-with-wx-30.patch \
|
||||
%D%/packages/patches/soundconverter-remove-gconf-dependency.patch \
|
||||
%D%/packages/patches/soundtouch-CVE-2018-14044-14045.patch \
|
||||
%D%/packages/patches/soundtouch-CVE-2018-1000223.patch \
|
||||
%D%/packages/patches/steghide-fixes.patch \
|
||||
|
@ -7220,6 +7220,71 @@ It supports ripping to any audio codec supported by a GStreamer plugin, such as
|
||||
mp3, Ogg Vorbis and FLAC")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public soundconverter
|
||||
(package
|
||||
(name "soundconverter")
|
||||
(version "3.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://launchpad.net/soundconverter/trunk/"
|
||||
version "/+download/"
|
||||
"soundconverter-" version ".tar.xz"))
|
||||
|
||||
(sha256
|
||||
(base32
|
||||
"1wrxf5py54xplrf97qp24pzbis0cvax5c6k0c7vr3z3ry8r7gd7c"))
|
||||
(patches
|
||||
(search-patches
|
||||
"soundconverter-remove-gconf-dependency.patch"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
`(#:imported-modules ((guix build python-build-system)
|
||||
(guix build glib-or-gtk-build-system)
|
||||
,@%gnu-build-system-modules)
|
||||
|
||||
#:modules ((guix build glib-or-gtk-build-system)
|
||||
(guix build utils)
|
||||
((guix build gnu-build-system) #:prefix gnu:)
|
||||
((guix build python-build-system) #:prefix python:))
|
||||
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-POTFILES.in
|
||||
(lambda _
|
||||
(substitute* "po/POTFILES.in"
|
||||
;; This file doesn't exist, so without removing it, the 'check
|
||||
;; phase fails for the po directory
|
||||
(("soundconverter/gconfstore\\.py") ""))))
|
||||
(add-after 'install 'wrap-soundconverter-for-python
|
||||
(assoc-ref python:%standard-phases 'wrap))
|
||||
(add-after 'install 'wrap-soundconverter
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(gi-typelib-path (getenv "GI_TYPELIB_PATH"))
|
||||
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
|
||||
(wrap-program (string-append out "/bin/soundconverter")
|
||||
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
|
||||
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("glib:bin" ,glib "bin")))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+)
|
||||
("python" ,python)
|
||||
("python-pygobject" ,python-pygobject)
|
||||
("gstreamer" ,gstreamer)
|
||||
("gst-plugins-base" ,gst-plugins-base)))
|
||||
(home-page "http://soundconverter.org/")
|
||||
(synopsis "Convert between audio formats with a graphical interface")
|
||||
(description
|
||||
"SoundConverter supports converting between many audio formats including
|
||||
Opus, Ogg Vorbis, FLAC and more. It supports parallel conversion, and
|
||||
configurable file renaming. ")
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public workrave
|
||||
(let ((commit "v1_10_21"))
|
||||
(package
|
||||
|
@ -0,0 +1,83 @@
|
||||
From: Sebastian Ramacher <sebastian@ramacher.at>
|
||||
Date: Fri, 6 Apr 2018 13:25:35 +0200
|
||||
Subject: Only fetch profiles if GConf is still available
|
||||
|
||||
---
|
||||
bin/soundconverter.py | 1 -
|
||||
soundconverter/gstreamer.py | 44 ++++++++++++++++++++++++--------------------
|
||||
2 files changed, 24 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/bin/soundconverter.py b/bin/soundconverter.py
|
||||
index 39055ce..5198443 100644
|
||||
--- a/bin/soundconverter.py
|
||||
+++ b/bin/soundconverter.py
|
||||
@@ -66,7 +66,6 @@ def _check_libs():
|
||||
import gi
|
||||
gi.require_version('Gst', '1.0')
|
||||
gi.require_version('Gtk', '3.0')
|
||||
- gi.require_version('GConf', '2.0')
|
||||
from gi.repository import GObject
|
||||
# force GIL creation - see https://bugzilla.gnome.org/show_bug.cgi?id=710447
|
||||
import threading
|
||||
diff --git a/soundconverter/gstreamer.py b/soundconverter/gstreamer.py
|
||||
index 23aaa9b..211b052 100644
|
||||
--- a/soundconverter/gstreamer.py
|
||||
+++ b/soundconverter/gstreamer.py
|
||||
@@ -25,7 +25,7 @@ from urllib.parse import urlparse
|
||||
from gettext import gettext as _
|
||||
|
||||
import gi
|
||||
-from gi.repository import Gst, Gtk, GObject, GConf, Gio
|
||||
+from gi.repository import Gst, Gtk, GObject, Gio
|
||||
|
||||
from soundconverter.fileoperations import vfs_encode_filename, file_encode_filename
|
||||
from soundconverter.fileoperations import unquote_filename, vfs_makedirs, vfs_unlink
|
||||
@@ -66,25 +66,29 @@ _GCONF_PROFILE_LIST_PATH = "/system/gstreamer/1.0/audio/global/profile_list"
|
||||
audio_profiles_list = []
|
||||
audio_profiles_dict = {}
|
||||
|
||||
-_GCONF = GConf.Client.get_default()
|
||||
-profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
|
||||
-for name in profiles:
|
||||
- if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
|
||||
- # get profile
|
||||
- description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
|
||||
- extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
|
||||
- pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
|
||||
- # check profile validity
|
||||
- if not extension or not pipeline:
|
||||
- continue
|
||||
- if not description:
|
||||
- description = extension
|
||||
- if description in audio_profiles_dict:
|
||||
- continue
|
||||
- # store
|
||||
- profile = description, extension, pipeline
|
||||
- audio_profiles_list.append(profile)
|
||||
- audio_profiles_dict[description] = profile
|
||||
+try:
|
||||
+ from gi.repository import GConf
|
||||
+ _GCONF = GConf.Client.get_default()
|
||||
+ profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
|
||||
+ for name in profiles:
|
||||
+ if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
|
||||
+ # get profile
|
||||
+ description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
|
||||
+ extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
|
||||
+ pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
|
||||
+ # check profile validity
|
||||
+ if not extension or not pipeline:
|
||||
+ continue
|
||||
+ if not description:
|
||||
+ description = extension
|
||||
+ if description in audio_profiles_dict:
|
||||
+ continue
|
||||
+ # store
|
||||
+ profile = description, extension, pipeline
|
||||
+ audio_profiles_list.append(profile)
|
||||
+ audio_profiles_dict[description] = profile
|
||||
+except ImportError:
|
||||
+ pass
|
||||
|
||||
required_elements = ('decodebin', 'fakesink', 'audioconvert', 'typefind', 'audiorate')
|
||||
for element in required_elements:
|
Loading…
Reference in New Issue
Block a user