diff options
Diffstat (limited to 'source')
40 files changed, 1249 insertions, 40 deletions
diff --git a/source/ap/diffstat/diffstat.url b/source/ap/diffstat/diffstat.url index 93042284e..9679704e4 100644 --- a/source/ap/diffstat/diffstat.url +++ b/source/ap/diffstat/diffstat.url @@ -1 +1 @@ -ftp://ftp.invisible-island.net/diffstat/ +https://invisible-island.net/archives/diffstat/ diff --git a/source/ap/moc/0001-Refreshed-opus-patch-from-Tomasz-Golinski-tomaszg-al.patch b/source/ap/moc/0001-Refreshed-opus-patch-from-Tomasz-Golinski-tomaszg-al.patch new file mode 100644 index 000000000..60751bdd3 --- /dev/null +++ b/source/ap/moc/0001-Refreshed-opus-patch-from-Tomasz-Golinski-tomaszg-al.patch @@ -0,0 +1,586 @@ +From 9cff5bc22740bf80e59b76f20ccaa2888d9d6426 Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Sun, 27 Nov 2016 12:12:43 +0100 +Subject: [PATCH] Refreshed opus patch from Tomasz Golinski + <tomaszg@alpha.uwb.edu.pl> + +--- + decoder_plugins/Makefile.am | 4 + + decoder_plugins/decoders.m4 | 1 + + decoder_plugins/opus/Makefile.am | 6 + + decoder_plugins/opus/opus.c | 473 +++++++++++++++++++++++++++++++++++++++ + decoder_plugins/opus/opus.m4 | 25 +++ + options.c | 4 +- + 6 files changed, 511 insertions(+), 2 deletions(-) + create mode 100644 decoder_plugins/opus/Makefile.am + create mode 100644 decoder_plugins/opus/opus.c + create mode 100644 decoder_plugins/opus/opus.m4 + +diff --git a/decoder_plugins/Makefile.am b/decoder_plugins/Makefile.am +index 32a6376..d746099 100644 +--- a/decoder_plugins/Makefile.am ++++ b/decoder_plugins/Makefile.am +@@ -16,6 +16,10 @@ if BUILD_vorbis + SUBDIRS += vorbis + endif + ++if BUILD_opus ++ SUBDIRS += opus ++endif ++ + if BUILD_flac + SUBDIRS += flac + endif +diff --git a/decoder_plugins/decoders.m4 b/decoder_plugins/decoders.m4 +index 77bc2b3..a851967 100644 +--- a/decoder_plugins/decoders.m4 ++++ b/decoder_plugins/decoders.m4 +@@ -20,6 +20,7 @@ m4_include(decoder_plugins/flac/flac.m4) + m4_include(decoder_plugins/modplug/modplug.m4) + m4_include(decoder_plugins/mp3/mp3.m4) + m4_include(decoder_plugins/musepack/musepack.m4) ++m4_include(decoder_plugins/opus/opus.m4) + m4_include(decoder_plugins/sidplay2/sidplay2.m4) + m4_include(decoder_plugins/sndfile/sndfile.m4) + m4_include(decoder_plugins/speex/speex.m4) +diff --git a/decoder_plugins/opus/Makefile.am b/decoder_plugins/opus/Makefile.am +new file mode 100644 +index 0000000..d0c183d +--- /dev/null ++++ b/decoder_plugins/opus/Makefile.am +@@ -0,0 +1,6 @@ ++lib_LTLIBRARIES = libopus_decoder.la ++libdir = $(plugindir)/$(DECODER_PLUGIN_DIR) ++libopus_decoder_la_LDFLAGS = @PLUGIN_LDFLAGS@ ++libopus_decoder_la_LIBADD = $(OPUSFILE_LIBS) ++libopus_decoder_la_CFLAGS = $(OPUSFILE_CFLAGS) -I$(top_srcdir) ++libopus_decoder_la_SOURCES = opus.c +diff --git a/decoder_plugins/opus/opus.c b/decoder_plugins/opus/opus.c +new file mode 100644 +index 0000000..6cc9d55 +--- /dev/null ++++ b/decoder_plugins/opus/opus.c +@@ -0,0 +1,473 @@ ++/* ++ * MOC - music on console ++ * Copyright (C) 2002 - 2005 Damian Pietras <daper@daper.net> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include <string.h> ++#include <strings.h> ++#include <stdio.h> ++#include <errno.h> ++#include <assert.h> ++#include <opusfile.h> ++ ++#define DEBUG ++ ++#include "common.h" ++#include "log.h" ++#include "decoder.h" ++#include "io.h" ++#include "audio.h" ++ ++ ++struct opus_data ++{ ++ struct io_stream *stream; ++ OggOpusFile *of; ++ int last_section; ++ opus_int32 bitrate; ++ opus_int32 avg_bitrate; ++ int duration; ++ struct decoder_error error; ++ int ok; /* was this stream successfully opened? */ ++ int tags_change; /* the tags were changed from the last call of ++ ogg_current_tags */ ++ struct file_tags *tags; ++}; ++ ++ ++static void get_comment_tags (OggOpusFile *of, struct file_tags *info) ++{ ++ int i; ++ const OpusTags *comments; ++ ++ comments = op_tags (of, -1); ++ for (i = 0; i < comments->comments; i++) { ++ if (!strncasecmp(comments->user_comments[i], "title=", ++ strlen ("title="))) ++ info->title = xstrdup(comments->user_comments[i] ++ + strlen ("title=")); ++ else if (!strncasecmp(comments->user_comments[i], ++ "artist=", strlen ("artist="))) ++ info->artist = xstrdup ( ++ comments->user_comments[i] ++ + strlen ("artist=")); ++ else if (!strncasecmp(comments->user_comments[i], ++ "album=", strlen ("album="))) ++ info->album = xstrdup ( ++ comments->user_comments[i] ++ + strlen ("album=")); ++ else if (!strncasecmp(comments->user_comments[i], ++ "tracknumber=", ++ strlen ("tracknumber="))) ++ info->track = atoi (comments->user_comments[i] ++ + strlen ("tracknumber=")); ++ else if (!strncasecmp(comments->user_comments[i], ++ "track=", strlen ("track="))) ++ info->track = atoi (comments->user_comments[i] ++ + strlen ("track=")); ++ } ++} ++ ++/* Return a malloc()ed description of an op_*() error. */ ++static char *opus_str_error (const int code) ++{ ++ char *err; ++ ++ switch (code) { ++ case OP_FALSE: ++ err = "Request was not successful"; ++ break; ++ case OP_EOF: ++ err = "End Of File"; ++ break; ++ case OP_HOLE: ++ err = "Hole in stream"; ++ break; ++ case OP_EREAD: ++ err = "An underlying read, seek, or tell operation failed."; ++ break; ++ case OP_EFAULT: ++ err = "Internal (Opus) logic fault"; ++ break; ++ case OP_EIMPL: ++ err = "Unimplemented feature"; ++ break; ++ case OP_EINVAL: ++ err = "Invalid argument"; ++ break; ++ case OP_ENOTFORMAT: ++ err = "Not an Opus file"; ++ break; ++ case OP_EBADHEADER: ++ err = "Invalid or corrupt header"; ++ break; ++ case OP_EVERSION: ++ err = "Opus header version mismatch"; ++ break; ++ case OP_EBADPACKET: ++ err = "An audio packet failed to decode properly"; ++ break; ++ case OP_ENOSEEK: ++ err = "Requested seeking in unseekable stream"; ++ break; ++ case OP_EBADTIMESTAMP: ++ err = "File timestamps fail sanity tests"; ++ break; ++ default: ++ err = "Unknown error"; ++ } ++ ++ return xstrdup (err); ++} ++ ++ ++/* Fill info structure with data from ogg comments */ ++static void opus_tags (const char *file_name, struct file_tags *info, ++ const int tags_sel) ++{ ++ OggOpusFile *of; ++ int err_code; ++ ++ // op_test() is faster than op_open(), but we can't read file time with it. ++ if (tags_sel & TAGS_TIME) { ++ of = op_open_file(file_name,&err_code); ++ if (err_code < 0) { ++ char *opus_err = opus_str_error (err_code); ++ ++ logit ("Can't open %s: %s", file_name, opus_err); ++ free (opus_err); ++ op_free(of); ++ ++ return; ++ } ++ } ++ else { ++ of = op_open_file(file_name,&err_code); ++ if (err_code < 0) { ++ char *opus_err = opus_str_error (err_code); ++ ++ logit ("Can't open %s: %s", file_name, opus_err); ++ free (opus_err); ++ op_free (of); ++ ++ return; ++ } ++ } ++ ++ if (tags_sel & TAGS_COMMENTS) ++ get_comment_tags (of, info); ++ ++ if (tags_sel & TAGS_TIME) { ++ ogg_int64_t opus_time; ++ ++ opus_time = op_pcm_total (of, -1); ++ if (opus_time >= 0) ++ info->time = opus_time / 48000; ++ debug("Duration tags: %d, samples %lld",info->time,(long long)opus_time); ++ } ++ ++ op_free (of); ++} ++ ++static int read_callback (void *datasource, unsigned char *ptr, int bytes) ++{ ++ ssize_t res; ++ ++ res = io_read (datasource, ptr, bytes); ++ ++ if (res < 0) { ++ logit ("Read error"); ++ res = -1; ++ } ++ ++ return res; ++} ++ ++static int seek_callback (void *datasource, opus_int64 offset, int whence) ++{ ++ debug ("Seek request to %ld (%s)", (long)offset, ++ whence == SEEK_SET ? "SEEK_SET" ++ : (whence == SEEK_CUR ? "SEEK_CUR" : "SEEK_END")); ++ return io_seek (datasource, offset, whence)<0 ? -1 : 0; ++} ++ ++static int close_callback (void *datasource ATTR_UNUSED) ++{ ++ return 0; ++} ++ ++static opus_int64 tell_callback (void *datasource) ++{ ++ return io_tell (datasource); ++} ++ ++static void opus_open_stream_internal (struct opus_data *data) ++{ ++ int res; ++ OpusFileCallbacks callbacks = { ++ read_callback, ++ seek_callback, ++ tell_callback, ++ close_callback ++ }; ++ ++ data->tags = tags_new (); ++ ++ data->of = op_open_callbacks(data->stream, &callbacks, NULL, 0, &res); ++ if (res < 0) { ++ char *opus_err = opus_str_error (res); ++ ++ decoder_error (&data->error, ERROR_FATAL, 0, "%s", ++ opus_err); ++ debug ("op_open error: %s", opus_err); ++ free (opus_err); ++ op_free (data->of); ++ data->of = NULL; ++ io_close (data->stream); ++ } ++ else { ++ ogg_int64_t samples; ++ data->last_section = -1; ++ data->avg_bitrate = op_bitrate (data->of, -1) / 1000; ++ data->bitrate = data->avg_bitrate; ++ samples = op_pcm_total (data->of, -1); ++ if (samples == OP_EINVAL) ++ data->duration = -1; ++ else ++ data->duration =samples/48000; ++ debug("Duration: %d, samples %lld",data->duration,(long long)samples); ++ data->ok = 1; ++ get_comment_tags (data->of, data->tags); ++ } ++} ++ ++static void *opus_open (const char *file) ++{ ++ struct opus_data *data; ++ data = (struct opus_data *)xmalloc (sizeof(struct opus_data)); ++ data->ok = 0; ++ ++ decoder_error_init (&data->error); ++ data->tags_change = 0; ++ data->tags = NULL; ++ ++ data->stream = io_open (file, 1); ++ if (!io_ok(data->stream)) { ++ decoder_error (&data->error, ERROR_FATAL, 0, ++ "Can't load Opus: %s", ++ io_strerror(data->stream)); ++ io_close (data->stream); ++ } ++ else ++ opus_open_stream_internal (data); ++ ++ return data; ++} ++ ++static int opus_can_decode (struct io_stream *stream) ++{ ++ char buf[36]; ++ ++ if (io_peek (stream, buf, 36) == 36 && !memcmp (buf, "OggS", 4) ++ && !memcmp (buf + 28, "OpusHead", 8)) ++ return 1; ++ ++ return 0; ++} ++ ++static void *opus_open_stream (struct io_stream *stream) ++{ ++ struct opus_data *data; ++ ++ data = (struct opus_data *)xmalloc (sizeof(struct opus_data)); ++ data->ok = 0; ++ ++ decoder_error_init (&data->error); ++ data->stream = stream; ++ opus_open_stream_internal (data); ++ ++ return data; ++} ++ ++static void opus_close (void *prv_data) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ if (data->ok) { ++ op_free (data->of); ++ io_close (data->stream); ++ } ++ ++ decoder_error_clear (&data->error); ++ if (data->tags) ++ tags_free (data->tags); ++ free (data); ++} ++ ++static int opus_seek (void *prv_data, int sec) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ assert (sec >= 0); ++ ++ return op_pcm_seek (data->of, sec * (ogg_int64_t)48000)<0 ? -1 : sec; ++} ++ ++static int opus_decodeX (void *prv_data, char *buf, int buf_len, ++ struct sound_params *sound_params) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ int ret; ++ int current_section; ++ int bitrate; ++ ++ decoder_error_clear (&data->error); ++ ++ while (1) { ++#ifdef HAVE_OPUSFILE_FLOAT ++ ret = op_read_float(data->of, (float *)buf, buf_len/sizeof(float), ¤t_section); ++debug("opus float!"); ++#else ++ ret = op_read(data->of, (opus_int16 *)buf, buf_len/sizeof(opus_int16), ¤t_section); ++debug("opus fixed!"); ++#endif ++ if (ret == 0) ++ return 0; ++ if (ret < 0) { ++ decoder_error (&data->error, ERROR_STREAM, 0, ++ "Error in the stream!"); ++ continue; ++ } ++ ++ if (current_section != data->last_section) { ++ logit ("section change or first section"); ++ ++ data->last_section = current_section; ++ data->tags_change = 1; ++ tags_free (data->tags); ++ data->tags = tags_new (); ++ get_comment_tags (data->of, data->tags); ++ } ++ ++ sound_params->channels = op_channel_count (data->of, current_section); ++ sound_params->rate = 48000; ++#ifdef HAVE_OPUSFILE_FLOAT ++ sound_params->fmt = SFMT_FLOAT; ++ ret *= sound_params->channels * sizeof(float); ++#else ++ sound_params->fmt = SFMT_S16 | SFMT_NE; ++ ret *= sound_params->channels * sizeof(opus_int16); ++#endif ++ /* Update the bitrate information */ ++ bitrate = op_bitrate_instant (data->of); ++ if (bitrate > 0) ++ data->bitrate = bitrate / 1000; ++ ++ break; ++ } ++ return ret; ++} ++ ++static int opus_current_tags (void *prv_data, struct file_tags *tags) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ tags_copy (tags, data->tags); ++ ++ if (data->tags_change) { ++ data->tags_change = 0; ++ return 1; ++ } ++ ++ return 0; ++} ++ ++ ++static int opus_get_bitrate (void *prv_data) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ return data->bitrate; ++} ++ ++static int opus_get_avg_bitrate (void *prv_data) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ return data->avg_bitrate; ++} ++ ++static int opus_get_duration (void *prv_data) ++{ ++ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ return data->duration; ++} ++ ++static struct io_stream *opus_get_stream (void *prv_data) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ return data->stream; ++} ++ ++static void opus_get_name (const char *file ATTR_UNUSED, char buf[4]) ++{ ++ strcpy (buf, "OPS"); ++} ++ ++static int opus_our_format_ext (const char *ext) ++{ ++ return !strcasecmp (ext, "opus"); ++} ++ ++static void opus_get_error (void *prv_data, struct decoder_error *error) ++{ ++ struct opus_data *data = (struct opus_data *)prv_data; ++ ++ decoder_error_copy (error, &data->error); ++} ++ ++static int opus_our_mime (const char *mime) ++{ ++ return !strcasecmp (mime, "audio/ogg") ++ || !strcasecmp (mime, "audio/ogg; codecs=opus"); ++} ++ ++static struct decoder opus_decoder = { ++ DECODER_API_VERSION, ++ NULL, ++ NULL, ++ opus_open, ++ opus_open_stream, ++ opus_can_decode, ++ opus_close, ++ opus_decodeX, ++ opus_seek, ++ opus_tags, ++ opus_get_bitrate, ++ opus_get_duration, ++ opus_get_error, ++ opus_our_format_ext, ++ opus_our_mime, ++ opus_get_name, ++ opus_current_tags, ++ opus_get_stream, ++ opus_get_avg_bitrate ++}; ++ ++struct decoder *plugin_init () ++{ ++ return &opus_decoder; ++} +diff --git a/decoder_plugins/opus/opus.m4 b/decoder_plugins/opus/opus.m4 +new file mode 100644 +index 0000000..08cceb9 +--- /dev/null ++++ b/decoder_plugins/opus/opus.m4 +@@ -0,0 +1,25 @@ ++dnl opus ++ ++AC_ARG_WITH(opus, AS_HELP_STRING([--without-opus], ++ [Compile without Opus support])) ++ ++ if test "x$with_opus" != "xno" ++ then ++ PKG_CHECK_MODULES(OPUSFILE, ++ [opusfile >= 0.1], ++ [AC_SUBST(OPUSFILE_LIBS) ++ AC_SUBST(OPUSFILE_CFLAGS) ++ want_opus="yes" ++ DECODER_PLUGINS="$DECODER_PLUGINS opus"], ++ [true]) ++ if test "x$want_opus" = "xyes" ++ then ++ AC_SEARCH_LIBS(op_read_float, opusfile, ++ [AC_DEFINE([HAVE_OPUSFILE_FLOAT], 1, ++ [Define to 1 if you have the `op_read_float' function.])]) ++ fi ++ ++ fi ++ ++AM_CONDITIONAL([BUILD_opus], [test "$want_opus"]) ++AC_CONFIG_FILES([decoder_plugins/opus/Makefile]) +diff --git a/options.c b/options.c +index 62835ac..bb97b94 100644 +--- a/options.c ++++ b/options.c +@@ -659,9 +659,9 @@ void options_init () + "audio/aac(aac):audio/aacp(aac):audio/m4a(ffmpeg):" + "audio/wav(sndfile,*):" + "ogg(vorbis,*,ffmpeg):oga(vorbis,*,ffmpeg):ogv(ffmpeg):" +- "application/ogg(vorbis):audio/ogg(vorbis):" ++ "application/ogg(vorbis,opus):audio/ogg(vorbis,opus):" + "flac(flac,*,ffmpeg):" +- "opus(ffmpeg):" ++ "opus(opus,ffmpeg):" + "spx(speex)", + CHECK_FUNCTION); + +-- +2.10.2 + diff --git a/source/ap/moc/0002-Adapted-the-opus-patch-to-config.example.in.patch b/source/ap/moc/0002-Adapted-the-opus-patch-to-config.example.in.patch new file mode 100644 index 000000000..f4995f100 --- /dev/null +++ b/source/ap/moc/0002-Adapted-the-opus-patch-to-config.example.in.patch @@ -0,0 +1,22 @@ +From 0ce08aec4fda7077845aa483667b6bd2a9421bbb Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Sun, 27 Nov 2016 12:19:29 +0100 +Subject: [PATCH] Adapted the opus patch to config.example.in + +--- + config.example.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: debian-git/config.example.in +=================================================================== +--- debian-git.orig/config.example.in ++++ debian-git/config.example.in +@@ -399,7 +399,7 @@ + #PreferredDecoders += ogg(vorbis,*,ffmpeg):oga(vorbis,*,ffmpeg):ogv(ffmpeg) + #PreferredDecoders += application/ogg(vorbis):audio/ogg(vorbis) + #PreferredDecoders += flac(flac,*,ffmpeg) +-#PreferredDecoders += opus(ffmpeg) ++#PreferredDecoders += opus(opus,ffmpeg) + #PreferredDecoders += spx(speex) + + # Which resampling method to use. There are a few methods of resampling diff --git a/source/ap/moc/0003-The-AX_PATH_BDB_NO_OPTIONS-is-broken.patch b/source/ap/moc/0003-The-AX_PATH_BDB_NO_OPTIONS-is-broken.patch new file mode 100644 index 000000000..8989e3101 --- /dev/null +++ b/source/ap/moc/0003-The-AX_PATH_BDB_NO_OPTIONS-is-broken.patch @@ -0,0 +1,26 @@ +From 4b5144d7997246d1e5ab7be7daec8bbc2ecd3b89 Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Sun, 10 Feb 2019 08:32:09 +0100 +Subject: [PATCH] The AX_PATH_BDB_NO_OPTIONS is broken + +for cross compilation and that breaks moc. Pass -P to $ac_cpp. +--- + m4/ax_path_bdb.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/m4/ax_path_bdb.m4 b/m4/ax_path_bdb.m4 +index 585218d..461d423 100644 +--- a/m4/ax_path_bdb.m4 ++++ b/m4/ax_path_bdb.m4 +@@ -179,7 +179,7 @@ AX_PATH_BDB_STUFF DB_VERSION_MAJOR,DB_VERSION_MINOR,DB_VERSION_PATCH + ]]) + ],[ + # Extract version from preprocessor output. +- HEADER_VERSION=`eval "$ac_cpp conftest.$ac_ext" 2> /dev/null \ ++ HEADER_VERSION=`eval "$ac_cpp -P conftest.$ac_ext" 2> /dev/null \ + | grep AX_PATH_BDB_STUFF | sed 's/[[^0-9,]]//g;s/,/./g;1q'` + ],[]) + +-- +2.20.1 + diff --git a/source/ap/moc/0004_playtime_perc.patch b/source/ap/moc/0004_playtime_perc.patch new file mode 100644 index 000000000..14683ca12 --- /dev/null +++ b/source/ap/moc/0004_playtime_perc.patch @@ -0,0 +1,27 @@ +From 23a0cdc97e54bc8ac5edc0fca84aaf27bc34d910 Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Mon, 30 Jul 2018 07:31:13 +0200 +Subject: [PATCH] Assign "Switch on/off play time percentage" + +--- + keys.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/keys.c b/keys.c +index 7ff052e..c1a7dfa 100644 +--- a/keys.c ++++ b/keys.c +@@ -204,8 +204,8 @@ static struct command commands[] = { + "toggle_percent", + "Switch on/off play time percentage", + CON_MENU, +- { -1 }, +- 0 ++ {CTRL('p'), -1 }, ++ 1 + }, + { + KEY_CMD_PLIST_ADD_FILE, +-- +2.18.0 + diff --git a/source/ap/moc/0008-Rename-configure.in-to-configure.ac.patch b/source/ap/moc/0008-Rename-configure.in-to-configure.ac.patch new file mode 100644 index 000000000..d927d216f --- /dev/null +++ b/source/ap/moc/0008-Rename-configure.in-to-configure.ac.patch @@ -0,0 +1,18 @@ +From 9637b87ddeb33f6c04d17b090605fb5ee21cc243 Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Sat, 25 Jun 2022 16:18:58 +0300 +Subject: [PATCH] Rename configure.in to configure.ac + +Signed-off-by: Elimar Riesebieter <riesebie@lxtec.de> +--- + configure.in => configure.ac | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + rename configure.in => configure.ac (100%) + +diff --git a/configure.in b/configure.ac +similarity index 100% +rename from configure.in +rename to configure.ac +-- +2.36.1 + diff --git a/source/ap/moc/0009-Add-https-to-is_url.patch b/source/ap/moc/0009-Add-https-to-is_url.patch new file mode 100644 index 000000000..9d3ec0552 --- /dev/null +++ b/source/ap/moc/0009-Add-https-to-is_url.patch @@ -0,0 +1,25 @@ +From 868951edfb1cb719fcc662b93d6b19e658f6dfde Mon Sep 17 00:00:00 2001 +From: Elimar Riesebieter <riesebie@lxtec.de> +Date: Sun, 30 Oct 2022 10:01:19 +0100 +Subject: [PATCH] Add https to is_url + +Signed-off-by: Elimar Riesebieter <riesebie@lxtec.de> +--- + files.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/files.c b/files.c +index 16aa4b6..ed59217 100644 +--- a/files.c ++++ b/files.c +@@ -85,6 +85,7 @@ void files_cleanup () + inline int is_url (const char *str) + { + return !strncasecmp (str, "http://", sizeof ("http://") - 1) ++ || !strncasecmp (str, "https://", sizeof ("https://") - 1) + || !strncasecmp (str, "ftp://", sizeof ("ftp://") - 1); + } + +-- +2.37.2 + diff --git a/source/ap/moc/0010-ffmpeg-6.0.patch b/source/ap/moc/0010-ffmpeg-6.0.patch new file mode 100644 index 000000000..743d1a939 --- /dev/null +++ b/source/ap/moc/0010-ffmpeg-6.0.patch @@ -0,0 +1,23 @@ +From: Shengjing Zhu <zhsj@debian.org> +Date: Wed, 13 Sep 2023 11:04:52 +0800 +Subject: ffmpeg 6.0 + +ffmpeg 6.0 removed AV_CODEC_*_TRUNCATED api. + +--- + decoder_plugins/ffmpeg/ffmpeg.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/decoder_plugins/ffmpeg/ffmpeg.c b/decoder_plugins/ffmpeg/ffmpeg.c +index 64afe04..e26c804 100644 +--- a/decoder_plugins/ffmpeg/ffmpeg.c ++++ b/decoder_plugins/ffmpeg/ffmpeg.c +@@ -762,8 +762,6 @@ static void *ffmpeg_open_internal (struct ffmpeg_data *data) + } + + set_downmixing (data); +- if (data->codec->capabilities & AV_CODEC_CAP_TRUNCATED) +- data->enc->flags |= AV_CODEC_FLAG_TRUNCATED; + + if (avcodec_open2 (data->enc, data->codec, NULL) < 0) + { diff --git a/source/ap/moc/moc.SlackBuild b/source/ap/moc/moc.SlackBuild index aafb57b5f..673f9c28e 100755 --- a/source/ap/moc/moc.SlackBuild +++ b/source/ap/moc/moc.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2011, 2013, 2018, 2019, 2022 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2011, 2013, 2018, 2019, 2022, 2024 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=moc VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d -)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -78,9 +78,16 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -zcat $CWD/0005-avcodec-include.patch.gz | patch -p1 --verbose || exit 1 -zcat $CWD/0006-uncast-warnings.patch.gz | patch -p1 --verbose || exit 1 -zcat $CWD/0007-cur-dts.patch.gz | patch -p1 --verbose || exit 1 +cat $CWD/0001-Refreshed-opus-patch-from-Tomasz-Golinski-tomaszg-al.patch | patch -p1 --verbose || exit 1 +cat $CWD/0002-Adapted-the-opus-patch-to-config.example.in.patch | patch -p1 --verbose || exit 1 +cat $CWD/0003-The-AX_PATH_BDB_NO_OPTIONS-is-broken.patch | patch -p1 --verbose || exit 1 +cat $CWD/0004_playtime_perc.patch | patch -p1 --verbose || exit 1 +cat $CWD/0005-avcodec-include.patch | patch -p1 --verbose || exit 1 +cat $CWD/0006-uncast-warnings.patch | patch -p1 --verbose || exit 1 +cat $CWD/0007-cur-dts.patch | patch -p1 --verbose || exit 1 +cat $CWD/0008-Rename-configure.in-to-configure.ac.patch | patch -p1 --verbose || exit 1 +cat $CWD/0009-Add-https-to-is_url.patch | patch -p1 --verbose || exit 1 +cat $CWD/0010-ffmpeg-6.0.patch | patch -p1 --verbose || exit 1 # Configure: if [ ! -r configure ]; then diff --git a/source/d/nv-codec-headers/fetch-sources.sh b/source/d/nv-codec-headers/fetch-sources.sh new file mode 100755 index 000000000..5443e429f --- /dev/null +++ b/source/d/nv-codec-headers/fetch-sources.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +VERSION=${VERSION:-12.1.14.0} + +rm -rf nv-codec-headers-*.tar.?z* + +git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git nv-codec-headers + +cd nv-codec-headers + git checkout n$VERSION +cd .. + +mv nv-codec-headers nv-codec-headers-$VERSION + +tar --exclude-vcs -cf nv-codec-headers-$VERSION.tar nv-codec-headers-$VERSION +plzip -9 nv-codec-headers-$VERSION.tar + +rm -rf nv-codec-headers-$VERSION diff --git a/source/d/nv-codec-headers/nv-codec-headers.SlackBuild b/source/d/nv-codec-headers/nv-codec-headers.SlackBuild new file mode 100755 index 000000000..6879efba7 --- /dev/null +++ b/source/d/nv-codec-headers/nv-codec-headers.SlackBuild @@ -0,0 +1,104 @@ +#!/bin/bash + +# Copyright 2022 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2024 Heinz Wiesinger, Amsterdam, The Netherlands +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=nv-codec-headers +VERSION=${VERSION:-$(echo nv-codec-headers-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf nv-codec-headers-$VERSION +tar xvf $CWD/nv-codec-headers-$VERSION.tar.?z || exit 1 +cd nv-codec-headers-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +make \ + $NUMJOBS \ + PREFIX=/usr \ + LIBDIR=/lib$LIBDIRSUFFIX \ + DESTDIR=$PKG \ + install || exit 1 + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a README \ + $PKG/usr/doc/$PKGNAM-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/source/d/nv-codec-headers/slack-desc b/source/d/nv-codec-headers/slack-desc new file mode 100644 index 000000000..663375af2 --- /dev/null +++ b/source/d/nv-codec-headers/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +nv-codec-headers: nv-codec-headers (Headers for NVidia's codec APIs) +nv-codec-headers: +nv-codec-headers: FFmpeg version of headers required to interface with NVidia's codec +nv-codec-headers: APIs. +nv-codec-headers: +nv-codec-headers: +nv-codec-headers: +nv-codec-headers: +nv-codec-headers: +nv-codec-headers: +nv-codec-headers: diff --git a/source/kde/kde/build/digikam b/source/kde/kde/build/digikam index 00750edc0..b8626c4cf 100644 --- a/source/kde/kde/build/digikam +++ b/source/kde/kde/build/digikam @@ -1 +1 @@ -3 +4 diff --git a/source/kde/kde/build/ffmpegthumbs b/source/kde/kde/build/ffmpegthumbs index d00491fd7..0cfbf0888 100644 --- a/source/kde/kde/build/ffmpegthumbs +++ b/source/kde/kde/build/ffmpegthumbs @@ -1 +1 @@ -1 +2 diff --git a/source/kde/kde/build/k3b b/source/kde/kde/build/k3b index d00491fd7..0cfbf0888 100644 --- a/source/kde/kde/build/k3b +++ b/source/kde/kde/build/k3b @@ -1 +1 @@ -1 +2 diff --git a/source/kde/kde/build/kfilemetadata b/source/kde/kde/build/kfilemetadata index d00491fd7..0cfbf0888 100644 --- a/source/kde/kde/build/kfilemetadata +++ b/source/kde/kde/build/kfilemetadata @@ -1 +1 @@ -1 +2 diff --git a/source/kde/kde/build/kpipewire b/source/kde/kde/build/kpipewire index d00491fd7..0cfbf0888 100644 --- a/source/kde/kde/build/kpipewire +++ b/source/kde/kde/build/kpipewire @@ -1 +1 @@ -1 +2 diff --git a/source/l/alsa-plugins/alsa-plugins.SlackBuild b/source/l/alsa-plugins/alsa-plugins.SlackBuild index f349bca92..dc83faeba 100755 --- a/source/l/alsa-plugins/alsa-plugins.SlackBuild +++ b/source/l/alsa-plugins/alsa-plugins.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=alsa-plugins VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} diff --git a/source/l/ffmpeg/250471ea1745fc703eb346a2a662304536a311b1.patch b/source/l/ffmpeg/250471ea1745fc703eb346a2a662304536a311b1.patch new file mode 100644 index 000000000..b735415ae --- /dev/null +++ b/source/l/ffmpeg/250471ea1745fc703eb346a2a662304536a311b1.patch @@ -0,0 +1,25 @@ +From 250471ea1745fc703eb346a2a662304536a311b1 Mon Sep 17 00:00:00 2001 +From: Sebastian Ramacher <sramacher@debian.org> +Date: Sun, 12 Nov 2023 18:46:28 +0100 +Subject: [PATCH] avcoded/fft: Fix memory leak if ctx2 is used + +Signed-off-by: James Almer <jamrial@gmail.com> +--- + libavcodec/avfft.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c +index 3ef076d222..999b5ed79a 100644 +--- a/libavcodec/avfft.c ++++ b/libavcodec/avfft.c +@@ -130,6 +130,7 @@ av_cold void av_mdct_end(FFTContext *s) + { + if (s) { + AVTXWrapper *w = (AVTXWrapper *)s; ++ av_tx_uninit(&w->ctx2); + av_tx_uninit(&w->ctx); + av_free(w); + } +-- +2.25.1 + diff --git a/source/l/ffmpeg/ffmpeg.SlackBuild b/source/l/ffmpeg/ffmpeg.SlackBuild index 9be957bca..1553821b0 100755 --- a/source/l/ffmpeg/ffmpeg.SlackBuild +++ b/source/l/ffmpeg/ffmpeg.SlackBuild @@ -2,8 +2,8 @@ # Slackware build script for ffmpeg -# Copyright 2010-2017 Heinz Wiesinger, Amsterdam, The Netherlands -# Copyright 2017, 2018, 2022, 2023 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2010-2024 Heinz Wiesinger, Amsterdam, The Netherlands +# Copyright 2017, 2018, 2022, 2024 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -30,7 +30,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=ffmpeg VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} if [ -z "$ARCH" ]; then case "$( uname -m )" in @@ -89,13 +89,25 @@ fi # - xz # - zlib +# Select one of these for HTTPS support +ssl="" ; [ "${OPENSSL:-no}" != "no" ] && \ + { ssl="--enable-openssl" ; non_free="--enable-nonfree" ; } +gnutls="" ; [ "${GNUTLS:-yes}" != "no" ] && gnutls="--enable-gnutls" + +# Select one of these for RTMP[E] support +librtmp="" ; [ "${RTMP:-no}" != "no" ] && librtmp="--enable-librtmp" +gmp="" ; [ "${GMP:-no}" != "no" ] && gmp="--enable-gmp" +libgcrypt="" ; [ "${GCRYPT:-yes}" != "no" ] && libgcrypt="--enable-gcrypt" + +# Select one of these for GLSL->SPIRV compilation (Required for Vulkan support) +libglslang="" ; [ "${GLSLANG:-no}" != "no" ] && libglslang="--enable-libglslang" +shaderc="" ; [ "${SHADERC:-yes}" != "no" ] && libshaderc="--enable-libshaderc" + libx264="" ; [ "${X264:-no}" != "no" ] && libx264="--enable-libx264" libcelt="" ; [ "${CELT:-no}" != "no" ] && libcelt="--enable-libcelt" libdc1394="" ; [ "${DC1394:-no}" != "no" ] && libdc1394="--enable-libdc1394" libgsm="" ; [ "${GSM:-no}" != "no" ] && libgsm="--enable-libgsm" -librtmp="" ; [ "${RTMP:-no}" != "no" ] && librtmp="--enable-librtmp" libxvid="" ; [ "${XVID:-no}" != "no" ] && libxvid="--enable-libxvid" -libass="" ; [ "${ASS:-no}" != "no" ] && libass="--enable-libass" libiec61883=""; [ "${IEC61883:-no}" != "no" ] && libiec61883="--enable-libiec61883" libilbc="" ; [ "${ILBC:-no}" != "no" ] && libilbc="--enable-libilbc" libmodplug="" ; [ "${MODPLUG:-no}" != "no" ] && libmodplug="--enable-libmodplug" @@ -104,7 +116,6 @@ ladspa="" ; [ "${LADSPA:-no}" != "no" ] && ladspa="--enable-ladspa" libflite="" ; [ "${FLITE:-no}" != "no" ] && libflite="--enable-libflite" libx265="" ; [ "${X265:-no}" != "no" ] && libx265="--enable-libx265" libzvbi="" ; [ "${ZVBI:-no}" != "no" ] && libzvbi="--enable-libzvbi" -libopencv="" ; [ "${OPENCV:-no}" != "no" ] && libopencv="--enable-libopencv" libgme="" ; [ "${GME:-no}" != "no" ] && libgme="--enable-libgme" libsnappy="" ; [ "${SNAPPY:-no}" != "no" ] && libsnappy="--enable-libsnappy" libzmq="" ; [ "${ZMQ:-no}" != "no" ] && libzmq="--enable-libzmq" @@ -126,19 +137,28 @@ opencore_amr="" ; [ "${OPENCORE:-no}" != "no" ] && \ opencore_amr="--enable-libopencore-amrnb --enable-libopencore-amrwb" fdk="" ; [ "${FDK_AAC:-no}" != "no" ] && \ { fdk="--enable-libfdk-aac"; non_free="--enable-nonfree" ; } -ssl="" ; [ "${OPENSSL:-no}" != "no" ] && \ - { ssl="--enable-openssl" ; non_free="--enable-nonfree" ; } decklink="" ; [ "${DECKLINK:-no}" != "no" ] && \ { decklink="--enable-decklink" ; \ SLKCFLAGS="$SLKCFLAGS -I/usr/include/decklink" ; } -liblensfun="" ; [ "${LENSFUN:-no}" != "no" ] && liblensfun="--enable-liblensfun" +libaribb24="" ; [ "${ARIBB24:-no}" != "no" ] && libaribb24="--enable-libaribb24" +libjxl="" ; [ "${JXL:-no}" != "no" ] && libjxl="--enable-libjxl" +librist="" ; [ "${RIST:-no}" != "no" ] && librist="--enable-librist" +libshine="" ; [ "${SHINE:-no}" != "no" ] && libshine="--enable-libshine" +svtav1="" ; [ "${SVTAV1:-no}" != "no" ] && svtav1="--enable-libsvtav1" +libmysofa="" ; [ "${MYSOFA:-no}" != "no" ] && libmysofa="--enable-libmysofa" +libxavs2="" ; [ "${XAVS2:-no}" != "no" ] && libxavs2="--enable-libxavs2" libvmaf="" ; [ "${VMAF:-no}" != "no" ] && libvmaf="--enable-libvmaf" +# Needs older opencv than we ship. See https://trac.ffmpeg.org/ticket/7059 +libopencv="" ; [ "${OPENCV:-no}" != "no" ] && libopencv="--enable-libopencv" + +# Needs newer lensfun than we ship. See https://trac.ffmpeg.org/ticket/9112 +liblensfun="" ; [ "${LENSFUN:-no}" != "no" ] && liblensfun="--enable-liblensfun" + # Default enabled features: fontconfig="" ; [ "${FONTCONFIG:-yes}" != "no" ] && fontconfig="--enable-libfontconfig" freetype="" ; [ "${FREETYPE:-yes}" != "no" ] && freetype="--enable-libfreetype" fribidi="" ; [ "${FRIBIDI:-yes}" != "no" ] && fribidi="--enable-libfribidi" -gnutls="" ; [ "${GNUTLS:-yes}" != "no" ] && gnutls="--enable-gnutls" libbluray="" ; [ "${BLURAY:-yes}" != "no" ] && libbluray="--enable-libbluray" libcaca="" ; [ "${CACA:-yes}" != "no" ] && libcaca="--enable-libcaca" libcdio="" ; [ "${LIBCDIO:-yes}" != "no" ] && libcdio="--enable-libcdio" @@ -162,8 +182,10 @@ libvidstab="" ; [ "${VIDSTAB:-yes}" != "no" ] && libvidstab="--enable-libvid libxml2="" ; [ "${LIBXML2:-yes}" != "no" ] && libxml2="--enable-libxml2" librsvg="" ; [ "${LIBRSVG:-yes}" != "no" ] && librsvg="--enable-librsvg" libdrm="" ; [ "${LIBDRM:-yes}" != "no" ] && libdrm="--enable-libdrm" -libglslang="" ; [ "${GLSLANG:-yes}" != "no" ] && libglslang="--enable-libglslang" vulkan="" ; [ "${VULKAN:-yes}" != "no" ] && vulkan="--enable-vulkan" +libass="" ; [ "${ASS:-yes}" != "no" ] && libass="--enable-libass" +libplacebo="" ; [ "${PLACEBO:-yes}" != "no" ] && libplacebo="--enable-libplacebo" +lcms2="" ; [ "${LCMS2:-yes}" != "no" ] && lcms2="--enable-lcms2" # No default patent encumbered features: aac="" ; [ "${AAC:-no}" = "no" ] && aac="--disable-encoder=aac" @@ -172,7 +194,7 @@ rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf $PKGNAM-$VERSION -tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +tar xf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 cd $PKGNAM-$VERSION || exit 1 chown -R root:root . @@ -188,6 +210,9 @@ zcat $CWD/add-av_stream_get_first_dts-for-chromium.patch.gz | patch -p1 --verbos # Build against recent Vulkan: zcat $CWD/ffmpeg.vulkan.diff.gz | patch -p1 --verbose || exit 1 +# Fix ctx memory leak: +zcat $CWD/250471ea1745fc703eb346a2a662304536a311b1.patch | patch -p1 --verbose || exit 1 + CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ @@ -256,7 +281,6 @@ CXXFLAGS="$SLKCFLAGS" \ $ssl \ $tesseract \ $liblensfun \ - $libvmaf \ $libxml2 \ $librsvg \ $vulkan \ @@ -271,7 +295,20 @@ CXXFLAGS="$SLKCFLAGS" \ $libsoxr \ $libsrt \ $libzimg \ - $vapoursynth || exit 1 + $vapoursynth \ + $libshaderc \ + $libgcrypt \ + $libplacebo \ + $lcms2 \ + $gmp \ + $libaribb24 \ + $libjxl \ + $librist \ + $libshine \ + $svtav1 \ + $libmysofa \ + $libxavs2 \ + $libvmaf || exit 1 make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 diff --git a/source/l/gegl/gegl.SlackBuild b/source/l/gegl/gegl.SlackBuild index 3f037bd23..c583158cd 100755 --- a/source/l/gegl/gegl.SlackBuild +++ b/source/l/gegl/gegl.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gegl VERSION=${VERSION:-$(echo gegl-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/gst-plugins-bad-free/gst-plugins-bad-free.SlackBuild b/source/l/gst-plugins-bad-free/gst-plugins-bad-free.SlackBuild index 17d9735ba..f6e40311b 100755 --- a/source/l/gst-plugins-bad-free/gst-plugins-bad-free.SlackBuild +++ b/source/l/gst-plugins-bad-free/gst-plugins-bad-free.SlackBuild @@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gst-plugins-bad-free VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/gst-plugins-libav/gst-plugins-libav.SlackBuild b/source/l/gst-plugins-libav/gst-plugins-libav.SlackBuild index fce74fbe7..6c06c0622 100755 --- a/source/l/gst-plugins-libav/gst-plugins-libav.SlackBuild +++ b/source/l/gst-plugins-libav/gst-plugins-libav.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gst-plugins-libav VERSION=${VERSION:-$(echo gst-libav-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/libass/libass.SlackBuild b/source/l/libass/libass.SlackBuild new file mode 100755 index 000000000..3faf80af7 --- /dev/null +++ b/source/l/libass/libass.SlackBuild @@ -0,0 +1,120 @@ +#!/bin/bash + +# Written by Larry Hajali <larryhaja[at]gmail[dot]com> +# Copyright 2011-2018 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy +# Copyright 2024 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=libass +VERSION=${VERSION:-$(echo libass-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf libass-$VERSION +tar xvf $CWD/libass-$VERSION.tar.?z || exit 1 +cd libass-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +# Configure, build, and install: +if [ ! -r configure ]; then + if [ -x ./autogen.sh ]; then + NOCONFIGURE=1 ./autogen.sh + else + autoreconf -vif + fi +fi +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-static=no \ + --disable-silent-rules \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || exit 1 +make install-strip DESTDIR=$PKG || exit 1 + +rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/*.la + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a Changelog COPYING* MAINTAINERS* README* \ + $PKG/usr/doc/$PKGNAM-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/source/l/libass/libass.url b/source/l/libass/libass.url new file mode 100644 index 000000000..1daba4ba7 --- /dev/null +++ b/source/l/libass/libass.url @@ -0,0 +1 @@ +https://github.com/libass/libass diff --git a/source/l/libass/slack-desc b/source/l/libass/slack-desc new file mode 100644 index 000000000..540f32401 --- /dev/null +++ b/source/l/libass/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +libass: libass (Subtitle renderer for the ASS/SSA) +libass: +libass: libass is a portable subtitle renderer for the ASS/SSA (Advanced +libass: Substation Alpha/Substation Alpha) subtitle format. It is mostly +libass: compatible with VSFilter. +libass: +libass: Homepage: https://github.com/libass/libass +libass: +libass: +libass: +libass: diff --git a/source/l/libplacebo/libplacebo.SlackBuild b/source/l/libplacebo/libplacebo.SlackBuild new file mode 100755 index 000000000..608324215 --- /dev/null +++ b/source/l/libplacebo/libplacebo.SlackBuild @@ -0,0 +1,112 @@ +#!/bin/bash + +# Copyright 2019-2020 Hunter Sezen California, USA +# Copyright 2024 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=libplacebo +VERSION=${VERSION:-$(echo libplacebo-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d- | rev)} +BUILD=${BUILD:-1} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +# Configure, build, and install: +export CFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS" +mkdir meson-build +cd meson-build +meson setup \ + --prefix=/usr \ + --libdir=lib${LIBDIRSUFFIX} \ + --libexecdir=/usr/libexec \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --includedir=/usr/include \ + --datadir=/usr/share \ + --mandir=/usr/man \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --buildtype=release \ + -D demos=false \ + -D glslang=enabled \ + -D dovi=disabled \ + -D libdovi=disabled \ + -D d3d11=disabled \ + .. || exit 1 + "${NINJA:=ninja}" $NUMJOBS || exit 1 + DESTDIR=$PKG $NINJA install || exit 1 +cd .. + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a LICENSE* README* $PKG/usr/doc/$PKGNAM-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/source/l/libplacebo/libplacebo.url b/source/l/libplacebo/libplacebo.url new file mode 100644 index 000000000..2a08578b2 --- /dev/null +++ b/source/l/libplacebo/libplacebo.url @@ -0,0 +1 @@ +https://github.com/haasn/libplacebo diff --git a/source/l/libplacebo/slack-desc b/source/l/libplacebo/slack-desc new file mode 100644 index 000000000..e580bad41 --- /dev/null +++ b/source/l/libplacebo/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +libplacebo: libplacebo (GPU-accelerated video processing library) +libplacebo: +libplacebo: libplacebo is, in a nutshell, the core rendering algorithms and ideas +libplacebo: of mpv rewritten as an independent library. It contains a large +libplacebo: assortment of video processing shaders, focusing on both quality and +libplacebo: performance. +libplacebo: +libplacebo: Homepage: https://code.videolan.org/videolan/libplacebo +libplacebo: +libplacebo: +libplacebo: diff --git a/source/l/mlt/mlt.SlackBuild b/source/l/mlt/mlt.SlackBuild index 66c34e9bd..8a688f399 100755 --- a/source/l/mlt/mlt.SlackBuild +++ b/source/l/mlt/mlt.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=mlt VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/opencv/opencv.SlackBuild b/source/l/opencv/opencv.SlackBuild index 01b969bba..179c7bfc4 100755 --- a/source/l/opencv/opencv.SlackBuild +++ b/source/l/opencv/opencv.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=opencv VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/pipewire/pipewire.SlackBuild b/source/l/pipewire/pipewire.SlackBuild index f3dd30ae8..6c5ff7147 100755 --- a/source/l/pipewire/pipewire.SlackBuild +++ b/source/l/pipewire/pipewire.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=pipewire VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/qt5/qt5.SlackBuild b/source/l/qt5/qt5.SlackBuild index 1eb85dd75..941530891 100755 --- a/source/l/qt5/qt5.SlackBuild +++ b/source/l/qt5/qt5.SlackBuild @@ -31,7 +31,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=qt5 VERSION=$(ls qt-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} PKGSRC=$(echo $VERSION | cut -d - -f 1) PKGVER=$(echo $VERSION | tr - _) diff --git a/source/xap/MPlayer/MPlayer.SlackBuild b/source/xap/MPlayer/MPlayer.SlackBuild index 0f274ebb7..891497582 100755 --- a/source/xap/MPlayer/MPlayer.SlackBuild +++ b/source/xap/MPlayer/MPlayer.SlackBuild @@ -25,7 +25,7 @@ # Set initial variables: PKGNAM=MPlayer -VERSION=${VERSION:-20221009} +VERSION=${VERSION:-20240127} # Need to build trunk until there's a stable branch compatible with the # latest ffmpeg stable release: #BRANCH=${BRANCH:-1.3} # leave empty if you want to build MPlayer trunk diff --git a/source/xap/audacious-plugins/audacious-plugins.SlackBuild b/source/xap/audacious-plugins/audacious-plugins.SlackBuild index 3e3de478b..65d939a21 100755 --- a/source/xap/audacious-plugins/audacious-plugins.SlackBuild +++ b/source/xap/audacious-plugins/audacious-plugins.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=audacious-plugins VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Whether to include faad/aac support: FAAD=${FAAD:---disable-aac} diff --git a/source/xap/ffmpegthumbnailer/ffmpegthumbnailer.SlackBuild b/source/xap/ffmpegthumbnailer/ffmpegthumbnailer.SlackBuild index bc46b59cc..30d5f5627 100755 --- a/source/xap/ffmpegthumbnailer/ffmpegthumbnailer.SlackBuild +++ b/source/xap/ffmpegthumbnailer/ffmpegthumbnailer.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=ffmpegthumbnailer VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-4} +BUILD=${BUILD:-5} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/xap/freerdp/freerdp.SlackBuild b/source/xap/freerdp/freerdp.SlackBuild index 21e78ee05..6252d5db3 100755 --- a/source/xap/freerdp/freerdp.SlackBuild +++ b/source/xap/freerdp/freerdp.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=freerdp VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/xap/ssr/ssr.SlackBuild b/source/xap/ssr/ssr.SlackBuild index 583d2a105..faefebadc 100755 --- a/source/xap/ssr/ssr.SlackBuild +++ b/source/xap/ssr/ssr.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=ssr VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/xap/xine-lib/xine-lib.SlackBuild b/source/xap/xine-lib/xine-lib.SlackBuild index 111a30619..1f03f2619 100755 --- a/source/xap/xine-lib/xine-lib.SlackBuild +++ b/source/xap/xine-lib/xine-lib.SlackBuild @@ -32,7 +32,7 @@ DIRVER=1.2.13 # Version used for the Slackware package PKGVER=1.2.13 -BUILD=${BUILD:-5} +BUILD=${BUILD:-6} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/xap/xscreensaver/xscreensaver.SlackBuild b/source/xap/xscreensaver/xscreensaver.SlackBuild index 8d12829d5..ffc957672 100755 --- a/source/xap/xscreensaver/xscreensaver.SlackBuild +++ b/source/xap/xscreensaver/xscreensaver.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=xscreensaver VERSION=${VERSION:-$(echo xscreensaver-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then |