*/*: Replace virtual/libgudev with dev-libs/libgudev
[gentoo.git] / media-video / handbrake / handbrake-9999.ebuild
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 PYTHON_COMPAT=( python2_7 )
7
8 inherit autotools eutils gnome2-utils python-any-r1 xdg-utils
9
10 if [[ ${PV} = *9999* ]]; then
11         EGIT_REPO_URI="https://github.com/HandBrake/HandBrake.git"
12         inherit git-r3
13         KEYWORDS=""
14 else
15         MY_P="HandBrake-${PV}"
16         SRC_URI="https://download2.handbrake.fr/${PV}/${MY_P}-source.tar.bz2 -> ${P}.tar.bz2"
17         S="${WORKDIR}/${MY_P}"
18         KEYWORDS="~amd64 ~x86"
19 fi
20
21 DESCRIPTION="Open-source, GPL-licensed, multiplatform, multithreaded video transcoder"
22 HOMEPAGE="http://handbrake.fr/"
23 LICENSE="GPL-2"
24
25 SLOT="0"
26 IUSE="+fdk gstreamer gtk libav libav-aac x265"
27
28 REQUIRED_USE="^^ ( fdk libav-aac )"
29
30 RDEPEND="
31         dev-libs/jansson
32         media-libs/a52dec
33         media-libs/libass:=
34         >=media-libs/libbluray-1.0
35         media-libs/libdvdnav
36         media-libs/libdvdread
37         media-libs/libsamplerate
38         media-libs/libtheora
39         media-libs/libvorbis
40         media-libs/libvpx
41         media-libs/opus
42         media-libs/x264:=
43         media-sound/lame
44         sys-libs/zlib
45         libav? ( >=media-video/libav-12.3:0=[fdk?] )
46         !libav? ( >=media-video/ffmpeg-3.4:0=[fdk?] )
47         gstreamer? (
48                 media-libs/gstreamer:1.0
49                 media-libs/gst-plugins-base:1.0
50                 media-libs/gst-plugins-good:1.0
51                 media-libs/gst-plugins-bad:1.0
52                 media-libs/gst-plugins-ugly:1.0
53                 media-plugins/gst-plugins-a52dec:1.0
54                 media-plugins/gst-plugins-libav:1.0
55                 media-plugins/gst-plugins-x264:1.0
56         )
57         gtk? (
58                 >=x11-libs/gtk+-3.10
59                 dev-libs/dbus-glib
60                 dev-libs/glib:2
61                 dev-libs/libgudev:=
62                 x11-libs/cairo
63                 x11-libs/gdk-pixbuf:2
64                 x11-libs/libnotify
65                 x11-libs/pango
66         )
67         fdk? ( media-libs/fdk-aac )
68         x265? ( >=media-libs/x265-1.7:0= )
69         "
70
71 DEPEND="${RDEPEND}
72         ${PYTHON_DEPS}
73         dev-lang/yasm
74         dev-util/intltool
75         sys-devel/automake"
76
77 PATCHES=(
78         # Remove libdvdnav duplication and call it on the original instead.
79         # It may work this way; if not, we should try to mimic the duplication.
80         "${FILESDIR}/${PN}-9999-remove-dvdnav-dup.patch"
81
82         # Remove faac dependency; TODO: figure out if we need to do this at all.
83         "${FILESDIR}/${PN}-9999-remove-faac-dependency.patch"
84
85         # Fix missing x265 link flag
86         "${FILESDIR}/${PN}-9999-fix-missing-x265-link-flag.patch"
87 )
88
89 pkg_setup() {
90         python-any-r1_pkg_setup
91 }
92
93 src_prepare() {
94         # Get rid of leftover bundled library build definitions,
95         sed -i 's:.*\(/contrib\|contrib/\).*::g' \
96                 "${S}"/make/include/main.defs \
97                 || die "Contrib removal failed."
98
99         default
100
101         # Get rid of libav specific code when using ffmpeg
102         use libav || eapply -R "${FILESDIR}/${PN}-1.1.0-nolibav.patch"
103
104         cd "${S}/gtk"
105         # Don't run autogen.sh.
106         sed -i '/autogen.sh/d' module.rules || die "Removing autogen.sh call failed"
107         eautoreconf
108 }
109
110 src_configure() {
111         ./configure \
112                 --force \
113                 --verbose \
114                 --prefix="${EPREFIX}/usr" \
115                 --disable-gtk-update-checks \
116                 $(use_enable libav-aac) \
117                 $(use_enable fdk fdk-aac) \
118                 $(use_enable gtk) \
119                 $(usex !gstreamer --disable-gst) \
120                 $(use_enable x265) || die "Configure failed."
121 }
122
123 src_compile() {
124         emake -C build
125
126         # TODO: Documentation building is currently broken, try to fix it.
127         #
128         # if use doc ; then
129         #       emake -C build doc
130         # fi
131 }
132
133 src_install() {
134         emake -C build DESTDIR="${D}" install
135
136         dodoc README.markdown AUTHORS.markdown NEWS.markdown THANKS.markdown
137 }
138
139 pkg_postinst() {
140         einfo "For the CLI version of HandBrake, you can use \`HandBrakeCLI\`."
141
142         if use gtk ; then
143                 einfo ""
144                 einfo "For the GTK+ version of HandBrake, you can run \`ghb\`."
145         fi
146
147         gnome2_icon_cache_update
148         xdg_desktop_database_update
149 }
150
151 pkg_preinst() {
152         gnome2_icon_savelist
153 }
154
155 pkg_postrm() {
156         gnome2_icon_cache_update
157         xdg_desktop_database_update
158 }