summaryrefslogtreecommitdiffstats
path: root/source/xap
diff options
context:
space:
mode:
Diffstat (limited to 'source/xap')
-rwxr-xr-xsource/xap/NetworkManager-openvpn/NetworkManager-openvpn.SlackBuild2
-rwxr-xr-xsource/xap/audacious-plugins/audacious-plugins.SlackBuild11
-rwxr-xr-xsource/xap/audacious/audacious.SlackBuild10
-rwxr-xr-xsource/xap/hexchat/hexchat.SlackBuild2
-rw-r--r--source/xap/mpv/doinst.sh26
-rw-r--r--source/xap/mpv/dynamically_generate_desktop_file_protocols.patch462
-rwxr-xr-xsource/xap/mpv/mpv.SlackBuild167
-rw-r--r--source/xap/mpv/mpv.url1
-rw-r--r--source/xap/mpv/slack-desc19
-rwxr-xr-xsource/xap/pan/pan.SlackBuild61
-rw-r--r--source/xap/pan/pan.url1
-rwxr-xr-xsource/xap/pidgin/pidgin.SlackBuild2
-rwxr-xr-xsource/xap/rxvt-unicode/rxvt-unicode.SlackBuild2
-rwxr-xr-xsource/xap/sane/sane.SlackBuild8
-rwxr-xr-xsource/xap/xaos/xaos.SlackBuild21
-rwxr-xr-xsource/xap/xscreensaver/xscreensaver.SlackBuild40
-rw-r--r--source/xap/xscreensaver/xscreensaver.setuid.diff179
-rwxr-xr-xsource/xap/xsnow/xsnow.SlackBuild2
18 files changed, 753 insertions, 263 deletions
diff --git a/source/xap/NetworkManager-openvpn/NetworkManager-openvpn.SlackBuild b/source/xap/NetworkManager-openvpn/NetworkManager-openvpn.SlackBuild
index a4659ac80..d68ec3f66 100755
--- a/source/xap/NetworkManager-openvpn/NetworkManager-openvpn.SlackBuild
+++ b/source/xap/NetworkManager-openvpn/NetworkManager-openvpn.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=NetworkManager-openvpn
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/xap/audacious-plugins/audacious-plugins.SlackBuild b/source/xap/audacious-plugins/audacious-plugins.SlackBuild
index 65d939a21..c199a295a 100755
--- a/source/xap/audacious-plugins/audacious-plugins.SlackBuild
+++ b/source/xap/audacious-plugins/audacious-plugins.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2017, 2018, 2020 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2017, 2018, 2020, 2024 Patrick J. Volkerding, Sebeka, MN, 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=audacious-plugins
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Whether to include faad/aac support:
FAAD=${FAAD:---disable-aac}
@@ -34,7 +34,7 @@ NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) export ARCH=i586 ;;
+ i?86) export ARCH=i686 ;;
arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) export ARCH=$( uname -m ) ;;
@@ -47,6 +47,11 @@ PKG=$TMP/package-${PKGNAM}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ # Looks like this is baseline now... maybe time to bump everything to at least i686
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686 -mfpmath=sse -msse -msse2"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
diff --git a/source/xap/audacious/audacious.SlackBuild b/source/xap/audacious/audacious.SlackBuild
index 204e96256..aa0c37e2c 100755
--- a/source/xap/audacious/audacious.SlackBuild
+++ b/source/xap/audacious/audacious.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2006-2021 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2024 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -31,7 +31,7 @@ NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) export ARCH=i586 ;;
+ i?86) export ARCH=i686 ;;
arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) export ARCH=$( uname -m ) ;;
@@ -52,6 +52,11 @@ PKG=$TMP/package-${PKGNAM}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ # Looks like this is baseline now... maybe time to bump everything to at least i686
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686 -mfpmath=sse -msse -msse2"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -86,6 +91,7 @@ find . \
# Configure:
CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
diff --git a/source/xap/hexchat/hexchat.SlackBuild b/source/xap/hexchat/hexchat.SlackBuild
index d1baf6d30..75d706127 100755
--- a/source/xap/hexchat/hexchat.SlackBuild
+++ b/source/xap/hexchat/hexchat.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=hexchat
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/xap/mpv/doinst.sh b/source/xap/mpv/doinst.sh
new file mode 100644
index 000000000..f125cba0e
--- /dev/null
+++ b/source/xap/mpv/doinst.sh
@@ -0,0 +1,26 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+for config in etc/mpv/*.conf.new ; do
+ config $config
+done
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/source/xap/mpv/dynamically_generate_desktop_file_protocols.patch b/source/xap/mpv/dynamically_generate_desktop_file_protocols.patch
new file mode 100644
index 000000000..33320e1bc
--- /dev/null
+++ b/source/xap/mpv/dynamically_generate_desktop_file_protocols.patch
@@ -0,0 +1,462 @@
+From f59d358752c2a63c94635511cd963bebb2706d64 Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Wed, 15 May 2024 09:03:14 -0500
+Subject: [PATCH 1/4] av_common: parent mp_get_lavf_demuxer contents to the
+ list
+
+The only usage of this function is freed in mpv's generic property code,
+so no other changes are needed.
+---
+ common/av_common.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/common/av_common.c b/common/av_common.c
+index 1a23d766b365..142699d4b4c6 100644
+--- a/common/av_common.c
++++ b/common/av_common.c
+@@ -265,7 +265,7 @@ char **mp_get_lavf_demuxers(void)
+ const AVInputFormat *cur = av_demuxer_iterate(&iter);
+ if (!cur)
+ break;
+- MP_TARRAY_APPEND(NULL, list, num, talloc_strdup(NULL, cur->name));
++ MP_TARRAY_APPEND(NULL, list, num, talloc_strdup(list, cur->name));
+ }
+ MP_TARRAY_APPEND(NULL, list, num, NULL);
+ return list;
+
+From 6692f87b61d48e1523d6e0ef3d311ffff6e89a6e Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Wed, 15 May 2024 19:22:32 -0500
+Subject: [PATCH 2/4] stream: implement get_protocols method for stream_lavf
+
+Previously, all stream protocols were a static list in mpv. This is okay
+for own builtin stuff, but for protocols that depend on ffmpeg it's not
+so great. Support for certain protocols may or may not be enabled in a
+user's ffmpeg and the protocol list that mpv generates should ideally
+match this. Fix this by implementing a get_protocols method for
+stream_lavf that will have different results depending on the ffmpeg mpv
+is built against. We keep the safe and unsafe protocols separation. The
+former is essentially a whitelist. Any protocol that is found in ffmpeg
+but is not in the safe whitelist is considered unsafe. In the stream
+list, ffmpeg is moved to the bottom so any possible protocols that are
+added in the future don't automatically take precedence over any builtin
+mpv ones.
+---
+ common/av_common.c | 12 +++++
+ common/av_common.h | 1 +
+ stream/stream.c | 44 ++++++++++++-------
+ stream/stream.h | 2 +
+ stream/stream_lavf.c | 102 ++++++++++++++++++++++++++++++++++++++-----
+ 5 files changed, 136 insertions(+), 25 deletions(-)
+
+diff --git a/common/av_common.c b/common/av_common.c
+index 142699d4b4c6..a4fa5981ff9f 100644
+--- a/common/av_common.c
++++ b/common/av_common.c
+@@ -271,6 +271,18 @@ char **mp_get_lavf_demuxers(void)
+ return list;
+ }
+
++char **mp_get_lavf_protocols(void)
++{
++ char **list = NULL;
++ int num = 0;
++ void *opaque = NULL;
++ const char *name;
++ while ((name = avio_enum_protocols(&opaque, 0)))
++ MP_TARRAY_APPEND(NULL, list, num, talloc_strdup(list, name));
++ MP_TARRAY_APPEND(NULL, list, num, NULL);
++ return list;
++}
++
+ int mp_codec_to_av_codec_id(const char *codec)
+ {
+ int id = AV_CODEC_ID_NONE;
+diff --git a/common/av_common.h b/common/av_common.h
+index c584085890c2..b019aa88e17a 100644
+--- a/common/av_common.h
++++ b/common/av_common.h
+@@ -42,6 +42,7 @@ void mp_set_avcodec_threads(struct mp_log *l, AVCodecContext *avctx, int threads
+ void mp_add_lavc_decoders(struct mp_decoder_list *list, enum AVMediaType type);
+ void mp_add_lavc_encoders(struct mp_decoder_list *list);
+ char **mp_get_lavf_demuxers(void);
++char **mp_get_lavf_protocols(void);
+ int mp_codec_to_av_codec_id(const char *codec);
+ const char *mp_codec_from_av_codec_id(int codec_id);
+ bool mp_codec_is_lossless(const char *codec);
+diff --git a/stream/stream.c b/stream/stream.c
+index 06dd92930c01..eca44e4afb37 100644
+--- a/stream/stream.c
++++ b/stream/stream.c
+@@ -66,8 +66,6 @@ static const stream_info_t *const stream_list[] = {
+ #if HAVE_CDDA
+ &stream_info_cdda,
+ #endif
+- &stream_info_ffmpeg,
+- &stream_info_ffmpeg_unsafe,
+ &stream_info_avdevice,
+ #if HAVE_DVBIN
+ &stream_info_dvb,
+@@ -92,6 +90,8 @@ static const stream_info_t *const stream_list[] = {
+ &stream_info_slice,
+ &stream_info_fd,
+ &stream_info_cb,
++ &stream_info_ffmpeg,
++ &stream_info_ffmpeg_unsafe,
+ };
+
+ // Because of guarantees documented on STREAM_BUFFER_SIZE.
+@@ -325,12 +325,17 @@ static int stream_create_instance(const stream_info_t *sinfo,
+ if (!sinfo->local_fs)
+ return STREAM_NO_MATCH;
+ } else {
+- for (int n = 0; sinfo->protocols && sinfo->protocols[n]; n++) {
+- path = match_proto(url, sinfo->protocols[n]);
++ char **get_protocols = sinfo->get_protocols ? sinfo->get_protocols() : NULL;
++ char **protocols = get_protocols ? get_protocols : (char **)sinfo->protocols;
++
++ for (int n = 0; protocols && protocols[n]; n++) {
++ path = match_proto(url, protocols[n]);
+ if (path)
+ break;
+ }
+
++ talloc_free(get_protocols);
++
+ if (!path)
+ return STREAM_NO_MATCH;
+ }
+@@ -864,16 +869,17 @@ char **stream_get_proto_list(void)
+ for (int i = 0; i < MP_ARRAY_SIZE(stream_list); i++) {
+ const stream_info_t *stream_info = stream_list[i];
+
+- if (!stream_info->protocols)
+- continue;
++ char **get_protocols = stream_info->get_protocols ? stream_info->get_protocols() : NULL;
++ char **protocols = get_protocols ? get_protocols : (char **)stream_info->protocols;
+
+- for (int j = 0; stream_info->protocols[j]; j++) {
+- if (*stream_info->protocols[j] == '\0')
+- continue;
++ for (int j = 0; protocols && protocols[j]; j++) {
++ if (*protocols[j] == '\0')
++ continue;
+
+- MP_TARRAY_APPEND(NULL, list, num,
+- talloc_strdup(NULL, stream_info->protocols[j]));
++ MP_TARRAY_APPEND(NULL, list, num, talloc_strdup(list, protocols[j]));
+ }
++
++ talloc_free(get_protocols);
+ }
+ MP_TARRAY_APPEND(NULL, list, num, NULL);
+ return list;
+@@ -888,7 +894,6 @@ void stream_print_proto_list(struct mp_log *log)
+ for (int i = 0; list[i]; i++) {
+ mp_info(log, " %s://\n", list[i]);
+ count++;
+- talloc_free(list[i]);
+ }
+ talloc_free(list);
+ mp_info(log, "\nTotal: %d protocols\n", count);
+@@ -899,10 +904,19 @@ bool stream_has_proto(const char *proto)
+ for (int i = 0; i < MP_ARRAY_SIZE(stream_list); i++) {
+ const stream_info_t *stream_info = stream_list[i];
+
+- for (int j = 0; stream_info->protocols && stream_info->protocols[j]; j++) {
+- if (strcmp(stream_info->protocols[j], proto) == 0)
+- return true;
++ bool match = false;
++ char **get_protocols = stream_info->get_protocols ? stream_info->get_protocols() : NULL;
++ char **protocols = get_protocols ? get_protocols : (char **)stream_info->protocols;
++
++ for (int j = 0; protocols && protocols[j]; j++) {
++ if (strcmp(protocols[j], proto) == 0) {
++ match = true;
++ break;
++ }
+ }
++
++ talloc_free(get_protocols);
++ return match;
+ }
+
+ return false;
+diff --git a/stream/stream.h b/stream/stream.h
+index 58b55e1a43ca..866affe1fef0 100644
+--- a/stream/stream.h
++++ b/stream/stream.h
+@@ -114,6 +114,8 @@ typedef struct stream_info_st {
+ // Alternative to open(). Only either open() or open2() can be set.
+ int (*open2)(struct stream *st, const struct stream_open_args *args);
+ const char *const *protocols;
++ // Alternative to protocols. For stream_lavf.
++ char **(*get_protocols)(void);
+ bool can_write; // correctly checks for READ/WRITE modes
+ bool local_fs; // supports STREAM_LOCAL_FS_ONLY
+ int stream_origin; // 0 or set of STREAM_ORIGIN_*; if 0, the same origin
+diff --git a/stream/stream_lavf.c b/stream/stream_lavf.c
+index a2db55146668..30c823c58f62 100644
+--- a/stream/stream_lavf.c
++++ b/stream/stream_lavf.c
+@@ -238,6 +238,96 @@ void mp_setup_av_network_options(AVDictionary **dict, const char *target_fmt,
+ talloc_free(temp);
+ }
+
++#define PROTO(...) (const char *[]){__VA_ARGS__, NULL}
++
++// List of safe protocols and their aliases
++static const char **safe_protos[] = {
++ PROTO("data"),
++ PROTO("gopher"),
++ PROTO("gophers"),
++ PROTO("http", "dav", "webdav"),
++ PROTO("httpproxy"),
++ PROTO("https", "davs", "webdavs"),
++ PROTO("ipfs"),
++ PROTO("ipns"),
++ PROTO("mmsh", "mms", "mmshttp"),
++ PROTO("mmst"),
++ PROTO("rist"),
++ PROTO("rtmp"),
++ PROTO("rtmpe"),
++ PROTO("rtmps"),
++ PROTO("rtmpt"),
++ PROTO("rtmpte"),
++ PROTO("rtmpts"),
++ PROTO("rtp"),
++ PROTO("srt"),
++ PROTO("srtp"),
++ NULL,
++};
++
++static char **get_safe_protocols(void)
++{
++ int num = 0;
++ char **protocols = NULL;
++ char **ffmpeg_demuxers = mp_get_lavf_demuxers();
++ char **ffmpeg_protos = mp_get_lavf_protocols();
++
++ for (int i = 0; ffmpeg_protos[i]; i++) {
++ for (int j = 0; safe_protos[j]; j++) {
++ if (strcmp(ffmpeg_protos[i], safe_protos[j][0]) != 0)
++ continue;
++ for (int k = 0; safe_protos[j][k]; k++)
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, safe_protos[j][k]));
++ break;
++ }
++ }
++
++ // rtsp is a demuxer not protocol in ffmpeg so it is handled separately
++ for (int i = 0; ffmpeg_demuxers[i]; i++) {
++ if (strcmp("rtsp", ffmpeg_demuxers[i]) == 0) {
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, "rtsp"));
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, "rtsps"));
++ break;
++ }
++ }
++
++ MP_TARRAY_APPEND(NULL, protocols, num, NULL);
++
++ talloc_free(ffmpeg_demuxers);
++ talloc_free(ffmpeg_protos);
++
++ return protocols;
++}
++
++static char **get_unsafe_protocols(void)
++{
++ int num = 0;
++ char **protocols = NULL;
++ char **safe_protocols = get_safe_protocols();
++ char **ffmpeg_protos = mp_get_lavf_protocols();
++
++ for (int i = 0; ffmpeg_protos[i]; i++) {
++ bool safe_protocol = false;
++ for (int j = 0; safe_protocols[j]; j++) {
++ if (strcmp(ffmpeg_protos[i], safe_protocols[j]) == 0) {
++ safe_protocol = true;
++ break;
++ }
++ }
++ if (!safe_protocol)
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, ffmpeg_protos[i]));
++ }
++
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, "ffmpeg"));
++ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, "lavf"));
++
++ MP_TARRAY_APPEND(NULL, protocols, num, NULL);
++
++ talloc_free(ffmpeg_protos);
++ talloc_free(safe_protocols);
++ return protocols;
++}
++
+ // Escape http URLs with unescaped, invalid characters in them.
+ // libavformat's http protocol does not do this, and a patch to add this
+ // in a 100% safe case (spaces only) was rejected.
+@@ -431,12 +431,7 @@ done:
+ const stream_info_t stream_info_ffmpeg = {
+ .name = "ffmpeg",
+ .open = open_f,
+- .protocols = (const char *const[]){
+- "rtmp", "rtsp", "rtsps", "http", "https", "mms", "mmst", "mmsh", "mmshttp",
+- "rtp", "httpproxy", "rtmpe", "rtmps", "rtmpt", "rtmpte", "rtmpts", "srt",
+- "rist", "srtp", "gopher", "gophers", "data", "ipfs", "ipns", "dav",
+- "davs", "webdav", "webdavs",
+- NULL },
++ .get_protocols = get_safe_protocols,
+ .can_write = true,
+ .stream_origin = STREAM_ORIGIN_NET,
+ };
+@@ -448,10 +443,7 @@ const stream_info_t stream_info_ffmpeg = {
+ const stream_info_t stream_info_ffmpeg_unsafe = {
+ .name = "ffmpeg",
+ .open = open_f,
+- .protocols = (const char *const[]){
+- "lavf", "ffmpeg", "udp", "ftp", "tcp", "tls", "unix", "sftp", "md5",
+- "concat", "smb",
+- NULL },
++ .get_protocols = get_unsafe_protocols,
+ .stream_origin = STREAM_ORIGIN_UNSAFE,
+ .can_write = true,
+ };
+
+From 0f4fa329357f27d0c57f8f13b426d7450a29cfa4 Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Tue, 14 May 2024 13:32:18 -0500
+Subject: [PATCH 3/4] build: dynamically generate mpv.desktop file protocols
+
+If we can run the built mpv binary, then it is possible to use a custom
+target that reads the protocols we have available in mpv and write the
+mpv.desktop file based on the output. For cases where this is not
+possible (e.g. cross compiling), then just install the unmodified
+mpv.desktop file like before. Fixes #8731 and fixes #14124.
+---
+ TOOLS/gen-mpv-desktop.py | 45 ++++++++++++++++++++++++++++++++++++++++
+ meson.build | 17 ++++++++++++++-
+ 2 files changed, 61 insertions(+), 1 deletion(-)
+ create mode 100755 TOOLS/gen-mpv-desktop.py
+
+diff --git a/TOOLS/gen-mpv-desktop.py b/TOOLS/gen-mpv-desktop.py
+new file mode 100755
+index 000000000000..2b05de1ec4cc
+--- /dev/null
++++ b/TOOLS/gen-mpv-desktop.py
+@@ -0,0 +1,45 @@
++#!/usr/bin/env python3
++
++# Modify X-KDE-Protocols in the mpv.desktop file based on output from
++# mpv --list-protocols.
++
++#
++# This file is part of mpv.
++#
++# mpv is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# mpv is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with mpv. If not, see <http://www.gnu.org/licenses/>.
++#
++
++import sys
++from subprocess import check_output
++
++if __name__ == "__main__":
++ with open(sys.argv[1], "r", encoding="UTF-8") as f:
++ next(f)
++ mpv_desktop = dict([line.split("=", 1) for line in f])
++
++ if not mpv_desktop["X-KDE-Protocols"]:
++ raise ValueError("Missing X-KDE-Protocols entry in mpv.desktop file")
++
++ mpv_protocols = check_output([sys.argv[2], "--list-protocols"], encoding="UTF-8")
++ mpv_protocols = set(line.strip(" :/") for line in mpv_protocols.splitlines() if "://" in line)
++ if len(mpv_protocols) == 0:
++ raise ValueError("Unable to parse any protocols from mpv '--list-protocols'")
++
++ protocol_list = set(mpv_desktop["X-KDE-Protocols"].strip().split(","))
++ mpv_desktop["X-KDE-Protocols"] = ",".join(sorted(mpv_protocols & protocol_list)) + "\n"
++
++ with open(sys.argv[3], "w", encoding="UTF-8") as f:
++ f.write("[Desktop Entry]" + "\n")
++ for key, value in mpv_desktop.items():
++ f.write(f"{key}={value}")
+diff --git a/meson.build b/meson.build
+index c14bf47d5614..ae1eb9cfd903 100644
+--- a/meson.build
++++ b/meson.build
+@@ -581,6 +581,7 @@ tools_directory = join_paths(source_root, 'TOOLS')
+ docutils_wrapper = find_program(join_paths(tools_directory, 'docutils-wrapper.py'))
+ file2string = find_program(join_paths(tools_directory, 'file2string.py'))
+ matroska = find_program(join_paths(tools_directory, 'matroska.py'))
++mpv_desktop = find_program(join_paths(tools_directory, 'gen-mpv-desktop.py'))
+
+ ebml_defs = custom_target('ebml_defs.inc',
+ output: 'ebml_defs.inc',
+@@ -1796,7 +1797,6 @@ if get_option('cplayer')
+ zsh_install_dir = join_paths(datadir, 'zsh', 'site-functions')
+ install_data('etc/_mpv.zsh', install_dir: zsh_install_dir, rename: '_mpv')
+
+- install_data('etc/mpv.desktop', install_dir: join_paths(datadir, 'applications'))
+ install_data('etc/mpv.metainfo.xml', install_dir: join_paths(datadir, 'metainfo'))
+ install_data('etc/encoding-profiles.conf', install_dir: join_paths(confdir, 'mpv'))
+
+@@ -1827,6 +1827,21 @@ if get_option('cplayer')
+ command: [osxbundle, mpv.full_path(), '@SOURCE_ROOT@'],
+ )
+ endif
++
++ if not win32 and not darwin
++ if meson.can_run_host_binaries()
++ mpv_desktop_path = join_paths(source_root, 'etc', 'mpv.desktop')
++ custom_target('mpv.desktop',
++ depends: mpv,
++ output: 'mpv.desktop',
++ command: [mpv_desktop, mpv_desktop_path, mpv.full_path(), '@OUTPUT@'],
++ install: true,
++ install_dir: join_paths(datadir, 'applications'),
++ )
++ else
++ install_data('etc/mpv.desktop', install_dir: join_paths(datadir, 'applications'))
++ endif
++ endif
+ endif
+
+ if get_option('tests')
+
+From 00506d51892c48cd91d3c88423f31df7b9328499 Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Wed, 22 May 2024 10:27:40 -0500
+Subject: [PATCH 4/4] stream_lavf: don't add ffmpeg bluray or dvd protocols
+
+The naming of these conflict with existing mpv protocols, so skip if we
+get them. Users can still use them via lavf://bluray: or lavf://dvd: if
+they wish.
+---
+ stream/stream_lavf.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/stream/stream_lavf.c b/stream/stream_lavf.c
+index 30c823c58f62..369f9cecc402 100644
+--- a/stream/stream_lavf.c
++++ b/stream/stream_lavf.c
+@@ -314,6 +314,10 @@ static char **get_unsafe_protocols(void)
+ break;
+ }
+ }
++ // Skip to avoid name conflict with builtin mpv protocol.
++ if (strcmp(ffmpeg_protos[i], "bluray") == 0 || strcmp(ffmpeg_protos[i], "dvd") == 0)
++ continue;
++
+ if (!safe_protocol)
+ MP_TARRAY_APPEND(NULL, protocols, num, talloc_strdup(protocols, ffmpeg_protos[i]));
+ }
diff --git a/source/xap/mpv/mpv.SlackBuild b/source/xap/mpv/mpv.SlackBuild
new file mode 100755
index 000000000..b91d20f9e
--- /dev/null
+++ b/source/xap/mpv/mpv.SlackBuild
@@ -0,0 +1,167 @@
+#!/bin/bash
+
+# Copyright 2015 John Vogel Corning, NY USA
+# Copyright 2017, 2018 (versions 0.25.0-0.29.1) Andreas Guldstrand
+# Copyright 2020-2023 Christoph Willing Brisbane Australia
+# Copyright 2024 Patrick J. Volkerding, Sebeka, Minnesota, 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=mpv
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-3}
+
+# 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 $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z || exit 1
+cd $PKGNAM-$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 {} \+
+
+cat $CWD/dynamically_generate_desktop_file_protocols.patch | patch -p1 --verbose || exit 1
+
+# 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 \
+ -Dmanpage-build=enabled \
+ -Dlibmpv=true \
+ -Dcdda=enabled \
+ -Ddvdnav=enabled \
+ -Ddvbin=enabled \
+ -Dcplugins=enabled \
+ -Diconv=enabled \
+ -Dlibarchive=enabled \
+ -Dlibbluray=enabled \
+ -Dsdl2=enabled \
+ -Dgl-x11=enabled \
+ -Dsdl2-gamepad=enabled \
+ -Dpulse=enabled \
+ -Dpipewire=enabled \
+ -Dsdl2-audio=enabled \
+ -Dopenal=enabled \
+ -Dlua=luajit \
+ -Djavascript=enabled \
+ .. || exit 1
+ "${NINJA:=ninja}" $NUMJOBS || exit 1
+ DESTDIR=$PKG $NINJA install || exit 1
+cd ..
+
+# This seems like a silly place to put the config files:
+rm -rf $PKG/usr/share/doc
+
+# Install all sample config files:
+cp -a etc/*.conf $PKG/etc/mpv
+chmod 644 $PKG/etc/mpv/*
+
+# Make config files .new:
+for config in $PKG/etc/mpv/* ; do
+ mv $config ${config}.new
+done
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ Copyright* LICENSE* README* RELEASE_NOTES* \
+ DOCS/*.{md,rst,txt} \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+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/xap/mpv/mpv.url b/source/xap/mpv/mpv.url
new file mode 100644
index 000000000..8c68abff1
--- /dev/null
+++ b/source/xap/mpv/mpv.url
@@ -0,0 +1 @@
+https://github.com/mpv-player/mpv
diff --git a/source/xap/mpv/slack-desc b/source/xap/mpv/slack-desc
new file mode 100644
index 000000000..dd1606f6c
--- /dev/null
+++ b/source/xap/mpv/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------------------------------------------------------|
+mpv: mpv (a command-line media player)
+mpv:
+mpv: mpv is a free (as in freedom) media player for the command line. It
+mpv: supports a wide variety of media file formats, audio and video codecs,
+mpv: and subtitle types. Powerful scripting capabilities can make the
+mpv: player do almost anything. While mpv strives for minimalism and
+mpv: provides no real GUI, it has a small controller on top of the video
+mpv: for basic control.
+mpv:
+mpv: Homepage: https://mpv.io/
+mpv:
diff --git a/source/xap/pan/pan.SlackBuild b/source/xap/pan/pan.SlackBuild
index fb7db80ab..b8ca0ab6b 100755
--- a/source/xap/pan/pan.SlackBuild
+++ b/source/xap/pan/pan.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2018, 2019, 2021, 2023 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2018, 2019, 2021, 2023, 2024 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -75,38 +75,33 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
-# Configure:
-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 \
- --localstatedir=/var/lib \
- --sysconfdir=/etc \
- --mandir=/usr/man \
- --with-gnutls \
- --with-gmime-crypto \
- --with-gtkspell \
- --enable-libnotify \
- --enable-gkr \
- --program-prefix= \
- --program-suffix= \
- --build=$ARCH-slackware-linux || exit 1
-
-# Build and install:
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
+# Configure, build, and install:
+mkdir cmake-build
+cd cmake-build
+ cmake \
+ -DCMAKE_C_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX="$LIBDIRSUFFIX" \
+ -DDOC_INSTALL_DIR="doc" \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DWANT_GNUTLS=ON \
+ -DWANT_GMIME_CRYPTO=ON \
+ -DWANT_GTKSPELL=ON \
+ -DWANT_NOTIFY=ON \
+ -DWANT_GKR=ON \
+ .. || exit 1
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd ..
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Move this since there's no config option for /usr/man:
+mv $PKG/usr/share/man $PKG/usr/man
+
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
@@ -122,18 +117,10 @@ if [ -d $PKG/usr/man ]; then
)
fi
-# Compress info files, if any:
-if [ -d $PKG/usr/info ]; then
- ( cd $PKG/usr/info
- rm -f dir
- gzip -9 *
- )
-fi
-
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING* NEWS README* TODO \
+ AUTHORS* COPYING* NEWS* README* TODO* \
$PKG/usr/doc/${PKGNAM}-$VERSION
# junk removal
rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/{README.mingw,README.windows*}
diff --git a/source/xap/pan/pan.url b/source/xap/pan/pan.url
index c9b9c2991..6d8e0ed4d 100644
--- a/source/xap/pan/pan.url
+++ b/source/xap/pan/pan.url
@@ -1 +1,2 @@
https://gitlab.gnome.org/GNOME/pan/
+https://gitlab.gnome.org/GNOME/pan/-/archive/v0.159/pan-v0.159.tar.gz
diff --git a/source/xap/pidgin/pidgin.SlackBuild b/source/xap/pidgin/pidgin.SlackBuild
index 627d1b1bf..6fab57a2d 100755
--- a/source/xap/pidgin/pidgin.SlackBuild
+++ b/source/xap/pidgin/pidgin.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=pidgin
VERSION=${VERSION:-$(echo $PKGNAM-2.*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
PIDGINENC=${PIDGINENC:-3.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/xap/rxvt-unicode/rxvt-unicode.SlackBuild b/source/xap/rxvt-unicode/rxvt-unicode.SlackBuild
index 0135cdab3..b161d2d34 100755
--- a/source/xap/rxvt-unicode/rxvt-unicode.SlackBuild
+++ b/source/xap/rxvt-unicode/rxvt-unicode.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=rxvt-unicode
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/xap/sane/sane.SlackBuild b/source/xap/sane/sane.SlackBuild
index 472aa849b..d8e40d7f3 100755
--- a/source/xap/sane/sane.SlackBuild
+++ b/source/xap/sane/sane.SlackBuild
@@ -23,7 +23,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=sane
-BACKVER=1.3.0
+BACKVER=1.3.1
FRONTVER=1.0.14
VERSION=${VERSION:-$BACKVER}
BUILD=${BUILD:-1}
@@ -73,9 +73,9 @@ mkdir -p $TMP $PKG
# First, we'll build the backends
cd $TMP
-rm -rf backends-$BACKVER
-tar xvf $CWD/backends-$BACKVER.tar.?z || exit 1
-cd backends-$BACKVER || exit 1
+rm -rf sane-backends-$BACKVER
+tar xvf $CWD/sane-backends-$BACKVER.tar.?z || exit 1
+cd sane-backends-$BACKVER || exit 1
chown -R root:root .
# Put the SANE_CAP_ALWAYS_SETTABLE definition back until
diff --git a/source/xap/xaos/xaos.SlackBuild b/source/xap/xaos/xaos.SlackBuild
index 0bd1f27a8..622c2b1fc 100755
--- a/source/xap/xaos/xaos.SlackBuild
+++ b/source/xap/xaos/xaos.SlackBuild
@@ -49,6 +49,27 @@ fi
NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "}
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ # Looks like this is baseline now... maybe time to bump everything to at least i686
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686 -mfpmath=sse -msse -msse2"
+ 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
diff --git a/source/xap/xscreensaver/xscreensaver.SlackBuild b/source/xap/xscreensaver/xscreensaver.SlackBuild
index ffc957672..1e287dcd8 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:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -71,20 +71,6 @@ rm -rf xscreensaver-$VERSION
tar xvf $CWD/xscreensaver-$VERSION.tar.?z || exit 1
cd xscreensaver-$VERSION
-if [ -L /lib${LIBDIRSUFFIX}/libpam.so.? ]; then
- USE_PAM="--with-pam"
- unset USE_SHADOW
-else
- ## NOTE: The patch below (and support for setgid shadow) is broken and
- ## unmaintained. But the broken bits will be left as hints for anyone
- ## down the line who might care.
- # Allow xscreensaver to work setgid shadow. I'd rather avoid requiring
- # setuid root on this if at all possible...
- #zcat $CWD/xscreensaver.setuid.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
- unset USE_PAM
- USE_SHADOW="--with-shadow"
-fi
-
# Add support for the electricsheep distributed screensaver:
zcat $CWD/xscreensaver.electricsheep.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
@@ -110,8 +96,7 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--with-app-defaults=/etc/X11/app-defaults \
--with-text-file=/usr/doc/netdate/COPYRIGHT \
- $USE_SHADOW \
- $USE_PAM \
+ --with-pam \
--without-kerberos \
--with-jpeg \
--with-gl \
@@ -121,22 +106,10 @@ CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install_prefix=$PKG install-strip || exit 1
-if [ -z $USE_PAM ]; then
- # Needed for password unlock:
- chown root:shadow $PKG/usr/bin/xscreensaver
- chmod 2751 $PKG/usr/bin/xscreensaver
-else
- ## Commenting out the chmod below, since as of v6.00 this binary is no longer
- ## made setuid at installation. But if that changes, we'll go along with it
- ## since jwz says it may be required to prevent OOM killer abuse from
- ## unlocking the screen.
- # No special perms needed with PAM:
- #chmod 755 $PKG/usr/bin/xscreensaver
- mkdir -p $PKG/etc/pam.d
- cat $CWD/xscreensaver.pam > $PKG/etc/pam.d/xscreensaver.new
- mkdir -p $PKG/install
- zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-fi
+# No special perms needed with PAM:
+#chmod 755 $PKG/usr/bin/xscreensaver
+mkdir -p $PKG/etc/pam.d
+cat $CWD/xscreensaver.pam > $PKG/etc/pam.d/xscreensaver.new
# This is needed for the menus:
mkdir -p $PKG/usr/share/pixmaps
@@ -168,6 +141,7 @@ fi
cat $CWD/xscreensaver-getimage-file-5.14 > $PKG/usr/bin/xscreensaver-getimage-file
mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/xap/xscreensaver/xscreensaver.setuid.diff b/source/xap/xscreensaver/xscreensaver.setuid.diff
deleted file mode 100644
index c6810af55..000000000
--- a/source/xap/xscreensaver/xscreensaver.setuid.diff
+++ /dev/null
@@ -1,179 +0,0 @@
---- ./driver/setuid.c.orig 2006-02-08 20:28:38.000000000 -0600
-+++ ./driver/setuid.c 2006-04-04 16:48:08.000000000 -0500
-@@ -1,5 +1,5 @@
- /* setuid.c --- management of runtime privileges.
-- * xscreensaver, Copyright (c) 1993-1998, 2005 Jamie Zawinski <jwz@jwz.org>
-+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@jwz.org>
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
-@@ -41,7 +41,7 @@
- struct group *g = 0;
- p = getpwuid (uid);
- g = getgrgid (gid);
-- sprintf (buf, "%.100s/%.100s (%ld/%ld)",
-+ sprintf (buf, "%s/%s (%ld/%ld)",
- (p && p->pw_name ? p->pw_name : "???"),
- (g && g->gr_name ? g->gr_name : "???"),
- (long) uid, (long) gid);
-@@ -74,50 +74,11 @@
- }
-
-
--/* Returns true if we need to call setgroups().
--
-- Without calling setgroups(), the process will retain any supplementary
-- gids associated with the uid, e.g.:
--
-- % groups root
-- root : root bin daemon sys adm disk wheel
--
-- However, setgroups() can only be called by root, and returns EPERM
-- for other users even if the call would be a no-op (e.g., setting the
-- group list to the current list.) So, to avoid that spurious error,
-- before calling setgroups() we first check whether the current list
-- of groups contains only one element, our target group. If so, we
-- don't need to call setgroups().
-- */
--static int
--setgroups_needed_p (uid_t target_group)
--{
-- gid_t groups[1024];
-- int n, size;
-- size = sizeof(groups) / sizeof(gid_t);
-- n = getgroups (size - 1, groups);
-- if (n < 0)
-- {
-- char buf [1024];
-- sprintf (buf, "%s: getgroups(%ld, ...)", blurb(), (long int)(size - 1));
-- perror (buf);
-- return 1;
-- }
-- else if (n == 0) /* an empty list means only egid is in effect. */
-- return 0;
-- else if (n == 1 && groups[0] == target_group) /* one element, the target */
-- return 0;
-- else /* more than one, or the wrong one. */
-- return 1;
--}
--
--
- static int
- set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
- {
- int uid_errno = 0;
- int gid_errno = 0;
-- int sgs_errno = 0;
- struct passwd *p = getpwuid (uid);
- struct group *g = getgrgid (gid);
-
-@@ -136,11 +97,6 @@
- if (uid == (uid_t) -1) uid = (uid_t) -2;
-
- errno = 0;
-- if (setgroups_needed_p (gid) &&
-- setgroups (1, &gid) < 0)
-- sgs_errno = errno ? errno : -1;
--
-- errno = 0;
- if (setgid (gid) != 0)
- gid_errno = errno ? errno : -1;
-
-@@ -148,10 +104,10 @@
- if (setuid (uid) != 0)
- uid_errno = errno ? errno : -1;
-
-- if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
-+ if (uid_errno == 0 && gid_errno == 0)
- {
- static char buf [1024];
-- sprintf (buf, "changed uid/gid to %.100s/%.100s (%ld/%ld).",
-+ sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).",
- (p && p->pw_name ? p->pw_name : "???"),
- (g && g->gr_name ? g->gr_name : "???"),
- (long) uid, (long) gid);
-@@ -162,71 +118,28 @@
- else
- {
- char buf [1024];
-- gid_t groups[1024];
-- int n, size;
--
-- if (sgs_errno)
-- {
-- sprintf (buf, "%s: couldn't setgroups to %.100s (%ld)",
-- blurb(),
-- (g && g->gr_name ? g->gr_name : "???"),
-- (long) gid);
-- if (sgs_errno == -1)
-- fprintf(stderr, "%s: unknown error\n", buf);
-- else
-- {
-- errno = sgs_errno;
-- perror(buf);
-- }
--
-- fprintf (stderr, "%s: effective group list: ", blurb());
-- size = sizeof(groups) / sizeof(gid_t);
-- n = getgroups (size - 1, groups);
-- if (n < 0)
-- fprintf (stderr, "unknown!\n");
-- else
-- {
-- int i;
-- fprintf (stderr, "[");
-- for (i = 0; i < n; i++)
-- {
-- g = getgrgid (groups[i]);
-- if (i > 0) fprintf (stderr, ", ");
-- if (g && g->gr_name) fprintf (stderr, "%s", g->gr_name);
-- else fprintf (stderr, "%ld", (long) groups[i]);
-- }
-- fprintf (stderr, "]\n");
-- }
-- }
--
- if (gid_errno)
- {
-- sprintf (buf, "%s: couldn't set gid to %.100s (%ld)",
-+ sprintf (buf, "%s: couldn't set gid to %s (%ld)",
- blurb(),
- (g && g->gr_name ? g->gr_name : "???"),
- (long) gid);
- if (gid_errno == -1)
- fprintf(stderr, "%s: unknown error\n", buf);
- else
-- {
-- errno = gid_errno;
-- perror(buf);
-- }
-+ perror(buf);
- }
-
- if (uid_errno)
- {
-- sprintf (buf, "%s: couldn't set uid to %.100s (%ld)",
-+ sprintf (buf, "%s: couldn't set uid to %s (%ld)",
- blurb(),
- (p && p->pw_name ? p->pw_name : "???"),
- (long) uid);
- if (uid_errno == -1)
- fprintf(stderr, "%s: unknown error\n", buf);
- else
-- {
-- errno = uid_errno;
-- perror(buf);
-- }
-+ perror(buf);
- }
-
- return -1;
-@@ -350,7 +263,7 @@
- !strcmp (p->pw_name, "games"))
- {
- static char buf [1024];
-- sprintf (buf, "running as %.100s",
-+ sprintf (buf, "running as %s",
- (p && p->pw_name && *p->pw_name
- ? p->pw_name : "<unknown>"));
- si->nolock_reason = buf;
diff --git a/source/xap/xsnow/xsnow.SlackBuild b/source/xap/xsnow/xsnow.SlackBuild
index def5c0d2f..dc4f87749 100755
--- a/source/xap/xsnow/xsnow.SlackBuild
+++ b/source/xap/xsnow/xsnow.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=xsnow
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