Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Apr 2020 15:09:56 +0000 (UTC)
From:      Rodrigo Osorio <rodrigo@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r530792 - in head: . multimedia multimedia/makemkv multimedia/makemkv/files
Message-ID:  <202004051509.035F9u31027019@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rodrigo
Date: Sun Apr  5 15:09:56 2020
New Revision: 530792
URL: https://svnweb.freebsd.org/changeset/ports/530792

Log:
  New port: multimedia/makemkv a CLI video converter from DVD
  
  This port is CLI only and leaves out the MakeMKV GUI, because
  makemkvcon (closed source Linux binary) won't run in guiserver
  mode.
  
  Also, as described in the pkg-message, it requires a custom
  FreeBSD kernel with the Linux SCSI generic drivers and has to
  be build by the final user to comply with the license terms.
  
  Work is ongoing with the author to have a FreeBSD native version
  of this port in the future.
  
  PR:		238004
  Submitted by:	Felix Palmen <felix@palmen-it.de>

Added:
  head/multimedia/makemkv/
  head/multimedia/makemkv/Makefile   (contents, props changed)
  head/multimedia/makemkv/distinfo   (contents, props changed)
  head/multimedia/makemkv/files/
  head/multimedia/makemkv/files/makemkvcon.1   (contents, props changed)
  head/multimedia/makemkv/files/update-makemkv-drives.in   (contents, props changed)
  head/multimedia/makemkv/pkg-descr   (contents, props changed)
  head/multimedia/makemkv/pkg-message   (contents, props changed)
  head/multimedia/makemkv/pkg-plist   (contents, props changed)
Modified:
  head/LEGAL
  head/multimedia/Makefile

Modified: head/LEGAL
==============================================================================
--- head/LEGAL	Sun Apr  5 14:46:11 2020	(r530791)
+++ head/LEGAL	Sun Apr  5 15:09:56 2020	(r530792)
@@ -25,6 +25,7 @@
 #
 # Dist			Port			Why
 # ------------------------------------------------------------------------------
+makemkv-*       multimedia/makemkv      MAKEMKV licenses don't allow 't allow distributing the package as it contains a modified version of the makemkvcon binary
 *-for-1.4.tgz	net/dgd-lpmud			May not be used for monetary gain
 *_MegaCLI.zip		sysutils/megacli	Source recipient must acknowledge license. Reproduction or redistribution prohibited. See http://www.lsi.com/lookup/License.aspx
 26410-800.zip		audio/libaacplus	unclear legal status, probably need licenses from 3GPP, Via Licensing and Coding Technologies

Modified: head/multimedia/Makefile
==============================================================================
--- head/multimedia/Makefile	Sun Apr  5 14:46:11 2020	(r530791)
+++ head/multimedia/Makefile	Sun Apr  5 15:09:56 2020	(r530792)
@@ -244,6 +244,7 @@
     SUBDIR += lxdvdrip
     SUBDIR += m2tstoavi
     SUBDIR += m2vrequantiser
+    SUBDIR += makemkv
     SUBDIR += mediainfo
     SUBDIR += mencoder
     SUBDIR += mimms

Added: head/multimedia/makemkv/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/Makefile	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,265 @@
+# Created by: Felix Palmen <felix@palmen-it.de>
+# $FreeBSD$
+
+PORTNAME=	makemkv
+PORTVERSION=	1.15.0
+CATEGORIES=	multimedia
+MASTER_SITES=	http://www.makemkv.com/download/:makemkv \
+		http://www.makemkv.com/download/old/:makemkv \
+		KERNEL_ORG/linux/kernel/v2.6:linux \
+		GNU/binutils:binutils \
+		GNU/glibc:glibc \
+		GNU/gmp:gmp \
+		GNU/mpfr:mpfr \
+		GNU/mpc:mpc \
+		GCC/releases/gcc-${GCCVERSION}:gcc \
+		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 \
+		linux-${LINUXVERSION}.tar.xz:linux \
+		binutils-${BINUTILSVERSION}.tar.bz2:binutils \
+		glibc-${GLIBCVERSION}.tar.xz:glibc \
+		gmp-${GMPVERSION}.tar.xz:gmp \
+		mpfr-${MPFRVERSION}.tar.xz:mpfr \
+		mpc-${MPCVERSION}.tar.gz:mpc \
+		gcc-${GCCVERSION}.tar.gz:gcc \
+		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 GPLv2 GPLv3 LGPL21+ LGPL3 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_GPLv2=	binutils-${BINUTILSVERSION}.tar.bz2 \
+				glibc-${GLIBCVERSION}.tar.xz \
+				linux-${LINUXVERSION}.tar.xz \
+				gcc-${GCCVERSION}.tar.gz
+LICENSE_DISTFILES_LGPL21+ =	ffmpeg-${FFMPEGVERSION}.tar.bz2
+LICENSE_DISTFILES_GPLv3=	gmp-${GMPVERSION}.tar.xz \
+				mpfr-${MPFRVERSION}.tar.xz
+LICENSE_DISTFILES_LGPL3=	mpc-${MPCVERSION}.tar.gz
+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
+USE_LDCONFIG=	yes
+USES=	gmake linux pkgconfig perl5
+USE_LINUX=	base expat expat:build openssl openssl:build
+USE_PERL5=	build
+USE_GCC=	yes
+BUILD_DEPENDS=	nasm>0:devel/nasm \
+		${LOCALBASE}/include/expat.h:textproc/expat2 \
+		patchelf>0:sysutils/patchelf \
+		gawk>0:lang/gawk \
+		gsed>0:textproc/gsed
+
+RESTRICTED=	yes
+RESTRICTED_FILES=	makemkv-bin-${PORTVERSION}.tar.gz
+
+WRKSRC=		${WRKDIR}/makemkv-oss-${PORTVERSION}
+
+SUB_FILES=	update-makemkv-drives
+SUB_LIST=	LINUXBASE=${LINUXBASE}
+PLIST_SUB=	LINUXBASE=${LINUXBASE}
+
+LINUXVERSION=	2.6.32.27
+BINUTILSVERSION=	2.27
+GLIBCVERSION=	2.17
+GMPVERSION=	5.1.3
+MPFRVERSION=	3.1.2
+MPCVERSION=	1.0.3
+GCCVERSION=	5.5.0
+FDKAACVERSION=	2.0.1
+FFMPEGVERSION=	4.2.2
+OPENSSLVERSION=	1.0.2
+OPENSSLPATCHLEVEL=	k
+OPENSSLFULLVER=	${OPENSSLVERSION}${OPENSSLPATCHLEVEL}
+
+LINUXARCH=	${ARCH:S/amd64/x86_64/}
+LINUXTRIPLET=	${LINUXARCH}-unknown-linux-gnu
+LINUXLIBDIR=	${LINUXBASE}/${"${LINUXARCH:Mx86_64}" != "":?lib64:lib}
+GNUCROSSDIR=	${WRKDIR}/gnuroot/${LINUXTRIPLET}
+GNUCROSSLIBDIR=	${GNUCROSSDIR}/${"${LINUXARCH:Mx86_64}" != "":?lib64:lib}
+OPENSSLTARGET=	${"${LINUXARCH:Mx86_64}" != "":?linux-x86_64:linux-elf}
+
+PATCHELF_CMD?=	${LOCALBASE}/bin/patchelf
+
+CFLAGS+=	-DFORCE_OPENSSL_NO_EC -I${WRKDIR}/gnuroot/include \
+		-I${WRKDIR}/openssl-${OPENSSLFULLVER}/include
+SSP_CFLAGS=
+LDFLAGS+=	-L${WRKDIR}/gnuroot/lib -Wl,-rpath-link=${WRKDIR}/gnuroot/lib
+HAS_CONFIGURE=	yes
+CONFIGURE_ARGS=	--prefix=${PREFIX} --disable-gui --host=${LINUXTRIPLET} \
+		--libdir=${PREFIX}/lib/makemkv
+CONFIGURE_ENV=	CC=${LINUXTRIPLET}-gcc CXX=${LINUXTRIPLET}-g++ \
+		CFLAGS="${CFLAGS:N-Wl,-rpath=*}" \
+		CXXFLAGS="${CXXFLAGS:N-Wl,-rpath=*}" \
+		LDFLAGS="${LDFLAGS:N-Wl,-rpath=*}" \
+		PATH=${WRKDIR}/gnuroot/bin:${PATH} \
+		PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig
+MAKE_ENV=	PATH=${WRKDIR}/gnuroot/bin:${PATH}
+STRIP_CMD=	${WRKDIR}/gnuroot/bin/${LINUXTRIPLET}-strip
+
+post-extract:
+		@${MV} -f ${WRKDIR}/gmp-${GMPVERSION} \
+			${WRKDIR}/gcc-${GCCVERSION}/gmp
+		@${MV} -f ${WRKDIR}/mpfr-${MPFRVERSION} \
+			${WRKDIR}/gcc-${GCCVERSION}/mpfr
+		@${MV} -f ${WRKDIR}/mpc-${MPCVERSION} \
+			${WRKDIR}/gcc-${GCCVERSION}/mpc
+		@${MKDIR} ${WRKDIR}/gnuroot/lib
+		@cd ${WRKDIR}/gnuroot/lib; \
+			${LN} -s ${LINUXLIBDIR}/libz.so.1; \
+			${LN} -s libz.so.1 libz.so; \
+			${LN} -s ${LINUXLIBDIR}/libcrypto.so.10; \
+			${LN} -s libcrypto.so.10 libcrypto.so; \
+			${LN} -s ${LINUXLIBDIR}/libexpat.so.1; \
+			${LN} -s libexpat.so.1 libexpat.so
+		@${MKDIR} ${WRKDIR}/gnuroot/include
+		@cd ${WRKDIR}/gnuroot/include; \
+			${LN} -s /usr/include/zlib.h; \
+			${LN} -s /usr/include/zconf.h; \
+			${LN} -s ${LOCALBASE}/include/expat.h; \
+			${LN} -s ${LOCALBASE}/include/expat_config.h; \
+			${LN} -s ${LOCALBASE}/include/expat_external.h
+		@${MKDIR} ${WRKDIR}/binutils-build
+		@${MKDIR} ${WRKDIR}/gcc-build
+		@${MKDIR} ${WRKDIR}/glibc-build
+
+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
+		@${REINPLACE_CMD} -e 's:3\.79:4.*:' \
+			${WRKDIR}/glibc-${GLIBCVERSION}/configure
+		@${REINPLACE_CMD} -e 's:#ifndef __u_char_defined:#if 0:' \
+			-e 's:#ifndef __daddr_t_defined:#if 0:' \
+			${WRKDIR}/glibc-${GLIBCVERSION}/sunrpc/rpc/types.h
+		@${REINPLACE_CMD} -e 's:^\([[:space:]]*\)sed :\1gsed :' \
+			${WRKDIR}/glibc-${GLIBCVERSION}/Makerules
+
+pre-configure:
+		# Linux headers
+		cd ${WRKDIR}/linux-${LINUXVERSION}; \
+		${MAKE_CMD} V=1 HOSTCC=${CC} ARCH=${LINUXARCH} \
+			INSTALL_HDR_PATH=${GNUCROSSDIR} headers_install; \
+		# Binutils
+		cd ${WRKDIR}/binutils-build; \
+		CC=${CC} CXX=${CXX} ../binutils-${BINUTILSVERSION}/configure \
+			--target=${LINUXTRIPLET} \
+			--prefix=${WRKDIR}/gnuroot \
+			--disable-multilib --disable-nls; \
+		${MAKE_CMD} ${_MAKE_JOBS} && \
+		${MAKE_CMD} install
+		# GCC compiler
+		cd ${WRKDIR}/gcc-build; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		CC=${CC} CXX=${CXX} ../gcc-${GCCVERSION}/configure \
+			--target=${LINUXTRIPLET} \
+			--prefix=${WRKDIR}/gnuroot \
+			--enable-languages=c,c++ --disable-multilib; \
+		${MAKE_CMD} ${_MAKE_JOBS} all-gcc && \
+		${MAKE_CMD} install-gcc
+		# Glibc headers / startup code
+		cd ${WRKDIR}/glibc-build; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		export nargs=0; \
+		BUILD_CC=${CC} CC=${LINUXTRIPLET}-gcc \
+		../glibc-${GLIBCVERSION}/configure \
+			--host=${LINUXTRIPLET} \
+			--prefix=${GNUCROSSDIR} \
+			--with-binutils=${WRKDIR}/gnuroot/bin \
+			--with-headers=${GNUCROSSDIR}/include \
+			--disable-profile --disable-multilib \
+			--enable-kernel=2.6.32 libc_cv_forced_unwind=yes \
+			libc_cv_ssp=no; \
+		${MAKE_CMD} install-bootstrap-headers=yes install-headers; \
+		${MAKE_CMD} ${_MAKE_JOBS} csu/subdir_lib; \
+		${INSTALL_DATA} csu/crt1.o csu/crti.o csu/crtn.o \
+			${GNUCROSSDIR}/lib; \
+		${LINUXTRIPLET}-gcc -nostdlib -nostartfiles -shared \
+			-x c /dev/null -o ${GNUCROSSDIR}/lib/libc.so; \
+		${TOUCH} ${GNUCROSSDIR}/include/gnu/stubs.h
+		# GCC support libs
+		cd ${WRKDIR}/gcc-build; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		${MAKE_CMD} ${_MAKE_JOBS} all-target-libgcc; \
+		${MAKE_CMD} install-target-libgcc
+		# Glibc library
+		cd ${WRKDIR}/glibc-build; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		${MAKE_CMD} ${_MAKE_JOBS}; \
+		${MAKE_CMD} install
+		# GCC libstdc++
+		${ECHO_CMD} '#/bin/sh\ntrue' \
+			>${WRKDIR}/gnuroot/bin/ldconfig
+		${CHMOD} +x ${WRKDIR}/gnuroot/bin/ldconfig
+		cd ${WRKDIR}/gcc-build; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		${MAKE_CMD} ${_MAKE_JOBS}; \
+		${MAKE_CMD} install
+		# FDK AAC
+		cd ${WRKDIR}/fdk-aac-${FDKAACVERSION}; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		export CXXFLAGS="${CFLAGS}"; \
+		LDFLAGS=-L${WRKDIR}/gnuroot/lib \
+		./configure --prefix=${WRKDIR}/gnuroot \
+			--disable-shared --enable-static --with-pic \
+			--host=${LINUXTRIPLET} --disable-silent-rules; \
+		${MAKE_CMD} ${_MAKE_JOBS} install
+		# ffmpeg
+		cd ${WRKDIR}/ffmpeg-${FFMPEGVERSION}; \
+		export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \
+		export CFLAGS="${CFLAGS}"; \
+		PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig \
+		CPPFLAGS="-Dcaddr_t=void\* -D__daddr_t_defined" \
+		LDFLAGS=-L${WRKDIR}/gnuroot/lib \
+		./configure --prefix=${WRKDIR}/gnuroot \
+			--disable-shared --enable-static --enable-pic \
+			--enable-libfdk-aac --pkg-config=pkg-config \
+			--cross-prefix=${LINUXTRIPLET}- --arch=${LINUXARCH} \
+			--target-os=linux --host-cc=${CC}; \
+		CFLAGS="${CFLAGS}" \
+		${MAKE_CMD} ${_MAKE_JOBS} V=1 ARCH=x86 all install
+		# OpenSSL headers
+		cd ${WRKDIR}/openssl-${OPENSSLFULLVER}; \
+		./Configure --openssldir= --prefix=/usr ${OPENSSLTARGET}
+
+pre-install:
+		${MKDIR} ${STAGEDIR}${PREFIX}/lib/makemkv
+
+post-install:
+		${INSTALL_MAN} ${FILESDIR}/makemkvcon.1 \
+			${STAGEDIR}${PREFIX}/man/man1
+		${INSTALL_LIB} ${GNUCROSSLIBDIR}/libstdc++.so.6 \
+			${STAGEDIR}${PREFIX}/lib/makemkv
+		cd ${WRKDIR}/makemkv-bin-${PORTVERSION}; \
+		${MKDIR} tmp; \
+		${ECHO_CMD} accepted > tmp/eula_accepted; \
+		${MAKE_CMD} DESTDIR=${STAGEDIR} PREFIX=${PREFIX} install
+		${PATCHELF_CMD} --set-rpath ${PREFIX}/lib/makemkv \
+			${STAGEDIR}${PREFIX}/bin/makemkvcon
+		${REINPLACE_CMD} -e 's:/sys/bus/scsi:/etc/makemkv/:' \
+			${STAGEDIR}${PREFIX}/bin/makemkvcon
+		${INSTALL_SCRIPT} ${WRKDIR}/update-makemkv-drives \
+			${STAGEDIR}${PREFIX}/sbin
+
+.include <bsd.port.mk>

Added: head/multimedia/makemkv/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/distinfo	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,25 @@
+TIMESTAMP = 1585042908
+SHA256 (makemkv/makemkv-oss-1.15.0.tar.gz) = a9213fa7cbf2bf2f03d90cd350ad53aa82394bc3991c440e9e369e4169f3ed06
+SIZE (makemkv/makemkv-oss-1.15.0.tar.gz) = 6383576
+SHA256 (makemkv/makemkv-bin-1.15.0.tar.gz) = 442d67d5368390263c30fca2d980ebfffb716be227b9f056b69961d2b11b26ff
+SIZE (makemkv/makemkv-bin-1.15.0.tar.gz) = 9516617
+SHA256 (makemkv/linux-2.6.32.27.tar.xz) = 96c20c370ed440db61624d93f34721a09a69b12bb81b1b03bb735041983fb1bd
+SIZE (makemkv/linux-2.6.32.27.tar.xz) = 52652044
+SHA256 (makemkv/binutils-2.27.tar.bz2) = 369737ce51587f92466041a97ab7d2358c6d9e1b6490b3940eb09fb0a9a6ac88
+SIZE (makemkv/binutils-2.27.tar.bz2) = 26099568
+SHA256 (makemkv/glibc-2.17.tar.xz) = 6914e337401e0e0ade23694e1b2c52a5f09e4eda3270c67e7c3ba93a89b5b23e
+SIZE (makemkv/glibc-2.17.tar.xz) = 10981956
+SHA256 (makemkv/gmp-5.1.3.tar.xz) = dee2eda37f4ff541f30019932db0c37f6f77a30ba3609234933b1818f9b07071
+SIZE (makemkv/gmp-5.1.3.tar.xz) = 1818812
+SHA256 (makemkv/mpfr-3.1.2.tar.xz) = 399d0f47ef6608cc01d29ed1b99c7faff36d9994c45f36f41ba250147100453b
+SIZE (makemkv/mpfr-3.1.2.tar.xz) = 1074388
+SHA256 (makemkv/mpc-1.0.3.tar.gz) = 617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3
+SIZE (makemkv/mpc-1.0.3.tar.gz) = 669925
+SHA256 (makemkv/gcc-5.5.0.tar.gz) = 3aabce75d6dd206876eced17504b28d47a724c2e430dbd2de176beb948708983
+SIZE (makemkv/gcc-5.5.0.tar.gz) = 123816630
+SHA256 (makemkv/fdk-aac-2.0.1.tar.gz) = 840133aa9412153894af03b27b03dde1188772442c316a4ce2a24ed70093f271
+SIZE (makemkv/fdk-aac-2.0.1.tar.gz) = 2865456
+SHA256 (makemkv/ffmpeg-4.2.2.tar.bz2) = b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c
+SIZE (makemkv/ffmpeg-4.2.2.tar.bz2) = 10953320
+SHA256 (makemkv/openssl-1.0.2k.tar.gz) = 6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0
+SIZE (makemkv/openssl-1.0.2k.tar.gz) = 5309236

Added: head/multimedia/makemkv/files/makemkvcon.1
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/files/makemkvcon.1	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,103 @@
+.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.
+.Sh KNOWN ISSUES
+To find optical drives,
+.Nm
+uses some entries from Linux' sysfs that aren't present on
+.Fx .
+A script `update-makemkv-drives` is included to fake these entries and is run
+automatically on installation.
+If your system's configuration changes, you must run this script as root
+manually, so new or changed drives can be found.

Added: head/multimedia/makemkv/files/update-makemkv-drives.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/files/update-makemkv-drives.in	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+trap 'rm -fr $TMPFIFODIR' EXIT
+TMPFIFODIR=$(mktemp -d)
+mkfifo $TMPFIFODIR/campipe
+
+SGDEVS=
+
+rm -fr %%LINUXBASE%%/etc/makemkv/devices
+rm -fr %%LINUXBASE%%/etc/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 <<EOF
+Optical drive without 'sg' device found! Make sure your kernel supports
+sg devices. To build a kernel with sg devices, you must add the following
+to your kernel configuration:
+
+device		sg
+
+Refer to
+<https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html>;
+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 %%LINUXBASE%%/etc/makemkv/devices/$LOC/scsi_generic/$SGDEV
+		mkdir -p %%LINUXBASE%%/etc/makemkv/drivers/sr
+		ln -s ../../devices/$LOC %%LINUXBASE%%/etc/makemkv/drivers/sr/$LOC
+		echo 5 >%%LINUXBASE%%/etc/makemkv/devices/$LOC/type
+	fi
+done < $TMPFIFODIR/campipe
+
+if [ -z "$SGDEVS" ]; then
+	cat <<EOF
+No usable optical drives found. Make sure your drive (/dev/cd*) is available.
+Check the output of "camcontrol devlist".
+
+When finished, re-run this script (update-makemkv-drives).
+EOF
+	exit 1
+fi
+
+echo devices linked: $SGDEVS.
+
+echo "When your configuration changes, re-run this script (update-makemkv-drives)."
+

Added: head/multimedia/makemkv/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/pkg-descr	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,45 @@
+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.
+
+Known issues on FreeBSD:
+
+* Only the commandline interface works, so there is no GUI in this port. The
+  port includes a small manpage to get you started using makemkvcon.
+* makemkvcon always crashes on exit (after completing its job), so be aware
+  this might leave core files on your system.
+* To find optical drives, makemkvcon uses some entries from Linux' sysfs that
+  aren't present on FreeBSD. A script `update-makemkv-drives` is included with
+  the port that fakes these entries. It is run automatically on installation,
+  but if the system's configuration changes, it must be run manually again by
+  root.
+
+Requirements:
+
+* A custom FreeBSD kernel with sg devices (Linux' "scsi generic" interface) is
+  required to use makemkvcon. To build such a kernel, add "device sg" to your
+  kernel configuration and follow the instructions at
+  https://www.freebsd.org/doc/handbook/kernelconfig-building.html
+* Make sure you have the "linux" kernel module loaded. On amd64, "linux64" is
+  also required.
+
+WWW: https://www.makemkv.com

Added: head/multimedia/makemkv/pkg-message
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/pkg-message	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,12 @@
+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

Added: head/multimedia/makemkv/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/makemkv/pkg-plist	Sun Apr  5 15:09:56 2020	(r530792)
@@ -0,0 +1,12 @@
+bin/makemkvcon
+lib/makemkv/libdriveio.so.0
+lib/makemkv/libmakemkv.so.1
+lib/makemkv/libmmbd.so.0
+lib/makemkv/libstdc++.so.6
+man/man1/makemkvcon.1.gz
+sbin/update-makemkv-drives
+share/MakeMKV/appdata.tar
+share/MakeMKV/blues.jar
+share/MakeMKV/blues.policy
+@postexec update-makemkv-drives
+@preunexec rm -fr %%LINUXBASE%%/etc/makemkv



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004051509.035F9u31027019>