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-reset.patch \
|
||||||
%D%/packages/patches/slim-login.patch \
|
%D%/packages/patches/slim-login.patch \
|
||||||
%D%/packages/patches/sooperlooper-build-with-wx-30.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-14044-14045.patch \
|
||||||
%D%/packages/patches/soundtouch-CVE-2018-1000223.patch \
|
%D%/packages/patches/soundtouch-CVE-2018-1000223.patch \
|
||||||
%D%/packages/patches/steghide-fixes.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")
|
mp3, Ogg Vorbis and FLAC")
|
||||||
(license license:gpl2+)))
|
(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
|
(define-public workrave
|
||||||
(let ((commit "v1_10_21"))
|
(let ((commit "v1_10_21"))
|
||||||
(package
|
(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