gnu: Add Handbrake.

* 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.
This commit is contained in:
Eric Bavier 2015-12-25 20:29:09 -06:00
parent 1339a8ed1c
commit fe047e1380
No known key found for this signature in database
GPG Key ID: 1EBBD204781F962C
3 changed files with 134 additions and 0 deletions

View File

@ -594,6 +594,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 \

View File

@ -0,0 +1,24 @@
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) \
--- Handbrake-0.10.5-0.77d09e9-checkout/make/include/contrib.defs 1969-12-31 18:00:00.000000000 -0600
+++ Handbrake-0.10.5-0.77d09e9-checkout/make/include/contrib.defs 2016-11-01 13:11:43.826144311 -0500
@@ -119,7 +119,7 @@
endif
$(1).CONFIGURE.env.CPPFLAGS = CPPFLAGS="-I$$(call fn.ABSOLUTE,$(CONTRIB.build/))include $$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver ?extra *D)"
$(1).CONFIGURE.env.LDFLAGS = LDFLAGS="-L$$(call fn.ABSOLUTE,$(CONTRIB.build/))lib $$(call fn.ARGS,$(1).GCC,*archs *sysroot *minver ?extra.exe *D)"
- $(1).CONFIGURE.env.PKG_CONFIG_PATH = PKG_CONFIG_PATH="$$(call fn.ABSOLUTE,$$(CONTRIB.build/))lib/pkgconfig"
+ $(1).CONFIGURE.env.PKG_CONFIG_PATH = PKG_CONFIG_PATH="$$(call fn.ABSOLUTE,$$(CONTRIB.build/))lib/pkgconfig$(if $(PKG_CONFIG_PATH),:)$(PKG_CONFIG_PATH)"
$(1).CONFIGURE.env.args = !CC !CFLAGS !CXX !CXXFLAGS !CPPFLAGS !LD !LDFLAGS !PKG_CONFIG_PATH !LOCAL_PATH !CROSS
$(1).CONFIGURE.env = $$(call fn.ARGS,$(1).CONFIGURE.env,$$($(1).CONFIGURE.env.args))

View File

@ -12,6 +12,7 @@
;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -51,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)
@ -64,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)
@ -85,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)
@ -1715,3 +1721,106 @@ It can use either mpv or mplayer for playback, and for conversion of
formats ffmpeg or libav is used. Users should install one of the
supported players in addition to this package.")
(license license:gpl3+)))
(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.
'(begin
(for-each delete-file-recursively '("contrib" "macosx" "win"))
#t))))
(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
(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)
("x265" ,x265)
("zlib" ,zlib)))
(arguments
`(#:tests? #f ;tests require Ruby and claim to be unsupported
#: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"))
(setenv "NOCONFIGURE" "1")
;; Patch the Makefile so that it doesn't bootstrap again.
(substitute* "gtk/module.rules"
((".*autogen\\.sh.*") ""))
(zero? (system* "sh" "./gtk/autogen.sh"))))
(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 or later, and portions under BSD 3 Clause
(license (list license:gpl2+ license:bsd-3))))