# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI="2" inherit eutils python DESCRIPTION="OpenShot Video Editor is a free, open-source, non-linear video editor, based on Python, GTK, and MLT." HOMEPAGE="http://www.openshotvideo.com" MAIN_URI="http://launchpad.net/openshot/build-wizard/create-a-build-wizard/+download" SRC_URI="${MAIN_URI}/openshot.deb -> openshot-${PV}.deb mirror://gentoo/mlt-0.4.4.tar.gz" # This almost seems oxymoron, heh RESTRICT="mirror" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="dvgrab faac ieee1394 jack jack-rack kino ladspa quicktime" # Notes on depends: # app-arch/deb2targz is for converting the OpenShot program's .deb package # dev-lang/swig is for compiling the MLT Python bindings # media-libs/mlt is so we don't have to depend on OpenShot's rather # large (~22M) .deb dependencies package (we only use 1 file from it) # Everything else is required by OpenShot or is an optional/USE feature DEPEND="app-arch/deb2targz dev-lang/swig =media-libs/mlt-0.4.4 media-video/ffmpeg media-video/x264-encoder media-libs/x264 media-plugins/frei0r-plugins dev-python/pygoocanvas media-libs/libdv gnome-base/librsvg media-libs/libsamplerate media-libs/libtheora media-libs/libvorbis dev-libs/libxml2 media-sound/sox media-libs/libsdl ieee1394? ( sys-libs/libavc1394 ) quicktime? ( media-libs/libquicktime ) dvgrab? ( media-video/dvgrab ) faac? ( media-libs/faac ) jack? ( media-sound/jack-audio-connection-kit ) jack-rack? ( media-sound/jack-rack ) kino? ( media-video/kino ) ladspa? ( media-libs/ladspa-sdk )" RDEPEND="${DEPEND}" src_unpack() { # Unpack the main .deb package first, along with its friends ar x ${DISTDIR}/openshot-${PV}.deb tar zxf ${WORKDIR}/control.tar.gz tar zxf ${WORKDIR}/data.tar.gz # Unpack the MLT source package tar zxf ${DISTDIR}/mlt-0.4.4.tar.gz } src_compile() { ebegin "Building MLT Python bindings" # Export the Python environtment or we get lovely Python.h errors export PYTHON_INCLUDE=`python -c "import sys;print \"%s/include/python%d.%d\"%(sys.prefix,sys.version_info[0],sys.version_info[1])"` # First we need to symlink to mlt.i ln -sf ${WORKDIR}/mlt-0.4.4/src/swig/mlt.i \ ${WORKDIR}/mlt-0.4.4/src/swig/python/mlt.i >/dev/null 2>&1 \ || die "Symlinking of the mlt.i file failed!" # Now we invoke swig swig -c++ -I${WORKDIR}/mlt-0.4.4/src/mlt++ \ -I${WORKDIR}/mlt-0.4.4/src -python \ ${WORKDIR}/mlt-0.4.4/src/swig/mlt.i >/dev/null 2>&1 \ || die "Failed to invoke swig!" # Compile the wrapper g++ -fPIC -D_GNU_SOURCE -c -rdynamic -pthread \ -I${WORKDIR}/mlt-0.4.4/src -I$PYTHON_INCLUDE \ ${WORKDIR}/mlt-0.4.4/src/swig/mlt_wrap.cxx >/dev/null 2>&1 \ || die "Failed compiling the wrapper!" # Create the module gcc -shared ${WORKDIR}/mlt_wrap.o \ -L${WORKDIR}/mlt-0.4.4/src/mlt++ -lmlt++ \ -o ${WORKDIR}/mlt-0.4.4/src/swig/python/_mlt.so >/dev/null 2>&1 \ || die "Bindings module compile failed!" einfo "Bindings installed successfully" } src_install() { # Install the main executable and melt exeinto /usr/local/bin doexe ${WORKDIR}/usr/local/bin/openshot # Install the desktop link dodir /usr/share/applications insinto /usr/share/applications doins ${WORKDIR}/usr/share/applications/openshot.desktop # Copy over the rest of OpenShot's files dodir /usr/local/share/openshot/main insinto /usr/local/share/openshot/main doins -r ${WORKDIR}/usr/local/share/openshot/main/* # Install our MLT Python bindings python_version dodir /usr/$(get_libdir)/python${PYVER}/site-packages insinto /usr/$(get_libdir)/python${PYVER}/site-packages doins ${WORKDIR}/mlt_wrap.o doins ${WORKDIR}/mlt-0.4.4/src/swig/mlt.py exeinto /usr/$(get_libdir)/python${PYVER}/site-packages doexe ${WORKDIR}/mlt-0.4.4/src/swig/python/_mlt.so # Time to create symlinks to our portage-managed MLT install local MLTLIB=/usr/lib local MLTSYMLIB=/usr/local/lib dosym /usr/lib/mlt /usr/local/lib/mlt dosym /usr/bin/melt /usr/local/bin/melt dosym /usr/share/mlt /usr/local/share/mlt dosym /usr/include/mlt /usr/local/share/include/mlt dosym /usr/include/mlt++ /usr/local/share/include/mlt++ dosym /usr/lib/pkgconfig/mlt++.pc /usr/local/lib/pkgconfig/mlt++.pc dosym /usr/lib/pkgconfig/mlt-framework.pc /usr/local/lib/pkgconfig/mlt-framework.pc dosym ${MLTLIB}/libmlt++.so ${MLTSYMLIB}/libmlt++.so dosym ${MLTLIB}/libmlt++.so.0.4.4 ${MLTSYMLIB}/libmlt++.so.0.4.4 dosym ${MLTLIB}/libmlt++.so.2 ${MLTSYMLIB}/libmlt++.so.2 dosym ${MLTLIB}/libmlt.so ${MLTSYMLIB}/libmlt.so dosym ${MLTLIB}/libmlt.so.0.4.4 ${MLTSYMLIB}/libmlt.so.0.4.4 dosym ${MLTLIB}/libmlt.so.1 ${MLTSYMLIB}/libmlt.so.1 } pkg_postinst() { # Recreate permissions for executables # Now this is really ugly... but sadly there's no way to avoid it yet local INSTDIR=/usr/local/share/openshot/main # Fix file permissions errori(s) # See http://bugs.gentoo.org/283673#c7 for info chmod 0777 ${INSTDIR}/westley.xml chmod +x ${INSTDIR}/install/openshot chmod +x ${INSTDIR}/titles/* chmod +x ${INSTDIR}/windows/About.py chmod +x ${INSTDIR}/windows/MainGTK.py chmod +x ${INSTDIR}/windows/NewProject.py chmod +x ${INSTDIR}/windows/OpenProject.py chmod +x ${INSTDIR}/windows/Titles.py chmod +x ${INSTDIR}/windows/fontselector.py chmod +x ${INSTDIR}/windows/glade/fontselector.glade chmod +x ${INSTDIR}/windows/glade/titles.glade # Refresh shared libraries ldconfig elog elog "The import and export features of this program rely" elog "heavily on its dependencies' USE flags such as" elog "media-libs/mlt and media-video/ffmpeg. If you find you" elog "can't export or import a certain media format, consider" elog "reviewing and modifying these USE flags accordingly." elog elog elog " Please report any bugs to http://bugs.gentoo.org/283673" elog } pkg_postrm() { # Clean-up our now un-needed MLT python bindings python_mod_cleanup }