Instead of disabling the FFmpeg support for moc I have switched the port to
using a fork that has up to date FFmpeg support up through to version 7.


Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/moc/Makefile,v
retrieving revision 1.31
diff -u -p -u -p -r1.31 Makefile
--- Makefile    21 Nov 2024 07:00:52 -0000      1.31
+++ Makefile    21 Nov 2024 10:23:44 -0000
@@ -1,65 +1,65 @@
 COMMENT =      console audio player
-DISTNAME =     moc-2.5.2
+
+DIST_TUPLE+=   gitlab tomaszg mocp fb0a63b564b40fa861204e2f804b696c6ee573da .
+PKGNAME =      moc-2.6.a3
+
 CATEGORIES =   audio
-HOMEPAGE =     https://moc.daper.net/
-SITES =                https://ftp.daper.net/pub/soft/moc/stable/ \
-               https://distfiles.sigtrap.nl/
-EXTRACT_SUFX = .tar.bz2
-REVISION =     12
 
 # GPLv3+
 PERMIT_PACKAGE = Yes
 
 # uses pledge()
-WANTLIB += ${COMPILER_LIBCXX} FLAC c crypto curl curses db faad
-WANTLIB += iconv id3tag ltdl m mad magic modplug mp3lame mpcdec
-WANTLIB += mpg123 nghttp2 nghttp3 ngtcp2 ngtcp2_crypto_quictls
-WANTLIB += ogg opus samplerate sndfile sndio speex ssl tag tag_c
-WANTLIB += vorbis vorbisenc vorbisfile wavpack z
+WANTLIB += ${COMPILER_LIBCXX} FLAC X11 X11-xcb Xext Xfixes aom
+WANTLIB += avcodec avformat avutil bz2 c crypto curl curses dav1d
+WANTLIB += drm faad gsm iconv id3tag intl ltdl lzma m mad magic
+WANTLIB += modplug mp3lame mpcdec mpg123 nghttp2 nghttp3 ngtcp2
+WANTLIB += ngtcp2_crypto_quictls ogg opus popt samplerate sndfile
+WANTLIB += sndio speex ssl swresample tag tag_c theoradec theoraenc
+WANTLIB += va va-drm va-x11 vorbis vorbisenc vorbisfile vpx wavpack
+WANTLIB += x264 x265 xcb xcb-dri3 xml2 xvidcore z
 
-COMPILER =     base-clang ports-gcc base-gcc
+COMPILER =     base-clang ports-gcc
+
+RUN_DEPENDS+=  devel/desktop-file-utils \
+               x11/gtk+4,-guic
 
 LIB_DEPENDS =  audio/faad \
                audio/flac \
-               audio/lame \
                audio/libid3tag \
                audio/libmad \
                audio/libmodplug \
-               audio/libogg \
                audio/libsamplerate \
                audio/libsndfile \
                audio/libvorbis \
-               audio/mpg123 \
                audio/musepack \
-               audio/opus \
                audio/speex \
                audio/taglib \
                audio/wavpack \
-               converters/libiconv \
-               databases/db/v4 \
                devel/libmagic \
                devel/libtool,-ltdl \
-               net/curl \
-               net/ngtcp2 \
-               www/nghttp2 \
-               www/nghttp3
+               devel/popt \
+               graphics/ffmpeg \
+               net/curl
 
+AUTOCONF_VERSION=      2.71
+AUTOMAKE_VERSION=      1.16
 SEPARATE_BUILD = Yes
-
-CONFIGURE_STYLE = gnu
+CONFIGURE_STYLE = autoreconf
 CONFIGURE_ARGS += \
-               --with-sndio \
+               --disable-cache \
                --without-jack \
                --without-oss \
                --without-alsa \
+               --without-mpg123 \
+               --without-mpris \
+               --without-opus \
+               --without-pulse \
                --without-rcc \
                --without-included-ltdl \
                --without-timidity \
-               --without-ffmpeg \
-               --with-magic \
                --with-ltdl-include=${LOCALBASE}/include \
                --with-ltdl-lib=${LOCALBASE}/lib
-CONFIGURE_ENV = CPPFLAGS="-I${LOCALBASE}/include -I${LOCALBASE}/include/db4" \
+CONFIGURE_ENV = CPPFLAGS="-Wno-unused-but-set-parameter -I${LOCALBASE}/include 
-I${LOCALBASE}/include/db4" \
                LDFLAGS="-L${LOCALBASE}/lib"
 
 pre-install:
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/moc/distinfo,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 distinfo
--- distinfo    18 Nov 2017 12:01:14 -0000      1.2
+++ distinfo    21 Nov 2024 10:23:44 -0000
@@ -1,2 +1,2 @@
-SHA256 (moc-2.5.2.tar.bz2) = 86aBFWAqR4i3z6m76Tl6nV4kxoy2GldpXRwsPs9J2wg=
-SIZE (moc-2.5.2.tar.bz2) = 602728
+SHA256 (tomaszg-mocp-fb0a63b564b40fa861204e2f804b696c6ee573da.tar.gz) = 
0vVH+wk+UGP9Ag7nk+8QAKhSL0W4NwMQ8yok5DyyKIo=
+SIZE (tomaszg-mocp-fb0a63b564b40fa861204e2f804b696c6ee573da.tar.gz) = 703656
Index: patches/patch-config_example_in
===================================================================
RCS file: /cvs/ports/audio/moc/patches/patch-config_example_in,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-config_example_in
--- patches/patch-config_example_in     11 Mar 2022 18:20:18 -0000      1.3
+++ patches/patch-config_example_in     21 Nov 2024 10:23:44 -0000
@@ -3,7 +3,7 @@ Remove audio choices that are irrelevant
 Index: config.example.in
 --- config.example.in.orig
 +++ config.example.in
-@@ -121,32 +121,10 @@
+@@ -140,32 +140,10 @@
  #
  #HTTPProxy =
  
@@ -35,5 +35,5 @@ Index: config.example.in
 -#ALSAMixer1 = PCM
 -#ALSAMixer2 = Master
  
- # Under some circumstances on 32-bit systems, audio played continously
- # for long periods of time may begin to stutter.  Setting this option to
+ # Save software mixer state?
+ # If enabled, a file 'softmixer' will be created in '~/.moc/' storing the
Index: patches/patch-decoder_plugins_ffmpeg_ffmpeg_c
===================================================================
RCS file: patches/patch-decoder_plugins_ffmpeg_ffmpeg_c
diff -N patches/patch-decoder_plugins_ffmpeg_ffmpeg_c
--- patches/patch-decoder_plugins_ffmpeg_ffmpeg_c       11 Mar 2022 18:20:18 
-0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,34 +0,0 @@
-Maint: Migrate to FFmpeg/LibAV's AV_-prefixed #defines.
-
-Index: decoder_plugins/ffmpeg/ffmpeg.c
---- decoder_plugins/ffmpeg/ffmpeg.c.orig
-+++ decoder_plugins/ffmpeg/ffmpeg.c
-@@ -984,7 +984,7 @@ static void *ffmpeg_open (const char *file)
-        * FFmpeg/LibAV in use.  For some versions this will be caught in
-        * *_find_stream_info() above and misreported as an unfound codec
-        * parameters error. */
--      if (data->codec->capabilities & CODEC_CAP_EXPERIMENTAL) {
-+      if (data->codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL) {
-               decoder_error (&data->error, ERROR_FATAL, 0,
-                               "The codec is experimental and may damage MOC: 
%s",
-                               data->codec->name);
-@@ -993,8 +993,8 @@ static void *ffmpeg_open (const char *file)
- #endif
- 
-       set_downmixing (data);
--      if (data->codec->capabilities & CODEC_CAP_TRUNCATED)
--              data->enc->flags |= CODEC_FLAG_TRUNCATED;
-+      if (data->codec->capabilities & AV_CODEC_CAP_TRUNCATED)
-+              data->enc->flags |= AV_CODEC_FLAG_TRUNCATED;
- 
- #ifdef HAVE_AVCODEC_OPEN2
-       if (avcodec_open2 (data->enc, data->codec, NULL) < 0)
-@@ -1025,7 +1025,7 @@ static void *ffmpeg_open (const char *file)
- 
-       data->sample_width = sfmt_Bps (data->fmt);
- 
--      if (data->codec->capabilities & CODEC_CAP_DELAY)
-+      if (data->codec->capabilities & AV_CODEC_CAP_DELAY)
-               data->delay = true;
-       data->seek_broken = is_seek_broken (data);
-       data->timing_broken = is_timing_broken (data->ic);
Index: patches/patch-main_c
===================================================================
RCS file: /cvs/ports/audio/moc/patches/patch-main_c,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 patch-main_c
--- patches/patch-main_c        11 Mar 2022 18:20:18 -0000      1.4
+++ patches/patch-main_c        21 Nov 2024 10:23:44 -0000
@@ -4,33 +4,36 @@
 Index: main.c
 --- main.c.orig
 +++ main.c
-@@ -174,6 +174,8 @@ static void start_moc (const struct parameters *params
-                       case 0: /* child - start server */
-                               set_me_server ();
-                               list_sock = server_init (params->debug, 
params->foreground);
-+                              if (pledge("stdio rpath wpath cpath inet unix 
dns audio", NULL) == -1)
-+                                      fatal ("pledge() failed: %s", 
strerror(errno));
-                               rc = write (notify_pipe[1], &i, sizeof(i));
-                               if (rc < 0)
-                                       fatal ("write() to notify pipe failed: 
%s",
-@@ -208,10 +210,14 @@ static void start_moc (const struct parameters *params
+@@ -161,6 +161,8 @@ static void start_moc (const struct parameters *params
+       if (params->foreground) {
                set_me_server ();
-               list_sock = server_init (params->debug, params->foreground);
-               signal (SIGCHLD, sig_chld);
-+              if (pledge("stdio rpath wpath cpath inet unix dns audio", NULL) 
== -1)
+               server_init (params->debug, params->foreground);
++              if (pledge("stdio rpath wpath cpath inet unix audio", NULL) == 
-1)
 +                      fatal ("pledge() failed: %s", strerror(errno));
-               server_loop (list_sock);
+               server_loop ();
+               return;
        }
- 
-       if (!params->only_server) {
+@@ -185,6 +187,8 @@ static void start_moc (const struct parameters *params
+               case 0: /* child - start server */
+                       set_me_server ();
+                       server_init (params->debug, params->foreground);
++                      if (pledge("stdio rpath wpath cpath inet unix audio", 
NULL) == -1)
++                              fatal ("pledge() failed: %s", strerror(errno));
+                       rc = write (notify_pipe[1], &i, sizeof(i));
+                       if (rc < 0)
+                               fatal ("write() to notify pipe failed: %s", 
xstrerror (errno));
+@@ -216,6 +220,8 @@ static void start_moc (const struct parameters *params
+       if (params->only_server)
+               send_int (server_sock, CMD_DISCONNECT);
+       else {
 +              if (pledge("stdio rpath wpath cpath flock unix tty proc", NULL) 
== -1)
 +                      fatal ("pledge() failed: %s", strerror(errno));
-               signal (SIGPIPE, SIG_IGN);
-               if (ping_server(server_sock)) {
-                       if (!params->dont_run_iface) {
-@@ -800,6 +806,9 @@ int main (int argc, char *argv[])
-       struct utsname uts;
- #endif
+               xsignal (SIGPIPE, SIG_IGN);
+               if (!ping_server (server_sock))
+                       fatal ("Can't connect to the server!");
+@@ -1202,6 +1208,9 @@ int main (int argc, const char *argv[])
+       mocp_argc = argc;
+       mocp_argv = argv;
  
 +      if (pledge("stdio rpath wpath cpath flock inet unix dns tty proc 
prot_exec audio", NULL) == -1)
 +              fatal ("pledge() failed: %s", strerror(errno));
@@ -38,19 +41,20 @@ Index: main.c
  #ifdef PACKAGE_REVISION
        logit ("This is Music On Console (revision %s)", PACKAGE_REVISION);
  #else
-@@ -852,11 +861,12 @@ int main (int argc, char *argv[])
+@@ -1265,12 +1274,14 @@ int main (int argc, const char *argv[])
        io_init ();
        rcc_init ();
        decoder_init (params.debug);
 -      srand (time(NULL));
  
--      if (!params.only_server && params.dont_run_iface)
-+      if (!params.only_server && params.dont_run_iface) {
+       if (params.allow_iface)
+               start_moc (&params, args);
+-      else
++      else {
 +              if (pledge("cpath rpath stdio unix", NULL) == -1)
 +                      fatal ("pledge() failed: %s", strerror(errno));
                server_command (&params, args);
--      else
-+      } else
-               start_moc (&params, args);
++      }
  
        lists_strs_free (args);
+       options_free ();
Index: patches/patch-mocp_1
===================================================================
RCS file: /cvs/ports/audio/moc/patches/patch-mocp_1,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-mocp_1
--- patches/patch-mocp_1        11 Mar 2022 18:20:18 -0000      1.2
+++ patches/patch-mocp_1        21 Nov 2024 10:23:44 -0000
@@ -1,7 +1,8 @@
 Fix paths in manual.
 
---- mocp.1.orig        Sun Apr 24 06:23:30 2016
-+++ mocp.1     Sun Jun  5 13:16:37 2016
+Index: mocp.1
+--- mocp.1.orig
++++ mocp.1
 @@ -58,10 +58,8 @@ Implies \fB\-S\fP.  Run the server in foreground and l
  .TP
  \fB\-R\fP \fINAME\fP[\fB:\fP...], \
@@ -15,7 +16,7 @@ Fix paths in manual.
  .LP
  .TP
  \fB\-m\fP, \fB\-\-music\-dir\fP
-@@ -123,7 +121,7 @@ file currently being played.
+@@ -128,7 +126,7 @@ file currently being played.
  .TP
  \fB\-T\fP \fITHEME\fP, \fB\-\-theme\fP \fITHEME\fP
  Use a theme file.  If the path is not absolute, the file will be searched
@@ -24,7 +25,7 @@ Fix paths in manual.
  \fB~/.moc/themes/\fP and the current directory.
  .LP
  .TP
-@@ -143,7 +141,7 @@ allows the new values to be picked up by substitutions
+@@ -152,7 +150,7 @@ allows the new values to be picked up by substitutions
  options are overridden afterwards (which gives the choice of whether the
  configured values are replaced or added to).
  .IP
@@ -33,7 +34,7 @@ Fix paths in manual.
  of the options available.
  .LP
  .RS
-@@ -261,7 +259,7 @@ MOC directory for the configuration file, socket, the 
+@@ -440,7 +438,7 @@ MOC directory for the configuration file, socket, the 
  .TP
  .B ~/.moc/config
  Configuration file for MOC.  The format is very simple; to see how to use
@@ -42,7 +43,7 @@ Fix paths in manual.
  with the program.  The example file fully describes all the configuration
  options, and so is a useful reference when using the \fB\-O\fP option.  As
  this file can specify commands which invoke other applications MOC will
-@@ -271,11 +269,11 @@ it is writable by anyone other than its owner.
+@@ -460,11 +458,11 @@ variable above.)
  .TP
  .B ~/.moc/themes
  .TQ
Index: patches/patch-playlist_c
===================================================================
RCS file: /cvs/ports/audio/moc/patches/patch-playlist_c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-playlist_c
--- patches/patch-playlist_c    11 Mar 2022 18:20:18 -0000      1.2
+++ patches/patch-playlist_c    21 Nov 2024 10:23:44 -0000
@@ -1,14 +1,14 @@
 Replace rand(3)-based computation with arc4random_uniform(3).
 
---- playlist.c.orig    Sun Jun  5 13:54:04 2016
-+++ playlist.c Sun Jun  5 13:58:53 2016
-@@ -774,8 +774,7 @@ void plist_shuffle (struct plist *plist)
+Index: playlist.c
+--- playlist.c.orig
++++ playlist.c
+@@ -846,7 +846,7 @@ void plist_shuffle (struct plist *plist)
        int i;
  
-       for (i = 0; i < plist->num; i++)
--              plist_swap (plist, i,
--                              (rand()/(float)RAND_MAX) * (plist->num - 1));
+       for (i = 0; i < plist->num; i += 1)
+-              plist_swap (plist, i, (rand () / (float)RAND_MAX) * (plist->num 
- 1));
 +              plist_swap (plist, i, arc4random_uniform(plist->num));
  
-       rb_clear (&plist->search_tree);
+       rb_tree_clear (plist->search_tree);
  
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/moc/pkg/PLIST,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 PLIST
--- pkg/PLIST   21 Nov 2024 07:00:52 -0000      1.5
+++ pkg/PLIST   21 Nov 2024 10:23:44 -0000
@@ -2,6 +2,7 @@
 lib/moc/
 lib/moc/decoder_plugins/
 @so lib/moc/decoder_plugins/libaac_decoder.so
+@so lib/moc/decoder_plugins/libffmpeg_decoder.so
 @so lib/moc/decoder_plugins/libflac_decoder.so
 @so lib/moc/decoder_plugins/libmodplug_decoder.so
 @so lib/moc/decoder_plugins/libmp3_decoder.so
@@ -11,6 +12,7 @@ lib/moc/decoder_plugins/
 @so lib/moc/decoder_plugins/libvorbis_decoder.so
 @so lib/moc/decoder_plugins/libwavpack_decoder.so
 @man man/man1/mocp.1
+share/applications/mocp.desktop
 share/doc/moc/
 share/doc/moc/README
 share/doc/moc/README_equalizer
@@ -18,14 +20,23 @@ share/doc/moc/THANKS
 share/examples/moc/
 share/examples/moc/config.example
 share/examples/moc/keymap.example
+share/icons/hicolor/scalable/apps/mocp.svg
 share/moc/
 share/moc/themes/
+share/moc/themes/black_orange_theme
 share/moc/themes/black_theme
+share/moc/themes/blue_theme
 share/moc/themes/darkdot_theme
 share/moc/themes/example_theme
 share/moc/themes/green_theme
+share/moc/themes/lcars
+share/moc/themes/lcars2
 share/moc/themes/moca_theme
 share/moc/themes/nightly_theme
 share/moc/themes/red_theme
 share/moc/themes/transparent-background
+share/moc/themes/white_theme
+share/moc/themes/winter
 share/moc/themes/yellow_red_theme
+@tag update-desktop-database
+@tag gtk-update-icon-cache %D/share/icons/hicolor

Reply via email to