Index: multimedia/makemkv/Makefile =================================================================== --- multimedia/makemkv/Makefile (nonexistent) +++ multimedia/makemkv/Makefile (working copy) @@ -0,0 +1,141 @@ +# Created by: Felix Palmen +# $FreeBSD$ + +PORTNAME= makemkv +PORTVERSION= 1.14.4 +CATEGORIES= multimedia +MASTER_SITES= http://www.makemkv.com/download/:makemkv \ + http://www.makemkv.com/download/old/:makemkv \ + SF/opencore-amr/fdk-aac/:fdkaac \ + https://ffmpeg.org/releases/:ffmpeg \ + https://www.openssl.org/source/old/${OPENSSLVERSION}/:openssl +DISTFILES= makemkv-oss-${PORTVERSION}.tar.gz:makemkv \ + makemkv-bin-${PORTVERSION}.tar.gz:makemkv \ + fdk-aac-${FDKAACVERSION}.tar.gz:fdkaac \ + ffmpeg-${FFMPEGVERSION}.tar.bz2:ffmpeg \ + openssl-${OPENSSLFULLVER}.tar.gz:openssl +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= felix@palmen-it.de +COMMENT= Video converter reading from DVD and Bluray + +LICENSE= MAKEMKV FDK LGPL21+ OpenSSL +LICENSE_COMB= multi +LICENSE_NAME_MAKEMKV= The MakeMKV EULA +LICENSE_NAME_FDK= The FDK AAC License +LICENSE_FILE_MAKEMKV= ${WRKDIR}/makemkv-bin-${PORTVERSION}/src/eula_en_linux.txt +LICENSE_FILE_FDK= ${WRKDIR}/fdk-aac-${FDKAACVERSION}/NOTICE +LICENSE_PERMS_MAKEMKV= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell \ + no-auto-accept +LICENSE_PERMS_FDK= dist-mirror no-dist-sell pkg-mirror no-pkg-sell \ + auto-accept +LICENSE_DISTFILES_FDK= fdk-aac-${FDKAACVERSION}.tar.gz +LICENSE_DISTFILES_LGPL21+ = ffmpeg-${FFMPEGVERSION}.tar.bz2 +LICENSE_DISTFILES_OpenSSL= openssl-${OPENSSLFULLVER}.tar.gz +LICENSE_DISTFILES_MAKEMKV= makemkv-bin-${PORTVERSION}.tar.gz \ + makemkv-oss-${PORTVERSION}.tar.gz + +ONLY_FOR_ARCHS= amd64 i386 +USES= gmake linux pkgconfig perl5 +USE_LINUX= base expat expat:build openssl openssl:build devtools:build +USE_PERL5= build +BUILD_DEPENDS= nasm>0:devel/nasm \ + ${LOCALBASE}/include/expat.h:textproc/expat2 \ + patchelf>0:sysutils/patchelf + +RESTRICTED= yes +RESTRICTED_FILES= makemkv-bin-${PORTVERSION}.tar.gz + +WRKSRC= ${WRKDIR}/makemkv-oss-${PORTVERSION} + +FDKAACVERSION= 2.0.0 +FFMPEGVERSION= 4.1.3 +OPENSSLVERSION= ${"${linux_ARGS:Mc7}" != "":?1.0.2:1.0.1} +OPENSSLPATCHLEVEL= ${"${linux_ARGS:Mc7}" != "":?k:e} +OPENSSLFULLVER= ${OPENSSLVERSION}${OPENSSLPATCHLEVEL} + +LINUXTRIPLET= ${LINUX_ARCH}-redhat-linux +LINUXLIBDIR= ${LINUXBASE}/${"${LINUX_ARCH:Mx86_64}" != "":?lib64:lib} +OPENSSLTARGET= ${"${LINUX_ARCH:Mx86_64}" != "":?linux-x86_64:linux-elf} + +PATCHELF_CMD= ${LOCALBASE}/bin/patchelf +OPTPREFIX= /opt/makemkv + +CFLAGS+= -DFORCE_OPENSSL_NO_EC \ + -I${WRKDIR}/openssl-${OPENSSLFULLVER}/include +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${WRKDIR}/staticlibs/lib +HAS_CONFIGURE= yes +CONFIGURE_ARGS= --prefix=${OPTPREFIX} --disable-gui --host=${LINUXTRIPLET} +CONFIGURE_ENV= CC=${LINUXTRIPLET}-gcc CXX=${LINUXTRIPLET}-g++ \ + PATH=${WRKDIR}/staticlibs/bin:${PATH} \ + PKG_CONFIG_PATH=${WRKDIR}/staticlibs/lib/pkgconfig +MAKE_ENV= PATH=${WRKDIR}/staticlibs/bin:${PATH} + +post-patch: + @${REINPLACE_CMD} -e 's:INSTALL) -D:INSTALL):' \ + ${WRKSRC}/Makefile.in + @${REINPLACE_CMD} -e 's:/bin/bash:/bin/sh:' \ + -e 's:x86_64:amd64:' \ + -e 's:-t \([^ ]*\) \([^ ]*\):\2 \1:' \ + ${WRKDIR}/makemkv-bin-${PORTVERSION}/Makefile + +pre-configure: + ${MKDIR} ${WRKDIR}/staticlibs/bin + cd ${WRKDIR}/staticlibs/bin; \ + for t in gcc link ld objdump ar nm strip ranlib g++; do \ + ${LN} -s ${LINUXBASE}/bin/$$t ${LINUXTRIPLET}-$$t; \ + done + ${MKDIR} ${WRKDIR}/staticlibs/lib + cd ${WRKDIR}/staticlibs/lib; \ + ${LN} -s ${LINUXLIBDIR}/libz.so.1 libz.so; \ + ${LN} -s ${LINUXLIBDIR}/libcrypto.so.10 libcrypto.so; \ + ${LN} -s ${LINUXLIBDIR}/libexpat.so.1 libexpat.so + cd ${WRKDIR}/fdk-aac-${FDKAACVERSION}; \ + PATH=${WRKDIR}/staticlibs/bin:$$PATH \ + LDFLAGS=-L${WRKDIR}/staticlibs/lib \ + ./configure --prefix=${WRKDIR}/staticlibs \ + --disable-shared --enable-static --with-pic \ + --host=${LINUXTRIPLET}; \ + PATH=${WRKDIR}/staticlibs/bin:$$PATH \ + ${MAKE_CMD} install + cd ${WRKDIR}/ffmpeg-${FFMPEGVERSION}; \ + PATH=${WRKDIR}/staticlibs/bin:$$PATH \ + PKG_CONFIG_PATH=${WRKDIR}/staticlibs/lib/pkgconfig \ + CPPFLAGS="-Dcaddr_t=void\* -D__daddr_t_defined" \ + LDFLAGS=-L${WRKDIR}/staticlibs/lib \ + ./configure --prefix=${WRKDIR}/staticlibs \ + --disable-shared --enable-static --enable-pic \ + --enable-libfdk-aac --pkg-config=pkg-config \ + --cross-prefix=${LINUXTRIPLET}- --arch=${LINUX_ARCH} \ + --target-os=linux --host-cc=${CC}; \ + PATH=${WRKDIR}/staticlibs/bin:$$PATH \ + ${MAKE_CMD} ARCH=x86 && \ + PATH=${WRKDIR}/staticlibs/bin:$$PATH \ + ${MAKE_CMD} install + cd ${WRKDIR}/openssl-${OPENSSLFULLVER}; \ + ./Configure --openssldir= --prefix=/usr ${OPENSSLTARGET} + +pre-install: + ${MKDIR} ${STAGEDIR}${OPTPREFIX}/lib + ${MKDIR} ${STAGEDIR}${OPTPREFIX}/bin + ${MKDIR} ${STAGEDIR}${OPTPREFIX}/share + ${MKDIR} ${STAGEDIR}${PREFIX}/man/man1 + ${INSTALL_MAN} ${FILESDIR}/makemkvcon.1 \ + ${STAGEDIR}${PREFIX}/man/man1 + +post-stage: + cd ${WRKDIR}/makemkv-bin-${PORTVERSION}; \ + ${MKDIR} tmp; \ + ${ECHO_CMD} accepted > tmp/eula_accepted; \ + ${MAKE_CMD} DESTDIR=${STAGEDIR} PREFIX=${OPTPREFIX} install + ${PATCHELF_CMD} --set-rpath ${OPTPREFIX}/lib \ + ${STAGEDIR}${OPTPREFIX}/bin/makemkvcon + ${REINPLACE_CMD} -e 's:/sys/bus/scsi:/opt/makemkv/:' \ + ${STAGEDIR}${OPTPREFIX}/bin/makemkvcon + ${INSTALL_SCRIPT} ${SCRIPTDIR}/makemkvcon \ + ${STAGEDIR}${PREFIX}/bin + ${INSTALL_SCRIPT} ${SCRIPTDIR}/update-makemkv-drives \ + ${STAGEDIR}${PREFIX}/sbin + +.include Property changes on: multimedia/makemkv/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/distinfo =================================================================== --- multimedia/makemkv/distinfo (nonexistent) +++ multimedia/makemkv/distinfo (working copy) @@ -0,0 +1,13 @@ +TIMESTAMP = 1560153976 +SHA256 (makemkv/makemkv-oss-1.14.4.tar.gz) = 4061d95d088c1f924ac1b061a9a10f09eee9bfd9f638dcd37c8bf57602a63658 +SIZE (makemkv/makemkv-oss-1.14.4.tar.gz) = 4385464 +SHA256 (makemkv/makemkv-bin-1.14.4.tar.gz) = 63c86822f34283e10660ac1a06d6f868cd12a891742d25807809575e1bddb56e +SIZE (makemkv/makemkv-bin-1.14.4.tar.gz) = 9135402 +SHA256 (makemkv/fdk-aac-2.0.0.tar.gz) = f7d6e60f978ff1db952f7d5c3e96751816f5aef238ecf1d876972697b85fd96c +SIZE (makemkv/fdk-aac-2.0.0.tar.gz) = 2864593 +SHA256 (makemkv/ffmpeg-4.1.3.tar.bz2) = 29a679685bd7bc29158110f367edf67b31b451f2176f9d79d0f342b9e22d6a2a +SIZE (makemkv/ffmpeg-4.1.3.tar.bz2) = 10689073 +SHA256 (makemkv/openssl-1.0.1e.tar.gz) = f74f15e8c8ff11aa3d5bb5f276d202ec18d7246e95f961db76054199c69c1ae3 +SIZE (makemkv/openssl-1.0.1e.tar.gz) = 4459777 +SHA256 (makemkv/openssl-1.0.2k.tar.gz) = 6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0 +SIZE (makemkv/openssl-1.0.2k.tar.gz) = 5309236 Property changes on: multimedia/makemkv/distinfo ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/files/makemkvcon.1 =================================================================== --- multimedia/makemkv/files/makemkvcon.1 (nonexistent) +++ multimedia/makemkv/files/makemkvcon.1 (working copy) @@ -0,0 +1,94 @@ +.Dd May 20, 2019 +.Dt MAKEMKVCON 1 +.Os +.Sh NAME +.Nm makemkvcon +.Nd read video from DVD or Bluray disc and convert to mkv format +.Sh SYNOPSIS +.Nm +.Op Fl -minlength= Ns Ar seconds +.Cm info +.Ar source_spec +.Nm +.Op Fl -minlength= Ns Ar seconds +.Cm mkv +.Ar source_spec +.Ar title_spec +.Pa target_directory +.Sh DESCRIPTION +The +.Nm +utility shows information about a video disc in an optical drive, the +.Cm mkv +subcommand also converts selected titles from the disc to +.Sy .mkv +files in a given location. +.sp +The arguments are as follows: +.Bl -tag -width Ds +.It Fl -minlength= Ns Ar seconds +Only consider video titles with a minimal length of +.Ar seconds . No If you use the +.Cm mkv +subcommand after the +.Cm info +subcommand, make sure to pass the same value for +.Ar seconds , +as filtering out titles with a smaller length happens before +numbering the titles. +.It Ar source_spec +Read video disc from the given source. +Use +.Dq disc:0 +here to have +.Nm +read from the first video disc it can find. +.It Ar title_spec +Determines which titles to read. +This can be either a whole number from +.Sy 0 +to +.Sy n-1 +for a disc with +.Sy n +titles to read exactly one title, or the string +.Dq all +to read all titles found. +.It Ar target_directory +The path where to store the converted +.Sy .mkv +files. +.El +.Sh FILES +.Bl -tag -width Ds +.It Pa ~/.MakeMKV/settings.conf +You may put a license key in this file in the following format: +.Dl app_Key = Qq XXXXXXXXXXXXXXXX... +You can either buy a license or use the key, that is freely available +as long as MakeMKV is in beta from +.Lk https://www.makemkv.com/forum/ . +.El +.Sh EXAMPLES +.Bd -literal -offset indent +% makemkvcon mkv disc:0 0 . +.Ed +.sp +This command reads the first title from the first disc it can find and stores +a converted +.Sy .mkv +file in the current directory. +.Sh SEE ALSO +This manpage only describes the most commonly used options. +A more complete documentation is available online at +.Lk https://www.makemkv.com/developers/usage.txt +.sp +For some examples what you can put in your configuration file, see +.Lk http://wiki.indie-it.com/wiki/MakeMKV +.Sh BUGS +On +.Fx Ns , +.Nm +crashes with a signal 11 (segmentation fault) after finishing its job. +Be aware this might leave a +.Sy .core +file on your file system. Property changes on: multimedia/makemkv/files/makemkvcon.1 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/pkg-descr =================================================================== --- multimedia/makemkv/pkg-descr (nonexistent) +++ multimedia/makemkv/pkg-descr (working copy) @@ -0,0 +1,24 @@ +Video converter reading from DVD and Bluray + +MakeMKV is your one-click solution to convert video that you own into free and +patents-unencumbered format that can be played everywhere. MakeMKV is a format +converter, otherwise called "transcoder". It converts the video clips from +proprietary (and usually encrypted) disc into a set of MKV files, preserving +most information but not changing it in any way. The MKV format can store +multiple video/audio tracks with all meta-information and preserve chapters. +There are many players that can play MKV files nearly on all platforms, and +there are tools to convert MKV files to many formats, including DVD and Blu-ray +discs. + +* Reads DVD and Blu-ray discs +* Reads Blu-ray discs protected with latest versions of AACS and BD+ +* Preserves all video and audio tracks, including HD audio +* Preserves chapters information +* Preserves all meta-information (track language, audio type) +* Fast conversion - converts as fast as your drive can read data. +* No additional software is required for conversion or decryption. +* Functionality to open DVD discs is free and will always stay free. +* All features (including Blu-ray decryption and processing) are free during + BETA. + +WWW: https://www.makemkv.com Property changes on: multimedia/makemkv/pkg-descr ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/pkg-message =================================================================== --- multimedia/makemkv/pkg-message (nonexistent) +++ multimedia/makemkv/pkg-message (working copy) @@ -0,0 +1,14 @@ +This port doesn't include the MakeMKV GUI as it doesn't work on FreeBSD. + +To enable makemkvcon to find a drive on FreeBSD, a part of Linux' sysfs must +be faked. The included script `update-makemkv-drives' creates these faked +sysfs entries and is run automatically after installation. If your hardware +configuration changes, make sure to re-run `update-makemkv-drives'. + +If makemkvcon refuses to work as root, check the permissions of +/compat/linux/tmp -- it should be world-writable and sticky. To set these +permissions, use the command + + chmod 1777 /compat/linux/tmp + + Property changes on: multimedia/makemkv/pkg-message ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/pkg-plist =================================================================== --- multimedia/makemkv/pkg-plist (nonexistent) +++ multimedia/makemkv/pkg-plist (working copy) @@ -0,0 +1,18 @@ +@dir /opt +@dir /opt/makemkv +@dir /opt/makemkv/bin +@dir /opt/makemkv/lib +@dir /opt/makemkv/share +@dir /opt/makemkv/share/MakeMKV +/opt/makemkv/bin/makemkvcon +/opt/makemkv/lib/libdriveio.so.0 +/opt/makemkv/lib/libmakemkv.so.1 +/opt/makemkv/lib/libmmbd.so.0 +/opt/makemkv/share/MakeMKV/appdata.tar +/opt/makemkv/share/MakeMKV/blues.jar +/opt/makemkv/share/MakeMKV/blues.policy +bin/makemkvcon +man/man1/makemkvcon.1.gz +sbin/update-makemkv-drives +@postexec update-makemkv-drives +@preunexec rm -fr /opt/makemkv/devices; rm -fr /opt/makemkv/drivers Property changes on: multimedia/makemkv/pkg-plist ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/scripts/makemkvcon =================================================================== --- multimedia/makemkv/scripts/makemkvcon (nonexistent) +++ multimedia/makemkv/scripts/makemkvcon (working copy) @@ -0,0 +1,3 @@ +#!/bin/sh +exec /opt/makemkv/bin/makemkvcon "$@" + Property changes on: multimedia/makemkv/scripts/makemkvcon ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: multimedia/makemkv/scripts/update-makemkv-drives =================================================================== --- multimedia/makemkv/scripts/update-makemkv-drives (nonexistent) +++ multimedia/makemkv/scripts/update-makemkv-drives (working copy) @@ -0,0 +1,58 @@ +#!/bin/sh + +trap 'rm -fr $TMPFIFODIR' EXIT +TMPFIFODIR=$(mktemp -d) +mkfifo $TMPFIFODIR/campipe + +SGDEVS= + +rm -fr /opt/makemkv/devices +rm -fr /opt/makemkv/drivers + +camcontrol devlist | grep -E '[(,]cd[0-9]+[,)]' > $TMPFIFODIR/campipe & +while read line +do + SCBUS=`echo $line | grep -Eo 'scbus[0-9]+' | sed -e 's:scbus::'` + TARGET=`echo $line | grep -Eo 'target [0-9]+' | sed -e 's:target ::'` + LUN=`echo $line | grep -Eo 'lun [0-9]+' | sed -e 's:lun ::'` + SGDEV=`echo $line | grep -Eo '(.*)' | grep -Eo 'sg[0-9]+'` + if [ -n "$SCBUS" -a -n "$TARGET" -a -n "$LUN" ]; then + if [ -z "$SGDEV" ]; then + cat < +for building a custom kernel. + +When finished, re-run this script (update-makemkv-drives). +EOF + exit 1 + fi + SGDEVS="$SGDEVS /dev/$SGDEV" + LOC=$SCBUS:0:$TARGET:$LUN + mkdir -p /opt/makemkv/devices/$LOC/scsi_generic/$SGDEV + mkdir -p /opt/makemkv/drivers/sr + ln -s ../../devices/$LOC /opt/makemkv/drivers/sr/$LOC + echo 5 >/opt/makemkv/devices/$LOC/type + fi +done < $TMPFIFODIR/campipe + +if [ -z "$SGDEVS" ]; then + cat <