[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#33042] [PATCH] gnu: Add soundconverter.
From: |
Christopher Baines |
Subject: |
[bug#33042] [PATCH] gnu: Add soundconverter. |
Date: |
Fri, 19 Oct 2018 14:43:25 +0100 |
* 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.
---
gnu/local.mk | 1 +
gnu/packages/gnome.scm | 65 +++++++++++++++
...undconverter-remove-gconf-dependency.patch | 83 +++++++++++++++++++
3 files changed, 149 insertions(+)
create mode 100644
gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index af3773c893..6108ba8b82 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1146,6 +1146,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 \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index de938e4b14..2b75439a95 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -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 "Audio file converter for the GNOME Desktop")
+ (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
diff --git a/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
b/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
new file mode 100644
index 0000000000..f065b9a3d4
--- /dev/null
+++ b/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
@@ -0,0 +1,83 @@
+From: Sebastian Ramacher <address@hidden>
+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:
--
2.19.1
[bug#33042] [PATCH] gnu: Add soundconverter.,
Christopher Baines <=