Commit Message
* gnu/packages/video.scm (handbrake): New variable.
* gnu/packages/patches/handbrake-pkg-config-path.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
.../patches/handbrake-pkg-config-path.patch | 13 +++
gnu/packages/video.scm | 114 +++++++++++++++++++++
3 files changed, 128 insertions(+)
create mode 100644 gnu/packages/patches/handbrake-pkg-config-path.patch
Comments
On Sun, Oct 30, 2016 at 10:08:22PM -0500, Eric Bavier wrote:
> * gnu/packages/video.scm (handbrake): New variable.
> * gnu/packages/patches/handbrake-pkg-config-path.patch: New patch.
> * gnu/local.mk (dist_patch_DATA): Add it.
> ---
> gnu/local.mk | 1 +
> .../patches/handbrake-pkg-config-path.patch | 13 +++
> gnu/packages/video.scm | 114 +++++++++++++++++++++
> 3 files changed, 128 insertions(+)
> create mode 100644 gnu/packages/patches/handbrake-pkg-config-path.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index a64b7ec..1cdcf42 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -589,6 +589,7 @@ dist_patch_DATA = \
> %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
> %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
> %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
> + %D%/packages/patches/handbrake-pkg-config-path.patch \
> %D%/packages/patches/hdf4-architectures.patch \
> %D%/packages/patches/hdf4-reproducibility.patch \
> %D%/packages/patches/hdf4-shared-fortran.patch \
> diff --git a/gnu/packages/patches/handbrake-pkg-config-path.patch b/gnu/packages/patches/handbrake-pkg-config-path.patch
> new file mode 100644
> index 0000000..fafdb99
> --- /dev/null
> +++ b/gnu/packages/patches/handbrake-pkg-config-path.patch
> @@ -0,0 +1,13 @@
> +Do not clobber PKG_CONFIG_PATH during configure.
> +
> +--- HandBrake-0.10.5/gtk/module.rules.orig 2016-02-11 14:14:05.000000000 -0600
> ++++ HandBrake-0.10.5/gtk/module.rules 2016-10-29 22:27:50.550960848 -0500
> +@@ -15,7 +15,7 @@
> + set -e; cd $(GTK.src/); NOCONFIGURE=1 ./autogen.sh
> + set -e; cd $(GTK.build/); $(call fn.ABSOLUTE,$(GTK.src/))configure \
> + $(GTK.CONFIGURE.extra) \
> +- PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig \
> ++ PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig$(if $(PKG_CONFIG_PATH),:)$(PKG_CONFIG_PATH) \
> + CFLAGS="$(call fn.ARGS,GTK.GCC,.g .O *D ?extra)" \
> + LDFLAGS="$(call fn.ARGS,GTK.GCC,?strip .g .O ?extra.exe)" \
> + --prefix=$(PREFIX) \
> diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
> index e9e419c..c7cc27a 100644
> --- a/gnu/packages/video.scm
> +++ b/gnu/packages/video.scm
> @@ -11,6 +11,7 @@
> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
> ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
> ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
> +;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -42,6 +43,7 @@
> #:use-module (guix build-system glib-or-gtk)
> #:use-module (guix build-system python)
> #:use-module (guix build-system waf)
> + #:use-module (guix build-system glib-or-gtk)
this one is extra, it's there 3 lines up :)
> #:use-module (gnu packages)
> #:use-module (gnu packages algebra)
> #:use-module (gnu packages audio)
> @@ -50,6 +52,7 @@
> #:use-module (gnu packages base)
> #:use-module (gnu packages bison)
> #:use-module (gnu packages cdrom)
> + #:use-module (gnu packages cmake)
> #:use-module (gnu packages compression)
> #:use-module (gnu packages curl)
> #:use-module (gnu packages databases)
> @@ -63,11 +66,14 @@
> #:use-module (gnu packages gl)
> #:use-module (gnu packages glib)
> #:use-module (gnu packages guile)
> + #:use-module (gnu packages gnome)
> #:use-module (gnu packages gnupg)
> + #:use-module (gnu packages gstreamer)
> #:use-module (gnu packages gtk)
> #:use-module (gnu packages image)
> #:use-module (gnu packages linux)
> #:use-module (gnu packages lua)
> + #:use-module (gnu packages m4)
> #:use-module (gnu packages mp3)
> #:use-module (gnu packages ncurses)
> #:use-module (gnu packages ocr)
> @@ -84,6 +90,7 @@
> #:use-module (gnu packages tls)
> #:use-module (gnu packages version-control)
> #:use-module (gnu packages web)
> + #:use-module (gnu packages webkit)
> #:use-module (gnu packages xdisorg)
> #:use-module (gnu packages xiph)
> #:use-module (gnu packages xml)
> @@ -1684,3 +1691,110 @@ specifications.")
> (description "libaacs is a library which implements the Advanced Access
> Content System specification.")
> (license license:lgpl2.1+)))
> +
> +(define-public handbrake
> + (package
> + (name "handbrake")
> + (version "0.10.5")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://handbrake.fr/rotation.php?file="
> + "HandBrake-" version ".tar.bz2"))
> + (file-name (string-append "handbrake-" version ".tar.bz2"))
> + (sha256
> + (base32
> + "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv"))
> + (patches (search-patches "handbrake-pkg-config-path.patch"))
> + (modules '((guix build utils)))
> + (snippet
> + ;; Remove bundled libraries and source not necessary for
> + ;; running under a GNU environment.
> + '(for-each delete-file-recursively '("contrib" "macosx" "win")))))
> + (build-system glib-or-gtk-build-system)
> + (native-inputs
> + `(("automake" ,automake) ;gui subpackage must be bootstrapped
> + ("autoconf" ,autoconf)
> + ("curl" ,curl) ;not actually used, but tested for
> + ("intltool" ,intltool)
> + ("libtool" ,libtool)
> + ("pkg-config" ,pkg-config)
> + ("python" ,python-2) ;for configuration
> + ("yasm" ,yasm)))
> + (inputs
> + `(("bzip2" ,bzip2)
> + ("dbus-glib" ,dbus-glib)
> + ("ffmpeg" ,ffmpeg)
> + ("fontconfig" ,fontconfig)
> + ("freetype" ,freetype)
> + ("glib" ,glib)
> + ("gstreamer" ,gstreamer)
> + ("gst-plugins-base" ,gst-plugins-base)
> + ("gtk+" ,gtk+)
> + ("lame" ,lame)
> + ("libass" ,libass)
> + ("libbluray" ,libbluray)
> + ("libdvdnav" ,libdvdnav)
> + ("libdvdread" ,libdvdread)
> + ("libgudev" ,libgudev)
> + ("libmpeg2" ,libmpeg2)
> + ("libnotify" ,libnotify)
> + ("libogg" ,libogg)
> + ("libsamplerate" ,libsamplerate)
> + ("libtheora" ,libtheora)
> + ("libvorbis" ,libvorbis)
> + ("libvpx" ,libvpx)
> + ("libxml2" ,libxml2)
> + ("libx264" ,libx264)
> + ("libx265" ,x265)
> + ("zlib" ,zlib)))
> + (arguments
> + `(#:tests? #f ;tests require Ruby and claim to be unsupported
> + #:configure-flags '("--enable-gtk")
I looked to see if there was the --ignore-options-i-dont-understand
flag and I didn't see it. Do we need any of the other flags?
--disable-gtk-update-checks
--enable-qsv (intel quick sync, if we support it)
--enable-hwd
--enable-x265
would --fetch=wget eliminate the need for curl in native-inputs?
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'patch-source-shebangs 'bootstrap-gtk
> + ;; Run bootstrap ahead of time so that shebangs get patched.
> + (lambda _
> + (setenv "CONFIG_SHELL" (which "sh"))
> + (and
> + (begin
> + (setenv "NOCONFIGURE" "1")
> + (zero? (system* "sh" "./gtk/autogen.sh")))
> + ;; Patch the Makefile so that it doesn't bootstrap again.
> + (begin
> + (substitute* "gtk/module.rules"
> + ((".*autogen\\.sh.*") ""))
> + #t))))
> + (add-before 'configure 'disable-contrib
> + (lambda _
> + (substitute* "make/include/main.defs"
> + ;; Disable unconditional inclusion of some "contrib"
> + ;; libraries (ffmpeg, libvpx, libdvdread, libdvdnav,
> + ;; and libbluray), which would lead to fetching and
> + ;; building of these libraries. Use our own instead.
> + (("MODULES \\+= contrib") "# MODULES += contrib"))
> + #t))
> + (add-before 'configure 'fix-x265-linking
> + (lambda _
> + (substitute* "test/module.defs"
> + ;; Fix missing library during linking error
> + (("TEST.GCC.l =") "TEST.GCC.l = x265"))
> + #t))
> + (replace 'configure
> + (lambda* (#:key outputs configure-flags #:allow-other-keys)
> + ;; 'configure' is not an autoconf-generated script, and
> + ;; errors on unrecognized arguments,
> + ;; e.g. --enable-fast-install
> + (let ((out (assoc-ref outputs "out")))
> + (zero? (apply system* "./configure"
> + (string-append "--prefix=" out)
> + (or configure-flags '()))))))
> + (add-after 'configure 'chdir-build
> + (lambda _ (chdir "./build") #t)))))
> + (home-page "https://handbrake.fr")
> + (synopsis "Video transcoder")
> + (description
> + "HandBrake is a tool for converting video from any format to a selection
> +of modern, widely supported codecs.")
> + ;; Most under GPL version 2, and portions under BSD 3 Clause
> + (license (list license:gpl2 license:bsd-3))))
> --
> 2.10.0
>
>
On Mon, Oct 31, 2016 at 10:09:26AM +0200, Efraim Flashner wrote:
> On Sun, Oct 30, 2016 at 10:08:22PM -0500, Eric Bavier wrote:
> > * gnu/packages/video.scm (handbrake): New variable.
> > * gnu/packages/patches/handbrake-pkg-config-path.patch: New patch.
> > * gnu/local.mk (dist_patch_DATA): Add it.
...
> > #:use-module (gnu packages base)
> > #:use-module (gnu packages bison)
> > #:use-module (gnu packages cdrom)
> > + #:use-module (gnu packages cmake)
I'm not sure you need this one
> > #:use-module (gnu packages compression)
> > #:use-module (gnu packages curl)
> > #:use-module (gnu packages databases)
...
> > + ("libx264" ,libx264)
> > + ("libx265" ,x265)
> > + ("zlib" ,zlib)))
> > + (arguments
> > + `(#:tests? #f ;tests require Ruby and claim to be unsupported
> > + #:configure-flags '("--enable-gtk")
>
> I looked to see if there was the --ignore-options-i-dont-understand
> flag and I didn't see it. Do we need any of the other flags?
> --disable-gtk-update-checks
> --enable-qsv (intel quick sync, if we support it)
> --enable-hwd
> --enable-x265
>
> would --fetch=wget eliminate the need for curl in native-inputs?
>
to answer some of my own questions, wget isn't natively there, using
'--fetch=wget' with curl and no wget fails configuring.
qsv: not packaged
hwd: also breaks configure
adding '--enable-x265' doesn't remove the need for the 'fix-x265-linking
issue
> > + #:phases
> > + (modify-phases %standard-phases
> > + (add-before 'patch-source-shebangs 'bootstrap-gtk
> > + ;; Run bootstrap ahead of time so that shebangs get patched.
> > + (lambda _
> > + (setenv "CONFIG_SHELL" (which "sh"))
> > + (and
> > + (begin
> > + (setenv "NOCONFIGURE" "1")
> > + (zero? (system* "sh" "./gtk/autogen.sh")))
> > + ;; Patch the Makefile so that it doesn't bootstrap again.
> > + (begin
> > + (substitute* "gtk/module.rules"
> > + ((".*autogen\\.sh.*") ""))
> > + #t))))
I commented the autogen part out by accident and it didn't seem to be
needed afterall.
> > + (add-before 'configure 'disable-contrib
> > + (lambda _
> > + (substitute* "make/include/main.defs"
> > + ;; Disable unconditional inclusion of some "contrib"
> > + ;; libraries (ffmpeg, libvpx, libdvdread, libdvdnav,
> > + ;; and libbluray), which would lead to fetching and
> > + ;; building of these libraries. Use our own instead.
> > + (("MODULES \\+= contrib") "# MODULES += contrib"))
> > + #t))
> > + (add-before 'configure 'fix-x265-linking
> > + (lambda _
> > + (substitute* "test/module.defs"
> > + ;; Fix missing library during linking error
> > + (("TEST.GCC.l =") "TEST.GCC.l = x265"))
> > + #t))
> > + (replace 'configure
> > + (lambda* (#:key outputs configure-flags #:allow-other-keys)
> > + ;; 'configure' is not an autoconf-generated script, and
> > + ;; errors on unrecognized arguments,
> > + ;; e.g. --enable-fast-install
> > + (let ((out (assoc-ref outputs "out")))
> > + (zero? (apply system* "./configure"
> > + (string-append "--prefix=" out)
> > + (or configure-flags '()))))))
> > + (add-after 'configure 'chdir-build
> > + (lambda _ (chdir "./build") #t)))))
> > + (home-page "https://handbrake.fr")
> > + (synopsis "Video transcoder")
> > + (description
> > + "HandBrake is a tool for converting video from any format to a selection
> > +of modern, widely supported codecs.")
> > + ;; Most under GPL version 2, and portions under BSD 3 Clause
> > + (license (list license:gpl2 license:bsd-3))))
> > --
> > 2.10.0
> >
> >
Eric Bavier <bavier@member.fsf.org> writes:
> * gnu/packages/video.scm (handbrake): New variable.
> * gnu/packages/patches/handbrake-pkg-config-path.patch: New patch.
> * gnu/local.mk (dist_patch_DATA): Add it.
Yay, thanks for the patch!
> gnu/local.mk | 1 +
> .../patches/handbrake-pkg-config-path.patch | 13 +++
> gnu/packages/video.scm | 114 +++++++++++++++++++++
> 3 files changed, 128 insertions(+)
> create mode 100644 gnu/packages/patches/handbrake-pkg-config-path.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index a64b7ec..1cdcf42 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -589,6 +589,7 @@ dist_patch_DATA = \
> %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
> %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
> %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
> + %D%/packages/patches/handbrake-pkg-config-path.patch \
> %D%/packages/patches/hdf4-architectures.patch \
> %D%/packages/patches/hdf4-reproducibility.patch \
> %D%/packages/patches/hdf4-shared-fortran.patch \
> diff --git a/gnu/packages/patches/handbrake-pkg-config-path.patch b/gnu/packages/patches/handbrake-pkg-config-path.patch
> new file mode 100644
> index 0000000..fafdb99
> --- /dev/null
> +++ b/gnu/packages/patches/handbrake-pkg-config-path.patch
> @@ -0,0 +1,13 @@
> +Do not clobber PKG_CONFIG_PATH during configure.
> +
> +--- HandBrake-0.10.5/gtk/module.rules.orig 2016-02-11 14:14:05.000000000 -0600
> ++++ HandBrake-0.10.5/gtk/module.rules 2016-10-29 22:27:50.550960848 -0500
> +@@ -15,7 +15,7 @@
> + set -e; cd $(GTK.src/); NOCONFIGURE=1 ./autogen.sh
> + set -e; cd $(GTK.build/); $(call fn.ABSOLUTE,$(GTK.src/))configure \
> + $(GTK.CONFIGURE.extra) \
> +- PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig \
> ++ PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig$(if $(PKG_CONFIG_PATH),:)$(PKG_CONFIG_PATH) \
> + CFLAGS="$(call fn.ARGS,GTK.GCC,.g .O *D ?extra)" \
> + LDFLAGS="$(call fn.ARGS,GTK.GCC,?strip .g .O ?extra.exe)" \
> + --prefix=$(PREFIX) \
> diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
> index e9e419c..c7cc27a 100644
> --- a/gnu/packages/video.scm
> +++ b/gnu/packages/video.scm
> @@ -11,6 +11,7 @@
> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
> ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
> ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
> +;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -42,6 +43,7 @@
> #:use-module (guix build-system glib-or-gtk)
> #:use-module (guix build-system python)
> #:use-module (guix build-system waf)
> + #:use-module (guix build-system glib-or-gtk)
This line is not needed (it’s a duplicate of what’s three lines above).
> #:use-module (gnu packages)
> #:use-module (gnu packages algebra)
> #:use-module (gnu packages audio)
> @@ -50,6 +52,7 @@
> #:use-module (gnu packages base)
> #:use-module (gnu packages bison)
> #:use-module (gnu packages cdrom)
> + #:use-module (gnu packages cmake)
> #:use-module (gnu packages compression)
> #:use-module (gnu packages curl)
> #:use-module (gnu packages databases)
> @@ -63,11 +66,14 @@
> #:use-module (gnu packages gl)
> #:use-module (gnu packages glib)
> #:use-module (gnu packages guile)
> + #:use-module (gnu packages gnome)
> #:use-module (gnu packages gnupg)
> + #:use-module (gnu packages gstreamer)
> #:use-module (gnu packages gtk)
> #:use-module (gnu packages image)
> #:use-module (gnu packages linux)
> #:use-module (gnu packages lua)
> + #:use-module (gnu packages m4)
> #:use-module (gnu packages mp3)
> #:use-module (gnu packages ncurses)
> #:use-module (gnu packages ocr)
> @@ -84,6 +90,7 @@
> #:use-module (gnu packages tls)
> #:use-module (gnu packages version-control)
> #:use-module (gnu packages web)
> + #:use-module (gnu packages webkit)
> #:use-module (gnu packages xdisorg)
> #:use-module (gnu packages xiph)
> #:use-module (gnu packages xml)
> @@ -1684,3 +1691,110 @@ specifications.")
> (description "libaacs is a library which implements the Advanced Access
> Content System specification.")
> (license license:lgpl2.1+)))
> +
> +(define-public handbrake
> + (package
> + (name "handbrake")
> + (version "0.10.5")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://handbrake.fr/rotation.php?file="
> + "HandBrake-" version ".tar.bz2"))
> + (file-name (string-append "handbrake-" version ".tar.bz2"))
> + (sha256
> + (base32
> + "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv"))
> + (patches (search-patches "handbrake-pkg-config-path.patch"))
> + (modules '((guix build utils)))
> + (snippet
> + ;; Remove bundled libraries and source not necessary for
> + ;; running under a GNU environment.
> + '(for-each delete-file-recursively '("contrib" "macosx" "win")))))
Please use '(begin … #t) here.
> + (build-system glib-or-gtk-build-system)
> + (native-inputs
> + `(("automake" ,automake) ;gui subpackage must be bootstrapped
> + ("autoconf" ,autoconf)
> + ("curl" ,curl) ;not actually used, but tested for
> + ("intltool" ,intltool)
> + ("libtool" ,libtool)
> + ("pkg-config" ,pkg-config)
> + ("python" ,python-2) ;for configuration
> + ("yasm" ,yasm)))
> + (inputs
> + `(("bzip2" ,bzip2)
> + ("dbus-glib" ,dbus-glib)
> + ("ffmpeg" ,ffmpeg)
> + ("fontconfig" ,fontconfig)
> + ("freetype" ,freetype)
> + ("glib" ,glib)
> + ("gstreamer" ,gstreamer)
> + ("gst-plugins-base" ,gst-plugins-base)
> + ("gtk+" ,gtk+)
> + ("lame" ,lame)
> + ("libass" ,libass)
> + ("libbluray" ,libbluray)
> + ("libdvdnav" ,libdvdnav)
> + ("libdvdread" ,libdvdread)
> + ("libgudev" ,libgudev)
> + ("libmpeg2" ,libmpeg2)
> + ("libnotify" ,libnotify)
> + ("libogg" ,libogg)
> + ("libsamplerate" ,libsamplerate)
> + ("libtheora" ,libtheora)
> + ("libvorbis" ,libvorbis)
> + ("libvpx" ,libvpx)
> + ("libxml2" ,libxml2)
> + ("libx264" ,libx264)
> + ("libx265" ,x265)
> + ("zlib" ,zlib)))
> + (arguments
> + `(#:tests? #f ;tests require Ruby and claim to be unsupported
> + #:configure-flags '("--enable-gtk")
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'patch-source-shebangs 'bootstrap-gtk
> + ;; Run bootstrap ahead of time so that shebangs get patched.
> + (lambda _
> + (setenv "CONFIG_SHELL" (which "sh"))
> + (and
> + (begin
> + (setenv "NOCONFIGURE" "1")
> + (zero? (system* "sh" "./gtk/autogen.sh")))
I don’t think “setenv” is limited to the “begin” block as it has a
side-effect. You could pull the “setenv” outside of the “and” expression.
> + ;; Patch the Makefile so that it doesn't bootstrap again.
> + (begin
> + (substitute* "gtk/module.rules"
> + ((".*autogen\\.sh.*") ""))
> + #t))))
> + (add-before 'configure 'disable-contrib
> + (lambda _
> + (substitute* "make/include/main.defs"
> + ;; Disable unconditional inclusion of some "contrib"
> + ;; libraries (ffmpeg, libvpx, libdvdread, libdvdnav,
> + ;; and libbluray), which would lead to fetching and
> + ;; building of these libraries. Use our own instead.
> + (("MODULES \\+= contrib") "# MODULES += contrib"))
> + #t))
> + (add-before 'configure 'fix-x265-linking
> + (lambda _
> + (substitute* "test/module.defs"
> + ;; Fix missing library during linking error
> + (("TEST.GCC.l =") "TEST.GCC.l = x265"))
> + #t))
> + (replace 'configure
> + (lambda* (#:key outputs configure-flags #:allow-other-keys)
> + ;; 'configure' is not an autoconf-generated script, and
> + ;; errors on unrecognized arguments,
> + ;; e.g. --enable-fast-install
> + (let ((out (assoc-ref outputs "out")))
> + (zero? (apply system* "./configure"
> + (string-append "--prefix=" out)
> + (or configure-flags '()))))))
> + (add-after 'configure 'chdir-build
> + (lambda _ (chdir "./build") #t)))))
> + (home-page "https://handbrake.fr")
> + (synopsis "Video transcoder")
> + (description
> + "HandBrake is a tool for converting video from any format to a selection
> +of modern, widely supported codecs.")
> + ;; Most under GPL version 2, and portions under BSD 3 Clause
> + (license (list license:gpl2 license:bsd-3))))
Okay!
~~ Ricardo
@@ -589,6 +589,7 @@ dist_patch_DATA = \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
%D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
+ %D%/packages/patches/handbrake-pkg-config-path.patch \
%D%/packages/patches/hdf4-architectures.patch \
%D%/packages/patches/hdf4-reproducibility.patch \
%D%/packages/patches/hdf4-shared-fortran.patch \
new file mode 100644
@@ -0,0 +1,13 @@
+Do not clobber PKG_CONFIG_PATH during configure.
+
+--- HandBrake-0.10.5/gtk/module.rules.orig 2016-02-11 14:14:05.000000000 -0600
++++ HandBrake-0.10.5/gtk/module.rules 2016-10-29 22:27:50.550960848 -0500
+@@ -15,7 +15,7 @@
+ set -e; cd $(GTK.src/); NOCONFIGURE=1 ./autogen.sh
+ set -e; cd $(GTK.build/); $(call fn.ABSOLUTE,$(GTK.src/))configure \
+ $(GTK.CONFIGURE.extra) \
+- PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig \
++ PKG_CONFIG_PATH=$(BUILD/)contrib/lib/pkgconfig$(if $(PKG_CONFIG_PATH),:)$(PKG_CONFIG_PATH) \
+ CFLAGS="$(call fn.ARGS,GTK.GCC,.g .O *D ?extra)" \
+ LDFLAGS="$(call fn.ARGS,GTK.GCC,?strip .g .O ?extra.exe)" \
+ --prefix=$(PREFIX) \
@@ -11,6 +11,7 @@
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system python)
#:use-module (guix build-system waf)
+ #:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
@@ -50,6 +52,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages cdrom)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
@@ -63,11 +66,14 @@
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages guile)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages m4)
#:use-module (gnu packages mp3)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages ocr)
@@ -84,6 +90,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
@@ -1684,3 +1691,110 @@ specifications.")
(description "libaacs is a library which implements the Advanced Access
Content System specification.")
(license license:lgpl2.1+)))
+
+(define-public handbrake
+ (package
+ (name "handbrake")
+ (version "0.10.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://handbrake.fr/rotation.php?file="
+ "HandBrake-" version ".tar.bz2"))
+ (file-name (string-append "handbrake-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv"))
+ (patches (search-patches "handbrake-pkg-config-path.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled libraries and source not necessary for
+ ;; running under a GNU environment.
+ '(for-each delete-file-recursively '("contrib" "macosx" "win")))))
+ (build-system glib-or-gtk-build-system)
+ (native-inputs
+ `(("automake" ,automake) ;gui subpackage must be bootstrapped
+ ("autoconf" ,autoconf)
+ ("curl" ,curl) ;not actually used, but tested for
+ ("intltool" ,intltool)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2) ;for configuration
+ ("yasm" ,yasm)))
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("dbus-glib" ,dbus-glib)
+ ("ffmpeg" ,ffmpeg)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("glib" ,glib)
+ ("gstreamer" ,gstreamer)
+ ("gst-plugins-base" ,gst-plugins-base)
+ ("gtk+" ,gtk+)
+ ("lame" ,lame)
+ ("libass" ,libass)
+ ("libbluray" ,libbluray)
+ ("libdvdnav" ,libdvdnav)
+ ("libdvdread" ,libdvdread)
+ ("libgudev" ,libgudev)
+ ("libmpeg2" ,libmpeg2)
+ ("libnotify" ,libnotify)
+ ("libogg" ,libogg)
+ ("libsamplerate" ,libsamplerate)
+ ("libtheora" ,libtheora)
+ ("libvorbis" ,libvorbis)
+ ("libvpx" ,libvpx)
+ ("libxml2" ,libxml2)
+ ("libx264" ,libx264)
+ ("libx265" ,x265)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:tests? #f ;tests require Ruby and claim to be unsupported
+ #:configure-flags '("--enable-gtk")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'bootstrap-gtk
+ ;; Run bootstrap ahead of time so that shebangs get patched.
+ (lambda _
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (and
+ (begin
+ (setenv "NOCONFIGURE" "1")
+ (zero? (system* "sh" "./gtk/autogen.sh")))
+ ;; Patch the Makefile so that it doesn't bootstrap again.
+ (begin
+ (substitute* "gtk/module.rules"
+ ((".*autogen\\.sh.*") ""))
+ #t))))
+ (add-before 'configure 'disable-contrib
+ (lambda _
+ (substitute* "make/include/main.defs"
+ ;; Disable unconditional inclusion of some "contrib"
+ ;; libraries (ffmpeg, libvpx, libdvdread, libdvdnav,
+ ;; and libbluray), which would lead to fetching and
+ ;; building of these libraries. Use our own instead.
+ (("MODULES \\+= contrib") "# MODULES += contrib"))
+ #t))
+ (add-before 'configure 'fix-x265-linking
+ (lambda _
+ (substitute* "test/module.defs"
+ ;; Fix missing library during linking error
+ (("TEST.GCC.l =") "TEST.GCC.l = x265"))
+ #t))
+ (replace 'configure
+ (lambda* (#:key outputs configure-flags #:allow-other-keys)
+ ;; 'configure' is not an autoconf-generated script, and
+ ;; errors on unrecognized arguments,
+ ;; e.g. --enable-fast-install
+ (let ((out (assoc-ref outputs "out")))
+ (zero? (apply system* "./configure"
+ (string-append "--prefix=" out)
+ (or configure-flags '()))))))
+ (add-after 'configure 'chdir-build
+ (lambda _ (chdir "./build") #t)))))
+ (home-page "https://handbrake.fr")
+ (synopsis "Video transcoder")
+ (description
+ "HandBrake is a tool for converting video from any format to a selection
+of modern, widely supported codecs.")
+ ;; Most under GPL version 2, and portions under BSD 3 Clause
+ (license (list license:gpl2 license:bsd-3))))