Changeset View
Standalone View
multimedia/makemkv/Makefile
PORTNAME= makemkv | PORTNAME= makemkv | ||||
PORTVERSION= 1.17.0 | DISTVERSION= 1.17.1 | ||||
diizzy: "Nitpick" but Porters Handbook suggests DISTVERSION over PORTVERSION | |||||
CATEGORIES= multimedia | CATEGORIES= multimedia | ||||
MASTER_SITES= http://www.makemkv.com/download/:makemkv \ | MASTER_SITES= http://www.makemkv.com/download/:makemkv \ | ||||
http://www.makemkv.com/download/old/:makemkv \ | http://www.makemkv.com/download/old/:makemkv \ | ||||
SF/opencore-amr/fdk-aac/:fdkaac \ | SF/opencore-amr/fdk-aac/:fdkaac \ | ||||
Done Inline ActionsIt's not possible to use the same location and dist file as audio/fdk-aac ? diizzy: It's not possible to use the same location and dist file as audio/fdk-aac ? | |||||
Done Inline ActionsDisregard this one, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265670 diizzy: Disregard this one, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265670 | |||||
https://ffmpeg.org/releases/:ffmpeg \ | https://ffmpeg.org/releases/:ffmpeg \ | ||||
https://www.openssl.org/source/old/${OPENSSLVERSION}/:openssl | https://www.openssl.org/source/old/${OPENSSLVERSION}/:openssl | ||||
DISTFILES= makemkv-oss-${PORTVERSION}.tar.gz:makemkv \ | DISTFILES= ${DISTFL_MAKEMKV:=:makemkv} \ | ||||
makemkv-bin-${PORTVERSION}.tar.gz:makemkv \ | ${DISTFL_FFMPEG:=:ffmpeg} \ | ||||
fdk-aac-${FDKAACVERSION}.tar.gz:fdkaac \ | ${DISTFL_OPENSSL:=:openssl} | ||||
ffmpeg-${FFMPEGVERSION}.tar.bz2:ffmpeg \ | |||||
openssl-${OPENSSLFULLVER}.tar.gz:openssl | |||||
DIST_SUBDIR= ${PORTNAME} | DIST_SUBDIR= ${PORTNAME} | ||||
MAINTAINER= zirias@FreeBSD.org | MAINTAINER= zirias@FreeBSD.org | ||||
COMMENT= Video converter reading from DVD and Bluray | COMMENT= Video converter reading from DVD and Bluray | ||||
# Do not sell. Do not redistribute modified binaries, but | LICENSE= MAKEMKV LGPL21+ ${PORT_OPTIONS:MFDK_AAC} | ||||
# explicit permission to distribute a patched makemkvcon given by | |||||
# copyright owner | |||||
LICENSE= MAKEMKV FDK LGPL21+ OpenSSL | |||||
LICENSE_COMB= multi | LICENSE_COMB= multi | ||||
LICENSE_NAME_MAKEMKV= The MakeMKV EULA | LICENSE_NAME_MAKEMKV= The MakeMKV EULA | ||||
LICENSE_NAME_FDK= The FDK AAC License | LICENSE_NAME_FDK_AAC= The FDK AAC License | ||||
LICENSE_FILE_MAKEMKV= ${WRKDIR}/makemkv-bin-${PORTVERSION}/src/eula_en_linux.txt | LICENSE_FILE_MAKEMKV= ${WRKSRC_bin}/src/eula_en_linux.txt | ||||
LICENSE_FILE_FDK= ${WRKDIR}/fdk-aac-${FDKAACVERSION}/NOTICE | LICENSE_FILE_FDK_AAC= ${WRKSRC_fdkaac}/NOTICE | ||||
LICENSE_PERMS_MAKEMKV= dist-mirror no-dist-sell pkg-mirror no-pkg-sell \ | LICENSE_PERMS_MAKEMKV= dist-mirror pkg-mirror auto-accept \ | ||||
Done Inline ActionsFDK-AACs licensing prevents us from packaging and distributing it diizzy: FDK-AACs licensing prevents us from packaging and distributing it | |||||
Done Inline ActionsI didn't read it this way. Is this for patent reasons? Well, then the simplest solution would be to make it off by default... zirias: I didn't read it this way. Is this for patent reasons? Well, then the simplest solution would… | |||||
Done Inline Actionshttps://trac.ffmpeg.org/wiki/Encode/AAC Fedora even takes this a step longer diizzy: https://trac.ffmpeg.org/wiki/Encode/AAC
Fedora even takes this a step longer
https://src. | |||||
Done Inline ActionsAh the GPL, of course. Oh my ... well, but then I guess this is already addressed by removing all the license perms and leaving the option off by default. So, this actually fixes an issue that's currently present in the port. Thanks! zirias: Ah the GPL, of course. Oh my ... well, but then I guess this is already addressed by removing… | |||||
auto-accept | # eplicit permission granted by copyright owner to \ | ||||
LICENSE_PERMS_FDK= dist-mirror no-dist-sell pkg-mirror no-pkg-sell \ | # distribute a patched makemkvcon binary. | ||||
auto-accept | LICENSE_PERMS_FDK_AAC= auto-accept | ||||
LICENSE_DISTFILES_FDK= fdk-aac-${FDKAACVERSION}.tar.gz | LICENSE_DISTFILES_FDK_AAC= ${DISTFL_FDKAAC} | ||||
LICENSE_DISTFILES_LGPL21+ = ffmpeg-${FFMPEGVERSION}.tar.bz2 | LICENSE_DISTFILES_LGPL21+ = ${DISTFL_FFMPEG} | ||||
LICENSE_DISTFILES_OpenSSL= openssl-${OPENSSLFULLVER}.tar.gz | LICENSE_DISTFILES_MAKEMKV= ${DISTFL_MAKEMKV} | ||||
LICENSE_DISTFILES_MAKEMKV= makemkv-bin-${PORTVERSION}.tar.gz \ | |||||
makemkv-oss-${PORTVERSION}.tar.gz | |||||
ONLY_FOR_ARCHS= aarch64 amd64 i386 | ONLY_FOR_ARCHS= aarch64 amd64 i386 | ||||
USES= gmake linux pkgconfig perl5 | USES= gmake linux pkgconfig perl5 | ||||
USE_CSTD= c11 | |||||
USE_CXXSTD= c++11 | |||||
USE_LINUX= base expat expat:build openssl openssl:build devtools:build | USE_LINUX= base expat expat:build openssl openssl:build devtools:build | ||||
USE_PERL5= build | USE_PERL5= build | ||||
BUILD_DEPENDS= ${LOCALBASE}/include/expat.h:textproc/expat2 \ | BUILD_DEPENDS= ${LOCALBASE}/include/expat.h:textproc/expat2 \ | ||||
patchelf>0:sysutils/patchelf \ | patchelf>0:sysutils/patchelf \ | ||||
${BUILD_DEPENDS_${FFMPEGARCH}} | ${BUILD_DEPENDS_${FFMPEG_ARCH}} | ||||
BUILD_DEPENDS_x86= nasm>0:devel/nasm | BUILD_DEPENDS_x86= nasm:devel/nasm | ||||
WRKSRC= ${WRKDIR}/makemkv-oss-${PORTVERSION} | WRKSRC= ${WRKDIR}/makemkv-oss-${DISTVERSION} | ||||
WRKSRC_bin= ${WRKDIR}/makemkv-bin-${DISTVERSION} | |||||
WRKSRC_fdkaac= ${WRKDIR}/fdk-aac-${FDKAACVERSION} | |||||
WRKSRC_ffmpeg= ${WRKDIR}/ffmpeg-${FFMPEGVERSION} | |||||
WRKSRC_openssl= ${WRKDIR}/openssl-${OPENSSLFULLVER} | |||||
CONFLICTS_BUILD= v4l_compat | CONFLICTS_BUILD= v4l_compat | ||||
SUB_FILES= update-makemkv-drives | SUB_FILES= update-makemkv-drives | ||||
SUB_LIST= LINUXBASE=${LINUXBASE} | SUB_LIST= LINUXBASE=${LINUXBASE} | ||||
PLIST_SUB= LINUXBASE=${LINUXBASE} | PLIST_SUB= LINUXBASE=${LINUXBASE} | ||||
FDKAACVERSION= 2.0.2 | FDKAACVERSION= 2.0.2 | ||||
FFMPEGVERSION= 5.0.1 | FFMPEGVERSION= 5.1 | ||||
OPENSSLVERSION= 1.0.2 | OPENSSLVERSION= 1.0.2 | ||||
OPENSSLPATCHLEVEL= k | OPENSSLPATCHLEVEL= k | ||||
OPENSSLFULLVER= ${OPENSSLVERSION}${OPENSSLPATCHLEVEL} | OPENSSLFULLVER= ${OPENSSLVERSION}${OPENSSLPATCHLEVEL} | ||||
LINUXARCH= ${ARCH:S/amd64/x86_64/} | DISTFL_MAKEMKV= makemkv-oss-${DISTVERSION}.tar.gz \ | ||||
LINUXTRIPLET= ${LINUXARCH}-redhat-linux | makemkv-bin-${DISTVERSION}.tar.gz | ||||
LINUXLIBDIR= ${LINUXBASE}/${"${LINUXARCH:Mi386}" != "":?lib:lib64} | DISTFL_FDKAAC= fdk-aac-${FDKAACVERSION}.tar.gz | ||||
OPENSSLTARGET= linux-${LINUXARCH:S/i386/elf/} | DISTFL_FFMPEG= ffmpeg-${FFMPEGVERSION}.tar.bz2 | ||||
Not Done Inline Actionsmultimedia/ffmpeg uses xz, it would be nice if we could reuse the same distfile once we're ready to switch diizzy: multimedia/ffmpeg uses xz, it would be nice if we could reuse the same distfile once we're… | |||||
Done Inline ActionsI'm not sure about sharing distfiles just yet. I still need an OpenSSL distfile here that no other port needs, but this *might* be solved with https://reviews.freebsd.org/D35904 (the whole stack). Currently, I think keeping everything needed for MakeMKV in a DIST_SUBDIR feels cleaner. But if I can ever drop OpenSSL, it looks different, especially when multimedia/ffmpeg is on version 5 as well. zirias: I'm not sure about sharing distfiles just yet. I still need an OpenSSL distfile here that no… | |||||
FFMPEGARCH= ${"${LINUXARCH:Maarch64}" != "":?aarch64:x86} | DISTFL_OPENSSL= openssl-${OPENSSLFULLVER}.tar.gz | ||||
OPTIONS_DEFINE= EXAMPLES | LINUXLIBDIR= ${LINUXBASE}/${"${ARCH:Mi386}":?lib:lib64} | ||||
OPENSSLTARGET= linux-${ARCH:S/i386/elf/:S/amd64/x86_64/} | |||||
LINUXLIBS= libcrypto.so.10 libexpat.so.1 libz.so.1 | |||||
LINUXSYSROOT= ${WRKDIR}/gnuroot | |||||
PATCHELF_CMD?= ${LOCALBASE}/bin/patchelf | OPTIONS_DEFINE= EXAMPLES FDK_AAC | ||||
OPTIONS_DEFAULT= EXAMPLES | |||||
Done Inline ActionsFDK-AACs licensing prevents us from packaging and distributing it diizzy: FDK-AACs licensing prevents us from packaging and distributing it | |||||
Done Inline ActionsAre you sure about this? Just checked audio/fdk-aac and it allows packaging... zirias: Are you sure about this? Just checked audio/fdk-aac and it allows packaging... | |||||
Done Inline ActionsIt would be nice if we could keep naming consistent with multimedia/ffmpeg diizzy: It would be nice if we could keep naming consistent with multimedia/ffmpeg | |||||
FDK_AAC_DESC= Support AAC via statically linked fdk-aac | |||||
FDK_AAC_DISTFILES= ${DISTFL_FDKAAC:=:fdkaac} | |||||
TARGET_ORDER_OVERRIDE= 290:pre-configure-FDK_AAC-on | |||||
CPPFLAGS+= -I${WRKDIR}/gnuroot/include \ | CC= ${LINUXBASE}/bin/gcc | ||||
-I${WRKDIR}/openssl-${OPENSSLFULLVER}/include \ | CXX= ${LINUXBASE}/bin/g++ | ||||
CPPFLAGS+= -I${LINUXSYSROOT}/include -I${WRKSRC_openssl}/include \ | |||||
-D_linux_ -DFORCE_OPENSSL_NO_EC \ | -D_linux_ -DFORCE_OPENSSL_NO_EC \ | ||||
${${OSVERSION}<1300000:?-Dcaddr_t=void\* -D__daddr_t_defined:} | ${${OSVERSION}<1300000:?-Dcaddr_t=void\* -D__daddr_t_defined:} | ||||
CFLAGS+= -std=c11 | LDFLAGS+= -L${LINUXSYSROOT}/lib | ||||
Done Inline ActionsYou can also uses USES= compiler for this as far as I can tell diizzy: You can also uses USES= compiler for this as far as I can tell
https://github. | |||||
Done Inline ActionsNo, it just checks for the abilities, but doesn't add CFLAGS/CXXFLAGS. zirias: No, it just checks for the abilities, but doesn't add CFLAGS/CXXFLAGS. | |||||
Done Inline ActionsSorry, early in the morning... :-) USE_CSTD= c11 diizzy: Sorry, early in the morning... :-)
USE_CSTD= c11
https://cgit.freebsd.org/ports/tree/Mk/bsd. | |||||
Done Inline ActionsOh! Well, not sure *this* magic was really necessary, but will happily convert and test whether it works. zirias: Oh! Well, not sure *this* magic was really necessary, but will happily convert and test whether… | |||||
CXXFLAGS+= -std=c++11 | PATCHELF_CMD?= ${LOCALBASE}/bin/patchelf | ||||
LDFLAGS+= -L${WRKDIR}/gnuroot/lib | |||||
HAS_CONFIGURE= yes | HAS_CONFIGURE= yes | ||||
CONFIGURE_ARGS= --prefix=${PREFIX} --disable-gui --host=${LINUXTRIPLET} \ | CONFIGURE_ARGS= --prefix=${PREFIX} --disable-gui --libdir=${PREFIX}/lib/makemkv | ||||
--libdir=${PREFIX}/lib/makemkv | CONFIGURE_ENV= PKG_CONFIG_PATH=${LINUXSYSROOT}/lib/pkgconfig | ||||
CONFIGURE_ENV= CC=${LINUXTRIPLET}-gcc CXX=${LINUXTRIPLET}-g++ \ | |||||
PATH=${WRKDIR}/gnuroot/bin:${PATH} \ | |||||
PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig | |||||
MAKE_ENV= PATH=${WRKDIR}/gnuroot/bin:${PATH} | |||||
MAKE_ARGS= CFLAGS="${CXXFLAGS} ${CPPFLAGS} -std=c11" | MAKE_ARGS= CFLAGS="${CXXFLAGS} ${CPPFLAGS} -std=c11" | ||||
Done Inline Actions-std=c11 seems redundant diizzy: -std=c11 seems redundant | |||||
Done Inline ActionsIt isn't thanks to weirdness in upstream build, which contains C and C++ code and only uses CFLAGS for everything. zirias: It isn't thanks to weirdness in upstream build, which contains C and C++ code and only uses… | |||||
STRIP_CMD= ${WRKDIR}/gnuroot/bin/${LINUXTRIPLET}-strip | |||||
FFMPEG_ARCH= ${ARCH:Maarch64:S/^$/x86/} | |||||
FFMPEG_CONFIGURE_ARGS= --prefix=${LINUXSYSROOT} --pkg-config=pkg-config \ | |||||
--disable-shared --enable-static --enable-pic \ | |||||
--target-os=linux --cc=${CC} \ | |||||
${"${PORT_OPTIONS:MFDK_AAC}":?--enable-libfdk-aac:} | |||||
FFMPEG_CONFIGURE_ENV= ${CONFIGURE_ENV} CFLAGS="${CPPFLAGS} ${CFLAGS}" | |||||
FFMPEG_MAKE_ARGS= V=1 ARCH=${FFMPEG_ARCH} | |||||
FFMPEG_INSTALL_TARGET= ${ALL_TARGET} ${INSTALL_TARGET} | |||||
post-extract: | post-extract: | ||||
@${MKDIR} ${WRKDIR}/gnuroot/lib | @${MKDIR} ${LINUXSYSROOT}/lib | ||||
@cd ${WRKDIR}/gnuroot/lib; \ | .for lib in ${LINUXLIBS} | ||||
${LN} -s ${LINUXLIBDIR}/libz.so.1; \ | @${LN} -s ${LINUXLIBDIR}/${lib} ${LINUXSYSROOT}/lib/${lib:R} | ||||
${LN} -s libz.so.1 libz.so; \ | .endfor | ||||
${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}/gnuroot/bin | |||||
@cd ${WRKDIR}/gnuroot/bin; \ | |||||
for t in gcc link ld objdump ar nm strip ranlib g++; do \ | |||||
${LN} -s ${LINUXBASE}/bin/$$t ${LINUXTRIPLET}-$$t; \ | |||||
done | |||||
post-patch: | post-patch: | ||||
@${REINPLACE_CMD} -e 's:INSTALL) -D:INSTALL):' \ | @${REINPLACE_CMD} -e 's:INSTALL) -D:INSTALL):' \ | ||||
${WRKSRC}/Makefile.in | ${WRKSRC}/Makefile.in | ||||
@${REINPLACE_CMD} -e 's:/bin/bash:/bin/sh:' \ | @${REINPLACE_CMD} -e 's:/bin/bash:/bin/sh:' \ | ||||
-e 's:x86_64:amd64:' \ | -e 's:x86_64:amd64:' \ | ||||
-e 's:i686:i386:' \ | -e 's:i686:i386:' \ | ||||
-e 's:-t \([^ ]*\) \([^ ]*\):\2 \1:' \ | -e 's:-t \([^ ]*\) \([^ ]*\):\2 \1:' \ | ||||
-e 's:ARCH=:BINARCH=:' \ | -e 's:ARCH=:BINARCH=:' \ | ||||
-e 's:bin/$$(ARCH:bin/$$(BINARCH:' \ | -e 's:bin/$$(ARCH:bin/$$(BINARCH:' \ | ||||
${WRKDIR}/makemkv-bin-${PORTVERSION}/Makefile | ${WRKSRC_bin}/Makefile | ||||
pre-configure-FDK_AAC-on: | |||||
cd ${WRKSRC_fdkaac}; \ | |||||
${CONFIGURE_ENV} CXX=${CXX} \ | |||||
./configure --prefix=${LINUXSYSROOT} --disable-silent-rules \ | |||||
--disable-shared --enable-static --with-pic; \ | |||||
${MAKE_ENV} ${MAKE_CMD} ${_MAKE_JOBS} ${INSTALL_TARGET} | |||||
pre-configure: | pre-configure: | ||||
# FDK AAC | cd ${WRKSRC_ffmpeg}; \ | ||||
cd ${WRKDIR}/fdk-aac-${FDKAACVERSION}; \ | ${FFMPEG_CONFIGURE_ENV} ./configure ${FFMPEG_CONFIGURE_ARGS}; \ | ||||
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ | ${MAKE_ENV} ${MAKE_CMD} ${_MAKE_JOBS} \ | ||||
export CXXFLAGS="${CXXFLAGS}"; \ | ${FFMPEG_MAKE_ARGS} ${FFMPEG_INSTALL_TARGET} | ||||
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}"; \ | |||||
export CPPFLAGS="${CPPFLAGS}"; \ | |||||
PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig \ | |||||
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}" CPPFLAGS="${CPPFLAGS}" \ | |||||
${MAKE_CMD} ${_MAKE_JOBS} V=1 ARCH=${FFMPEGARCH} all install | |||||
# OpenSSL headers | # OpenSSL headers | ||||
cd ${WRKDIR}/openssl-${OPENSSLFULLVER}; \ | cd ${WRKSRC_openssl}; \ | ||||
./Configure --openssldir= --prefix=/usr ${OPENSSLTARGET} | ./Configure --openssldir= --prefix=/usr ${OPENSSLTARGET} | ||||
pre-install: | pre-install: | ||||
${MKDIR} ${STAGEDIR}${PREFIX}/lib/makemkv | ${MKDIR} ${STAGEDIR}${PREFIX}/lib/makemkv | ||||
post-install: | post-install: | ||||
${INSTALL_MAN} ${FILESDIR}/makemkvcon.1 \ | ${INSTALL_MAN} ${FILESDIR}/makemkvcon.1 \ | ||||
${STAGEDIR}${PREFIX}/man/man1 | ${STAGEDIR}${PREFIX}/man/man1 | ||||
cd ${WRKDIR}/makemkv-bin-${PORTVERSION}; \ | cd ${WRKSRC_bin}; \ | ||||
${MKDIR} tmp; \ | ${MKDIR} tmp; \ | ||||
${ECHO_CMD} accepted > tmp/eula_accepted; \ | ${ECHO_CMD} accepted > tmp/eula_accepted; \ | ||||
${MAKE_CMD} DESTDIR=${STAGEDIR} PREFIX=${PREFIX} install | ${MAKE_CMD} DESTDIR=${STAGEDIR} PREFIX=${PREFIX} install | ||||
${PATCHELF_CMD} --set-rpath ${PREFIX}/lib/makemkv \ | ${PATCHELF_CMD} --set-rpath ${PREFIX}/lib/makemkv \ | ||||
${STAGEDIR}${PREFIX}/bin/makemkvcon | ${STAGEDIR}${PREFIX}/bin/makemkvcon | ||||
${REINPLACE_CMD} -e 's:/sys/bus/scsi:/etc/makemkv/:' \ | ${REINPLACE_CMD} -e 's:/sys/bus/scsi:/etc/makemkv/:' \ | ||||
${STAGEDIR}${PREFIX}/bin/makemkvcon | ${STAGEDIR}${PREFIX}/bin/makemkvcon | ||||
${BRANDELF} -t Linux ${STAGEDIR}${PREFIX}/bin/makemkvcon | ${BRANDELF} -t Linux ${STAGEDIR}${PREFIX}/bin/makemkvcon | ||||
Show All 9 Lines |
"Nitpick" but Porters Handbook suggests DISTVERSION over PORTVERSION