Date: Sat, 1 May 2021 18:53:35 GMT From: =?utf-8?B?U3RlZmFuIEXDn2Vy?= <se@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 9df78543e018 - main - multimedia: Revert removal of transcode and dependent ports Message-ID: <202105011853.141IrZgb003922@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by se: URL: https://cgit.FreeBSD.org/ports/commit/?id=9df78543e018a28c73fc97caff2c3ac9cc7b62f7 commit 9df78543e018a28c73fc97caff2c3ac9cc7b62f7 Author: Stefan Eßer <se@FreeBSD.org> AuthorDate: 2021-05-01 17:43:12 +0000 Commit: Stefan Eßer <se@FreeBSD.org> CommitDate: 2021-05-01 18:48:53 +0000 multimedia: Revert removal of transcode and dependent ports This is a partial revert of commit 60955c0a0956 which removed transcode and ports depending on it for not building with -fno-common. multimedia/transcode: Revert removal of port The transcode port has been fixed to build with -fno-common by adding 1 "extern" and 3 "static" keywords to prevent some global symbols to be defined in multiple files that are linked into one binary. While here fix a few issues reported by "make stage-qa". multimedia/dvdrip: remove DEPRECATED multimedia/mkxvcd: remove DEPRECATED multimedia/subtitleripper: remove DEPRECATED While here add TIMESTAMP to distinfo of these ports and make portlint and portclippy happy. multimedia/transcode: Add TIMESTAMP to distinfo --- multimedia/Makefile | 4 + multimedia/dvdrip/Makefile | 68 +++ multimedia/dvdrip/distinfo | 3 + .../patch-lib__Video__DVDRip__Cluster__Master.pm | 11 + .../files/patch-lib__Video__DVDRip__Config.pm | 40 ++ .../files/patch-lib__Video__DVDRip__FilterList.pm | 11 + ...ch-lib__Video__DVDRip__GUI__Project__Storage.pm | 15 + ...atch-lib__Video__DVDRip__GUI__Project__Title.pm | 27 ++ .../files/patch-lib__Video__DVDRip__Project.pm | 51 +++ multimedia/dvdrip/pkg-descr | 6 + multimedia/dvdrip/pkg-plist | 100 ++++ multimedia/mkxvcd/Makefile | 39 ++ multimedia/mkxvcd/distinfo | 3 + multimedia/mkxvcd/pkg-descr | 16 + multimedia/subtitleripper/Makefile | 71 +++ multimedia/subtitleripper/distinfo | 3 + multimedia/subtitleripper/pkg-descr | 16 + multimedia/subtitleripper/pkg-plist | 15 + multimedia/transcode/Makefile | 160 +++++++ multimedia/transcode/distinfo | 3 + multimedia/transcode/files/patch-configure | 29 ++ multimedia/transcode/files/patch-ffmpeg0-10 | 13 + multimedia/transcode/files/patch-ffmpeg0-11 | 299 ++++++++++++ multimedia/transcode/files/patch-ffmpeg2 | 328 ++++++++++++++ multimedia/transcode/files/patch-ffmpeg29 | 352 +++++++++++++++ multimedia/transcode/files/patch-ffmpeg3 | 213 +++++++++ multimedia/transcode/files/patch-ffmpeg4 | 502 +++++++++++++++++++++ .../files/patch-filter_yuvdenoise_motion.c | 61 +++ multimedia/transcode/files/patch-import-v4l | 30 ++ .../transcode/files/patch-import_Makefile.in | 11 + .../transcode/files/patch-import__probe_ffmpeg.c | 11 + .../transcode/files/patch-import_demux__pass.c | 11 + .../transcode/files/patch-import_extract__ac3.c | 11 + .../transcode/files/patch-import_extract__mp3.c | 11 + .../transcode/files/patch-import_extract__pcm.c | 11 + multimedia/transcode/files/patch-libav-10.patch | 32 ++ .../transcode/files/patch-libtc-tc_functions.c | 33 ++ multimedia/transcode/files/patch-livav-9.patch | 31 ++ multimedia/transcode/pkg-descr | 21 + multimedia/transcode/pkg-plist | 130 ++++++ 40 files changed, 2802 insertions(+) diff --git a/multimedia/Makefile b/multimedia/Makefile index 91a4c8714eb8..40e378caa672 100644 --- a/multimedia/Makefile +++ b/multimedia/Makefile @@ -50,6 +50,7 @@ SUBDIR += dvdauthor SUBDIR += dvdid SUBDIR += dvdread + SUBDIR += dvdrip SUBDIR += dvdstyler SUBDIR += elementary-videos SUBDIR += emby-server @@ -231,6 +232,7 @@ SUBDIR += mkclean SUBDIR += mkvalidator SUBDIR += mkvtoolnix + SUBDIR += mkxvcd SUBDIR += mlt SUBDIR += mlt-qt5 SUBDIR += mmsclient @@ -368,6 +370,7 @@ SUBDIR += subsync SUBDIR += subtitlecomposer SUBDIR += subtitleoffsetmodifier + SUBDIR += subtitleripper SUBDIR += subtools SUBDIR += svt-av1 SUBDIR += svt-hevc @@ -381,6 +384,7 @@ SUBDIR += tivodecode SUBDIR += totem SUBDIR += totem-pl-parser + SUBDIR += transcode SUBDIR += tstools SUBDIR += tvheadend SUBDIR += umph diff --git a/multimedia/dvdrip/Makefile b/multimedia/dvdrip/Makefile new file mode 100644 index 000000000000..86d4bb71fde6 --- /dev/null +++ b/multimedia/dvdrip/Makefile @@ -0,0 +1,68 @@ +# Created by: Michael Nottebrock <michaelnottebrock@gmx.net> + +PORTNAME= dvdrip +PORTVERSION= 0.98.11 +PORTREVISION= 12 +CATEGORIES= multimedia +MASTER_SITES= CPAN http://www.exit1.org/dvdrip/dist/ +MASTER_SITE_SUBDIR= CPAN:JRED + +MAINTAINER= ports@FreeBSD.org +COMMENT= Perl Gtk+ based dvd-ripper + +LICENSE= ART10 GPLv1 # (ART10 or GPLv1) and CC-BY-SA-2.5 +LICENSE_COMB= dual + +BUILD_DEPENDS= p5-Gtk2>=0:x11-toolkits/p5-Gtk2 \ + p5-AnyEvent>=0:devel/p5-AnyEvent \ + p5-Event-ExecFlow>=0:devel/p5-Event-ExecFlow \ + p5-Gtk2-Ex-FormFactory>=0:x11-toolkits/p5-Gtk2-Ex-FormFactory \ + p5-Event-RPC>=0:devel/p5-Event-RPC \ + p5-Locale-libintl>=0:devel/p5-Locale-libintl +RUN_DEPENDS= p5-Gtk2>=0:x11-toolkits/p5-Gtk2 \ + p5-AnyEvent>=0:devel/p5-AnyEvent \ + p5-Event-ExecFlow>=0:devel/p5-Event-ExecFlow \ + p5-Gtk2-Ex-FormFactory>=0:x11-toolkits/p5-Gtk2-Ex-FormFactory \ + p5-Event-RPC>=0:devel/p5-Event-RPC \ + p5-Locale-libintl>=0:devel/p5-Locale-libintl \ + cdrdao:sysutils/cdrdao \ + convert:graphics/ImageMagick6 \ + mplayer:multimedia/mplayer \ + pstree:sysutils/pstree \ + transcode:multimedia/transcode \ + vcdimager:multimedia/vcdimager \ + ${LOCALBASE}/sbin/fping:net/fping \ + cdrecord:sysutils/cdrtools + +USES= gettext perl5 shebangfix +USE_PERL5= configure patch + +SHEBANG_FILES= bin/dvdrip* +CONFIGURE_ENV= SKIP_UNPACK_REQUIRED_MODULES=1 + +MAKE_JOBS_UNSAFE= yes + +OPTIONS_DEFINE= VORBIS SUBTITLE RAR +OPTIONS_DEFAULT= VORBIS SUBTITLE +RAR_DESC= Support RAR-compressed vobsub subtitles +SUBTITLE_DESC= Enable support for getting subtitles + +RAR_RUN_DEPENDS= rar:archivers/rar +SUBTITLE_RUN_DEPENDS= subtitle2pgm:multimedia/subtitleripper +VORBIS_RUN_DEPENDS= oggenc:audio/vorbis-tools \ + ogmmerge:multimedia/ogmtools + +post-patch: + @${PERL} -pi -e 's#/usr/sbin/fping#${LOCALBASE}/sbin/fping#' \ + ${WRKSRC}/lib/Video/DVDRip/Cluster/Master.pm \ + ${WRKSRC}/lib/Video/DVDRip/Depend.pm + @${FIND} ${WRKSRC} -name \*.orig -delete + +post-install: +.for f in dvdrip-progress dvdrip-splitpipe + @${CHMOD} u+w ${STAGEDIR}${PREFIX}/bin/${f} + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f} + @${CHMOD} u-w ${STAGEDIR}${PREFIX}/bin/${f} +.endfor + +.include <bsd.port.mk> diff --git a/multimedia/dvdrip/distinfo b/multimedia/dvdrip/distinfo new file mode 100644 index 000000000000..3c7e3360a90d --- /dev/null +++ b/multimedia/dvdrip/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619892059 +SHA256 (dvdrip-0.98.11.tar.gz) = 586c20968b2daa55c0afaaf334d5b9b8b6896d6ea45078a577e165806858c3a5 +SIZE (dvdrip-0.98.11.tar.gz) = 2075302 diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm new file mode 100644 index 000000000000..23bb4b40ec57 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm @@ -0,0 +1,11 @@ +--- lib/Video/DVDRip/Cluster/Master.pm.orig 2010-04-24 17:21:50.000000000 -0300 ++++ lib/Video/DVDRip/Cluster/Master.pm 2010-04-24 17:25:30.000000000 -0300 +@@ -122,7 +122,7 @@ + sub check_prerequisites { + my $class = shift; + +- foreach my $path ( "/usr/bin", "/usr/sbin" ) { ++ foreach my $path ( "/usr/bin", "/usr/sbin", "/usr/local/sbin" ) { + if ( -f "$path/fping" and -x "$path/fping" ) { + $FPING = "$path/fping"; + last; diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm new file mode 100644 index 000000000000..f21f1560098d --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm @@ -0,0 +1,40 @@ +--- lib/Video/DVDRip/Config.pm.orig Sun Aug 20 07:56:01 2006 ++++ lib/Video/DVDRip/Config.pm Sat Sep 23 13:58:03 2006 +@@ -193,16 +193,16 @@ + dvd_device => { + label => __ "Default DVD device", + type => 'file', +- value => "", ++ value => "/cdrom", + dvd_button => 1, + }, + selected_dvd_device => { +- value => "/dev/dvd", ++ value => "/cdrom", + }, + eject_command => { + label => __ "Eject Command", + type => 'string', +- value => "eject", ++ value => "cdcontrol", + rules => "executable-command", + }, + play_dvd_command => { +@@ -226,7 +226,7 @@ + play_stdin_command => { + label => __ "STDIN player command", + type => 'string', +- value => 'xine stdin://mpeg2 -g -pq -a %a', ++ value => 'mplayer -aid %(%a+128) -', + presets => [ + 'mplayer -aid %(%a+128) -', 'xine stdin://mpeg2 -g -pq -a %a', + ], +@@ -274,7 +274,7 @@ + default_video_codec => { + label => __ "Default video codec", + type => 'string', +- value => 'xvid', ++ value => 'xvid4', + presets => [ + "SVCD", "VCD", "XSVCD", "XVCD", "CVD", "divx4", + "divx5", "xvid", "xvidcvs", "xvid2", "xvid3", "xvid4", diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm new file mode 100644 index 000000000000..300de0fe00f7 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm @@ -0,0 +1,11 @@ +--- lib/Video/DVDRip/FilterList.pm.orig Fri Sep 22 16:05:34 2006 ++++ lib/Video/DVDRip/FilterList.pm Fri Sep 22 16:06:07 2006 +@@ -220,7 +220,7 @@ + "[filterlist] (re)scanning transcode's module path $modpath...\n"; + + my @filter_names = grep !/^(pv|preview)$/, +- map {m!/filter_([^/]+)\.so$!} glob("$modpath/filter_*"); ++ map {m!/filter_([^/]+)\.so$/!} glob("$modpath/filter_*"); + + my %filters; + foreach my $filter_name (@filter_names) { diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm new file mode 100644 index 000000000000..acc6e4b11e5e --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm @@ -0,0 +1,15 @@ +--- lib/Video/DVDRip/GUI/Project/Storage.pm.orig Sat Sep 23 16:06:43 2006 ++++ lib/Video/DVDRip/GUI/Project/Storage.pm Sat Sep 23 16:15:30 2006 +@@ -144,6 +144,12 @@ + ."Either it's the filename of a physical DVD " + ."device or the path of a full DVD image copy." + ), ++ Gtk2::Ex::FormFactory::Label->new( ++ label => ++ __"Important: On FreeBSD, please mount your DVD disc first\n" ++ ."(eg 'mount /cdrom'), and then specify the mountpoint above\n" ++ ."(click \"Choose DVD image directory\" and select '/cdrom').\n" ++ ), + ], + ), + ], diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm new file mode 100644 index 000000000000..881d7de0c6d8 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm @@ -0,0 +1,27 @@ +--- lib/Video/DVDRip/GUI/Project/Title.pm.orig Fri Sep 22 15:53:09 2006 ++++ lib/Video/DVDRip/GUI/Project/Title.pm Fri Sep 22 15:56:35 2006 +@@ -433,8 +433,10 @@ + my $title = $self->selected_title; + + my $command +- = $self->config('eject_command') . " " . +- $title->project->dvd_device; ++ = $self->config('eject_command') . " -f " . ++ $title->project->dvd_device . ++ " eject"; ++ + + system("$command &"); + +@@ -446,8 +448,9 @@ + + my $title = $self->selected_title; + +- my $command = $self->config('eject_command') . " -t " +- . $title->project->dvd_device; ++ my $command = $self->config('eject_command') . " -f " . ++ $title->project->dvd_device . ++ " close"; + + system("$command &"); + diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm new file mode 100644 index 000000000000..4607d0a71b0f --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm @@ -0,0 +1,51 @@ +--- lib/Video/DVDRip/Project.pm.orig Wed Aug 16 16:34:38 2006 ++++ lib/Video/DVDRip/Project.pm Sat Sep 23 15:32:16 2006 +@@ -345,24 +345,27 @@ + return \%symlinks; + } + +-sub get_mount_dir_from_mtab { ++sub get_mount_dir_from_fstab { + my $self = shift; +- my ( $dvd_device, $mtab_file ) = @_; ++ my ( $dvd_device, $fstab_file ) = @_; + + my $symlinks_href = $self->resolve_symlinks($dvd_device); + +- open( my $fh, $mtab_file ) +- or die "can't read $mtab_file"; ++ open(FSTABINPUT, $fstab_file ) ++ or die "can't read $fstab_file"; + + my $mount_dir; +- while ( my $line = <$fh> ) { +- my ( $device, $dir ) = split( /\s+/, $line ); +- if ( $symlinks_href->{$device} ) { +- $mount_dir = $dir; +- last; +- } ++ while (<FSTABINPUT>) { ++ my ($dev, $mnt, $fstyp, $opt, $dump, $pass) = split; ++ next if $dev =~ /^#/; ++ if (( $dev eq $symlinks_href->{$dev} ) || ++ ( $mnt eq $symlinks_href->{$dev} ) || ++ ( $fstyp eq 'cd9660' )) { ++ $mount_dir = $mnt; ++ last; ++ } + } +- close $fh; ++ close (FSTABINPUT); + + return $mount_dir; + } +@@ -373,8 +376,7 @@ + my $dvd_device = $self->dvd_device; + + my $dvd_mount_point +- = $self->get_mount_dir_from_mtab( $dvd_device, "/etc/mtab" ) +- || $self->get_mount_dir_from_mtab( $dvd_device, "/etc/fstab" ); ++ = $self->get_mount_dir_from_fstab( $dvd_device, "/etc/fstab" ); + + return $dvd_mount_point; + } diff --git a/multimedia/dvdrip/pkg-descr b/multimedia/dvdrip/pkg-descr new file mode 100644 index 000000000000..7ee0a7d01d75 --- /dev/null +++ b/multimedia/dvdrip/pkg-descr @@ -0,0 +1,6 @@ +This is dvd::rip, a Perl Gtk+ based dvd-ripper. It serves as a +convenient frontend to transcode and makes ripping and encoding +DVDs a breeze. It also features a cluster daemon, which can distribute +encoding jobs over multiple machines. + +WWW: https://www.exit1.org/dvdrip/ diff --git a/multimedia/dvdrip/pkg-plist b/multimedia/dvdrip/pkg-plist new file mode 100644 index 000000000000..01b557c192f3 --- /dev/null +++ b/multimedia/dvdrip/pkg-plist @@ -0,0 +1,100 @@ +bin/dvdrip +bin/dvdrip-exec +bin/dvdrip-master +bin/dvdrip-multitee +bin/dvdrip-progress +bin/dvdrip-replex +bin/dvdrip-splash +bin/dvdrip-splitpipe +bin/dvdrip-subpng +bin/dvdrip-thumb +%%PERL5_MAN1%%/dvdrip.1.gz +%%PERL5_MAN1%%/dvdrip-progress.1.gz +%%PERL5_MAN1%%/dvdrip-splitpipe.1.gz +%%PERL5_MAN3%%/Video::DVDRip.3.gz +%%PERL5_MAN3%%/Video::DVDRip::CPAN::Scanf.3.gz +%%SITE_PERL%%/LocaleData/cs/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/da/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/de/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/es/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/fr/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/it/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/sr/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/sr@Latn/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/Video/DVDRip.pm +%%SITE_PERL%%/Video/DVDRip/Audio.pm +%%SITE_PERL%%/Video/DVDRip/Base.pm +%%SITE_PERL%%/Video/DVDRip/BitrateCalc.pm +%%SITE_PERL%%/Video/DVDRip/CPAN/Scanf.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/ExecFlowFrontend.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/JobPlanner.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Master.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Node.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/PSU.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Pipe.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Project.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Scheduler.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Title.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Webserver.pm +%%SITE_PERL%%/Video/DVDRip/Config.pm +%%SITE_PERL%%/Video/DVDRip/Content.pm +%%SITE_PERL%%/Video/DVDRip/Convert.pm +%%SITE_PERL%%/Video/DVDRip/Depend.pm +%%SITE_PERL%%/Video/DVDRip/FilterList.pm +%%SITE_PERL%%/Video/DVDRip/FilterSettings.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Base.pm +%%SITE_PERL%%/Video/DVDRip/GUI/BitrateCalc.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Control.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Node.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Title.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Context.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Depend.pm +%%SITE_PERL%%/Video/DVDRip/GUI/ExecFlow.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Filters.pm +%%SITE_PERL%%/Video/DVDRip/GUI/FormFactory/ClipImage.pm +%%SITE_PERL%%/Video/DVDRip/GUI/FormFactory/SubtitlePreviews.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-audio-matrix.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-calc-height.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-calc-width.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-clip-move.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-play-movie.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-scan-volume.png +%%SITE_PERL%%/Video/DVDRip/GUI/Main.pm +%%SITE_PERL%%/Video/DVDRip/GUI/MultiAudio.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Pipe.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Preferences.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Preview.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Progress.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/ClipZoom.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Logging.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Storage.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Subtitle.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Title.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Transcode.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Rules.pm +%%SITE_PERL%%/Video/DVDRip/GUI/ZoomCalculator.pm +%%SITE_PERL%%/Video/DVDRip/InfoFile.pm +%%SITE_PERL%%/Video/DVDRip/JobPlanner.pm +%%SITE_PERL%%/Video/DVDRip/Logger.pm +%%SITE_PERL%%/Video/DVDRip/PSU.pm +%%SITE_PERL%%/Video/DVDRip/Preset.pm +%%SITE_PERL%%/Video/DVDRip/Probe.pm +%%SITE_PERL%%/Video/DVDRip/Project.pm +%%SITE_PERL%%/Video/DVDRip/SrtxFile.pm +%%SITE_PERL%%/Video/DVDRip/Subtitle.pm +%%SITE_PERL%%/Video/DVDRip/Term/ExitTask.pm +%%SITE_PERL%%/Video/DVDRip/Term/Main.pm +%%SITE_PERL%%/Video/DVDRip/Term/Progress.pm +%%SITE_PERL%%/Video/DVDRip/Title.pm +%%SITE_PERL%%/Video/DVDRip/TranscodeRC.pm +%%SITE_PERL%%/Video/DVDRip/icon.xpm +%%SITE_PERL%%/Video/DVDRip/license.txt +%%SITE_PERL%%/Video/DVDRip/splash.ca.png +%%SITE_PERL%%/Video/DVDRip/splash.da.png +%%SITE_PERL%%/Video/DVDRip/splash.de.png +%%SITE_PERL%%/Video/DVDRip/splash.en.png +%%SITE_PERL%%/Video/DVDRip/splash.es.png +%%SITE_PERL%%/Video/DVDRip/splash.it.png +%%SITE_PERL%%/Video/DVDRip/splash.sr@Latn.png +%%SITE_PERL%%/Video/DVDRip/splash.sr.png +%%SITE_PERL%%/Video/DVDRip/translators.txt diff --git a/multimedia/mkxvcd/Makefile b/multimedia/mkxvcd/Makefile new file mode 100644 index 000000000000..170269d5f174 --- /dev/null +++ b/multimedia/mkxvcd/Makefile @@ -0,0 +1,39 @@ +# Created by: michael johnson <ahze@ahze.net> + +PORTNAME= mkxvcd +PORTVERSION= 2.0.2 +PORTREVISION= 13 +CATEGORIES= multimedia +MASTER_SITES= SF/kvcd4nix/${PORTNAME}/${PORTNAME}-${PORTVERSION}/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Makes high quality X/K/S/VCD movies from many formats + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +RUN_DEPENDS= mpeg2enc:multimedia/mjpegtools \ + bash:shells/bash \ + mplayer:multimedia/mplayer \ + transcode:multimedia/transcode + +USES= shebangfix +SHEBANG_FILES= ${PORTNAME}.sh + +NO_ARCH= yes +NO_BUILD= yes + +PLIST_FILES= bin/${PORTNAME} +PORTDOCS= AUTHORS Changelog README + +OPTIONS_DEFINE= DOCS + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME}.sh \ + ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/multimedia/mkxvcd/distinfo b/multimedia/mkxvcd/distinfo new file mode 100644 index 000000000000..98439f808c8b --- /dev/null +++ b/multimedia/mkxvcd/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619893261 +SHA256 (mkxvcd-2.0.2.tar.gz) = b62ba2de3ab7a04affa856b9a625c9ad97c9b793252d3006fd38385f5785e0ca +SIZE (mkxvcd-2.0.2.tar.gz) = 23575 diff --git a/multimedia/mkxvcd/pkg-descr b/multimedia/mkxvcd/pkg-descr new file mode 100644 index 000000000000..53ab34d133b8 --- /dev/null +++ b/multimedia/mkxvcd/pkg-descr @@ -0,0 +1,16 @@ +Makes high quality X/K/S/VCD movies from any format mplayer can play + +From README: +GOAL + Make a 2 hour vcd with good quality. + +USAGE + mkxvcd.sh yourmovie.whateverextensionmplayercanplay + mkxvcd.sh /dev/dvd (or whatever device your dvd drive is using) + Options on the commandline are: + -d for debugging. + -m to force mplayer if you don't have transcode installed. + -t to force transcode (you can also edit the script in the :user + settings" section) + +WWW: http://kvcd4nix.sourceforge.net/ diff --git a/multimedia/subtitleripper/Makefile b/multimedia/subtitleripper/Makefile new file mode 100644 index 000000000000..08f88834c423 --- /dev/null +++ b/multimedia/subtitleripper/Makefile @@ -0,0 +1,71 @@ +# Created by: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org> + +PORTNAME= subtitleripper +DISTVERSION= 0.3-4 +PORTREVISION= 11 +CATEGORIES= multimedia +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-0.3-4 + +MAINTAINER= multimedia@FreeBSD.org +COMMENT= Convert DVD subtitles into text format (subrip srt) or VobSub format + +LICENSE= GPLv2 + +LIB_DEPENDS= libnetpbm.so:graphics/netpbm \ + libpng.so:graphics/png +RUN_DEPENDS= gocr:graphics/gocr \ + xv:graphics/xv \ + transcode:multimedia/transcode + +USES= gmake tar:tgz +CFLAGS+= -D_WITH_GETLINE=1 -DHAVE_GETLINE=1 \ + -I${LOCALBASE}/include/netpbm + +WRKSRC= ${WRKDIR}/${PORTNAME} + +OPTIONS_DEFINE= DOCS EXAMPLES + +DOC_FILES= \ + ChangeLog \ + README \ + README.gocr \ + README.srttool \ + README.subtitle2pgm \ + README.vobsub +EXAMPLES_FILES= \ + gocrfilter_en.sed \ + gocrfilter_fr.sed \ + gocrfilter_nl.sed \ + gocrfilter_none.sed +PROGRAM_FILES= \ + srttool \ + subtitle2pgm \ + subtitle2vobsub \ + vobsub2pgm +SCRIPT_FILES= \ + pgm2txt + +post-patch: + @${REINPLACE_CMD} -E \ + -e 's|^(CC[[:space:]]*=).*$$|\1${CC}|' \ + -e 's|^(COPT[[:space:]]*=).*$$|\1${CFLAGS}|' \ + -e 's|^(INCLUDES[[:space:]]*:=).*$$|\1 -I${LOCALBASE}/include|' \ + -e 's|^(LIBS[[:space:]]*:=).*$$|\1 -lm -L${LOCALBASE}/lib|' \ + -e 's|-lppm|-lnetpbm|' \ + ${BUILD_WRKSRC}/${MAKEFILE} + @${REINPLACE_CMD} -E \ + -e 's|^(DB_PATH[[:space:]]*=).*$$|\1\$${HOME}/.db/|' \ + -e 's|^(IMAGE_VIWER[[:space:]]*=).*$$|\1${LOCALBASE}/bin/xv|' \ + -e 's|^(PATH_TO_LANGUAGE_FILTER[[:space:]]*=).*$$|\1${EXAMPLESDIR}/|' \ + -e 's|(gocr[[:space:]]+)|${LOCALBASE}/bin/\1|' \ + ${WRKSRC}/pgm2txt + +do-install: + ${MKDIR} ${STAGEDIR}${DOCSDIR} + cd ${WRKSRC}; ${INSTALL_DATA} ${DOC_FILES} ${STAGEDIR}${DOCSDIR} + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + cd ${WRKSRC}; ${INSTALL_SCRIPT} ${EXAMPLES_FILES} ${STAGEDIR}${EXAMPLESDIR} + cd ${WRKSRC}; ${INSTALL_PROGRAM} ${PROGRAM_FILES} ${STAGEDIR}${PREFIX}/bin + cd ${WRKSRC}; ${INSTALL_SCRIPT} ${SCRIPT_FILES} ${STAGEDIR}${PREFIX}/bin + +.include <bsd.port.mk> diff --git a/multimedia/subtitleripper/distinfo b/multimedia/subtitleripper/distinfo new file mode 100644 index 000000000000..8bbc35ed0250 --- /dev/null +++ b/multimedia/subtitleripper/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619892106 +SHA256 (subtitleripper-0.3-4.tgz) = 8af6c2ebe55361900871c731ea1098b1a03efa723cd29ee1d471435bd21f3ac4 +SIZE (subtitleripper-0.3-4.tgz) = 47299 diff --git a/multimedia/subtitleripper/pkg-descr b/multimedia/subtitleripper/pkg-descr new file mode 100644 index 000000000000..db24afa80eb4 --- /dev/null +++ b/multimedia/subtitleripper/pkg-descr @@ -0,0 +1,16 @@ +[ excerpt from developer's www site ] + +If you want to convert DVD subtitles into text format (e.g. subrip +format) or VobSub format this program could be useful for you. +However, it is only one tiny tool that you need in the process of +producing srt files. This software depends heavily on transcode +for its input and is therefore part of the transcode package (see +transcode's contrib directory). So, if you want to convert some +subtitles, grap a copy of the lates transcode distribution. + +For srt file production the output of this program should be processed +by some OCR software. Currently, I work with GOCR for this purpose. + +For VobSub output no other tools are required. + +WWW: http://subtitleripper.sourceforge.net/ diff --git a/multimedia/subtitleripper/pkg-plist b/multimedia/subtitleripper/pkg-plist new file mode 100644 index 000000000000..9b250920436a --- /dev/null +++ b/multimedia/subtitleripper/pkg-plist @@ -0,0 +1,15 @@ +bin/pgm2txt +bin/srttool +bin/subtitle2pgm +bin/subtitle2vobsub +bin/vobsub2pgm +%%PORTDOCS%%%%DOCSDIR%%/ChangeLog +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.gocr +%%PORTDOCS%%%%DOCSDIR%%/README.srttool +%%PORTDOCS%%%%DOCSDIR%%/README.subtitle2pgm +%%PORTDOCS%%%%DOCSDIR%%/README.vobsub +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_en.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_fr.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_nl.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_none.sed diff --git a/multimedia/transcode/Makefile b/multimedia/transcode/Makefile new file mode 100644 index 000000000000..9470fd1c569e --- /dev/null +++ b/multimedia/transcode/Makefile @@ -0,0 +1,160 @@ +# Created by: Hendrik Scholz <hendrik@scholz.net> + +PORTNAME= transcode +PORTVERSION= 1.1.7 +PORTREVISION= 47 +CATEGORIES= multimedia +MASTER_SITES= https://bitbucket.org/france/transcode-tcforge/downloads/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Text-console utility for video stream processing + +LICENSE= GPLv2 + +LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg + +USE_LDCONFIG= yes +USES= gmake libtool pkgconfig tar:bzip2 gettext-runtime +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --enable-oss +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= DOCS OPTIMIZED_CFLAGS X11 MPEG2 BKTR POSTPROC FREETYPE LAME \ + XVID X264 OGG VORBIS THEORA DVDREAD DV QUICKTIME LZO A52 \ + FAAC LIBXML2 MJPEGTOOLS SDL IMAGEMAGICK JPEG ICONV V4L +OPTIONS_DEFAULT= LAME DVDREAD JPEG ICONV +BKTR_DESC= Bktr capture card support +POSTPROC_DESC= Libpostproc support +DVDREAD_DESC= Libdvdread support + +X11_USES= xorg +X11_USE= xorg=xv,xaw,xpm,sm,ice,xext,x11,xt +X11_CONFIGURE_WITH= x + +MPEG2_LIB_DEPENDS= libmpeg2.so:multimedia/libmpeg2 +MPEG2_CONFIGURE_ENABLE= libmpeg2 libmpeg2convert + +BKTR_CONFIGURE_ENABLE= bktr + +POSTPROC_CONFIGURE_ENABLE= libpostproc + +FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 +FREETYPE_CONFIGURE_ENABLE= freetype2 + +LAME_LIB_DEPENDS= libmp3lame.so:audio/lame +LAME_CONFIGURE_ENABLE= lame +LAME_CONFIGURE_ON= --with-lame-prefix=${LOCALBASE} + +XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid +XVID_CONFIGURE_ENABLE= xvid +XVID_CONFIGURE_ON= --with-xvid-prefix=${LOCALBASE} + +X264_LIB_DEPENDS= libx264.so:multimedia/libx264 +X264_CONFIGURE_ENABLE= x264 + +OGG_LIB_DEPENDS= libogg.so:audio/libogg +OGG_CONFIGURE_ENABLE= ogg + +VORBIS_LIB_DEPENDS= libvorbis.so:audio/libvorbis +VORBIS_CONFIGURE_ENABLE= vorbis + +THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora +THEORA_CONFIGURE_ENABLE= theora + +DVDREAD_LIB_DEPENDS= libdvdread.so:multimedia/libdvdread +DVDREAD_CONFIGURE_ENABLE= libdvdread +DVDREAD_CONFIGURE_ON= --with-libdvdread-prefix=${LOCALBASE} + +DV_LIB_DEPENDS= libdv.so:multimedia/libdv +DV_CONFIGURE_ENABLE= libdv + +QUICKTIME_LIB_DEPENDS= libquicktime.so:multimedia/libquicktime +QUICKTIME_CONFIGURE_ENABLE= libquicktime + +LZO_LIB_DEPENDS= liblzo2.so:archivers/lzo2 +LZO_CONFIGURE_ENABLE= lzo +LZO_CONFIGURE_ON= --with-lzo-prefix=${LOCALBASE} --with-lzo-includes=${LOCALBASE} + +A52_LIB_DEPENDS= liba52.so:audio/liba52 +A52_CONFIGURE_ENABLE= a52 +A52_CONFIGURE_ON= --with-a52-prefix=${LOCALBASE} + +FAAC_LIB_DEPENDS= libfaac.so:audio/faac +FAAC_CONFIGURE_ENABLE= faac +FAAC_CONFIGURE_ON= --with-faac-prefix=${LOCALBASE} + +LIBXML2_USES= gnome +LIBXML2_USE= GNOME=libxml2 +LIBXML2_CONFIGURE_ENABLE= libxml2 + +MJPEGTOOLS_LIB_DEPENDS= liblavjpeg.so:multimedia/mjpegtools +MJPEGTOOLS_CONFIGURE_ENABLE= mjpegtools + +SDL_USES= sdl +SDL_USE= SDL=sdl +SDL_CONFIGURE_ENABLE= sdl + +IMAGEMAGICK_LIB_DEPENDS= libMagickWand-6.so:graphics/ImageMagick6 +IMAGEMAGICK_CONFIGURE_ENABLE= imagemagick +IMAGEMAGICK_CONFIGURE_ON= --with-imagemagick-prefix=${LOCALBASE} + +JPEG_USES= jpeg +JPEG_CONFIGURE_ENABLE= libjpeg +JPEG_CONFIGURE_ON= --with-libjpeg-prefix=${LOCALBASE} + +ICONV_USES= iconv +ICONV_CONFIGURE_ENABLE= iconv +ICONV_CONFIGURE_ON= --with-iconv-prefix=${ICONV_PREFIX} + +V4L_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat +V4L_CONFIGURE_ENABLE= v4l + +.include <bsd.port.pre.mk> + +LDFLAGS_i386+= -Wl,-z,notext + +.if empty(ICONV_LIB) +CONFIGURE_ARGS+=ac_cv_lib_iconv_iconv_open=no \ + ac_cv_lib_iconv_libiconv_open=no +.endif + +post-extract: + @${RM} ${WRKSRC}/import/v4l/videodev* + +post-patch: + @${REINPLACE_CMD} -E -e 's|loff_t|uint64_t|' ${WRKSRC}/avilib/avidump.c + @${REINPLACE_CMD} -E -e 's|<SDL/|<|' ${WRKSRC}/filter/preview/display.h + @${REINPLACE_CMD} -e '/^static.*lrint/s|static ||' ${WRKSRC}/filter/filter_modfps.c + + @${REINPLACE_CMD} -E -e 's|(-la52)|\1 ${LIBA52_DEP_LIBS}|g ; \ + s|FFMPEG_VERSION|LIBAVCODEC_IDENT|g ; \ + s|-lMagick|-lMagickCore|g' \ + ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} + + @${REINPLACE_CMD} -E -e 's|-ldl||g' ${WRKSRC}/configure + @${REINPLACE_CMD} -E -e 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/configure + @${REINPLACE_CMD} -E -e 's|WRKSRC|${WRKSRC}|g' ${WRKSRC}/export/Makefile.in + @${REINPLACE_CMD} -E -e 's|<quicktime/|<lqt/|g' \ + ${WRKSRC}/configure \ + ${WRKSRC}/export/export_mov.c \ + ${WRKSRC}/import/decode_mov.c \ + ${WRKSRC}/import/import_mov.c \ + ${WRKSRC}/import/probe_mov.c + +post-patch-LZO-on: + @${REINPLACE_CMD} -e 's|%%NUV%%|nuv|' ${WRKSRC}/import/Makefile.in + +post-patch-LZO-off: + @${REINPLACE_CMD} -e 's|%%NUV%%||' ${WRKSRC}/import/Makefile.in + +post-patch-OPTIMIZED_CFLAGS-off: + @${FIND} ${WRKSRC} -type f | ${XARGS} -n 10 -x ${REINPLACE_CMD} \ + -e 's|-O[236]|${CFLAGS}|' + +post-stage: + @(cd ${STAGEDIR}${PREFIX} && \ + ${FIND} -s lib/transcode -type f -or -type l >> ${TMPPLIST}) + +.include <bsd.port.post.mk> diff --git a/multimedia/transcode/distinfo b/multimedia/transcode/distinfo new file mode 100644 index 000000000000..4576eee2ce3e --- /dev/null +++ b/multimedia/transcode/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619893866 +SHA256 (transcode-1.1.7.tar.bz2) = 1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92 +SIZE (transcode-1.1.7.tar.bz2) = 2183627 diff --git a/multimedia/transcode/files/patch-configure b/multimedia/transcode/files/patch-configure new file mode 100644 index 000000000000..7e7d99850279 --- /dev/null +++ b/multimedia/transcode/files/patch-configure @@ -0,0 +1,29 @@ +--- configure.orig 2011-11-19 17:50:37.000000000 +0100 ++++ configure 2014-01-17 22:18:16.637476520 +0100 +@@ -5073,7 +5073,7 @@ + ;; + esac + fi +-PATH_TO_AWK=$ac_cv_path_PATH_TO_AWK ++PATH_TO_AWK=$ac_cv_prog_AWK + if test -n "$PATH_TO_AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_TO_AWK" >&5 + $as_echo "$PATH_TO_AWK" >&6; } +@@ -26196,7 +26196,7 @@ + for l in $a52_ll ; do + case $l in + -L*) lpaths="$lpaths $l" ;; +- -l*) test x"$l" != x"-la52" && xlibs="$xlibs $l" ;; ++ -l*) test x"$l" != x"-la52 -L%%LOCALBASE%%/lib -lm" && xlibs="$xlibs $l" ;; + *) xlf="$xlf $l" ;; + esac + done +@@ -26249,7 +26249,7 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_a52_a52_init" >&5 + $as_echo "$ac_cv_lib_a52_a52_init" >&6; } + if test "x$ac_cv_lib_a52_a52_init" = xyes; then : +- A52_LIBS="$a52_ll -la52 $A52_EXTRA_LIBS" ++ A52_LIBS="$a52_ll -la52 -L%%LOCALBASE%%/lib -lm $A52_EXTRA_LIBS" + else + + this_pkg_err="yes" diff --git a/multimedia/transcode/files/patch-ffmpeg0-10 b/multimedia/transcode/files/patch-ffmpeg0-10 new file mode 100644 index 000000000000..83e11846f1c6 --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg0-10 @@ -0,0 +1,13 @@ +--- filter/filter_pp.c ++++ filter/filter_pp.c +@@ -38,8 +38,8 @@ + + /* FIXME: these use the filter ID as an index--the ID can grow + * arbitrarily large, so this needs to be fixed */ +-static pp_mode_t *mode[100]; +-static pp_context_t *context[100]; ++static pp_mode *mode[100]; ++static pp_context *context[100]; + static int width[100], height[100]; + static int pre[100]; + diff --git a/multimedia/transcode/files/patch-ffmpeg0-11 b/multimedia/transcode/files/patch-ffmpeg0-11 new file mode 100644 index 000000000000..74ac7eec348c --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg0-11 @@ -0,0 +1,299 @@ +diff -urN encode/encode_lavc.c.orig encode/encode_lavc.c +--- encode/encode_lavc.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ encode/encode_lavc.c 2012-07-03 10:47:03.528009149 -0700 +@@ -114,6 +114,7 @@ + + AVFrame ff_venc_frame; + AVCodecContext ff_vcontext; ++ AVDictionary ** ff_opts; + + AVCodec *ff_vcodec; + +@@ -1036,14 +1037,10 @@ + SET_FLAG(pd, mv0); + SET_FLAG(pd, cbp); + SET_FLAG(pd, qpel); +- SET_FLAG(pd, alt); +- SET_FLAG(pd, vdpart); + SET_FLAG(pd, naq); + SET_FLAG(pd, ilme); + SET_FLAG(pd, ildct); + SET_FLAG(pd, aic); +- SET_FLAG(pd, aiv); +- SET_FLAG(pd, umv); + SET_FLAG(pd, psnr); + SET_FLAG(pd, trell); + SET_FLAG(pd, gray); +@@ -1064,6 +1061,18 @@ + pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_DCT; + pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME; + } ++ if (pd->confdata.flags.alt) { ++ av_dict_set(pd->ff_opts, "alternate_scan", "1", 0); ++ } ++ if (pd->confdata.flags.vdpart) { ++ av_dict_set(pd->ff_opts, "data_partitioning", "1", 0); ++ } ++ if (pd->confdata.flags.umv) { ++ av_dict_set(pd->ff_opts, "umv", "1", 0); ++ } ++ if (pd->confdata.flags.aiv) { ++ av_dict_set(pd->ff_opts, "aiv", "1", 0); ++ } + } + + #undef SET_FLAG *** 2155 LINES SKIPPED ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202105011853.141IrZgb003922>