From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Wurmus Subject: Re: [PATCH] gnu: Add Handbrake. Date: Mon, 31 Oct 2016 10:30:40 +0100 Message-ID: <8760o8kh10.fsf@elephly.net> References: <20161031030822.10785-1-bavier@member.fsf.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52952) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c18vh-0002hy-TX for guix-devel@gnu.org; Mon, 31 Oct 2016 05:30:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c18ve-0004nx-Cx for guix-devel@gnu.org; Mon, 31 Oct 2016 05:30:57 -0400 Received: from sender163-mail.zoho.com ([74.201.84.163]:21313) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c18ve-0004mM-3B for guix-devel@gnu.org; Mon, 31 Oct 2016 05:30:54 -0400 In-reply-to: <20161031030822.10785-1-bavier@member.fsf.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Eric Bavier Cc: guix-devel@gnu.org Eric Bavier 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 > ;;; Copyright © 2016 Dmitry Nikolaev > ;;; Copyright © 2016 Andy Patterson > +;;; Copyright © 2016 Eric Bavier > ;;; > ;;; 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