summaryrefslogtreecommitdiffstats
path: root/system/xar
diff options
context:
space:
mode:
Diffstat (limited to 'system/xar')
-rw-r--r--system/xar/patches/series7
-rw-r--r--system/xar/patches/xar-1.8.0.0.487-non-darwin.patch12
-rw-r--r--system/xar/patches/xar-1.8.0.0.487-variable-sized-object.patch18
-rw-r--r--system/xar/xar.SlackBuild54
-rw-r--r--system/xar/xar.info6
5 files changed, 79 insertions, 18 deletions
diff --git a/system/xar/patches/series b/system/xar/patches/series
new file mode 100644
index 0000000000..49d45200fe
--- /dev/null
+++ b/system/xar/patches/series
@@ -0,0 +1,7 @@
+xar-1.6.1-ext2.patch
+xar-1.8-safe_dirname.patch
+xar-1.8-arm-ppc.patch
+xar-1.8-openssl-1.1.patch
+xar-1.8.0.0.452-linux.patch
+xar-1.8.0.0.487-non-darwin.patch
+xar-1.8.0.0.487-variable-sized-object.patch
diff --git a/system/xar/patches/xar-1.8.0.0.487-non-darwin.patch b/system/xar/patches/xar-1.8.0.0.487-non-darwin.patch
new file mode 100644
index 0000000000..c350f69f4c
--- /dev/null
+++ b/system/xar/patches/xar-1.8.0.0.487-non-darwin.patch
@@ -0,0 +1,12 @@
+don't do availability stuff on non-Darwin
+
+--- a/include/xar.h.in
++++ b/include/xar.h.in
+@@ -52,6 +52,7 @@
+ #import <os/availability.h>
+ #else
+ #define API_DEPRECATED(...)
++#define API_AVAILABLE(...)
+ #endif
+
+ #pragma pack(4)
diff --git a/system/xar/patches/xar-1.8.0.0.487-variable-sized-object.patch b/system/xar/patches/xar-1.8.0.0.487-variable-sized-object.patch
new file mode 100644
index 0000000000..8779c1129c
--- /dev/null
+++ b/system/xar/patches/xar-1.8.0.0.487-variable-sized-object.patch
@@ -0,0 +1,18 @@
+GCC doesn't like this:
+
+filetree.c:744:9: error: variable-sized object may not be initialized
+
+Since there's nothing changing at runtime at all, just make the compiler
+see it's always going to be 1.
+
+--- a/lib/filetree.c
++++ b/lib/filetree.c
+@@ -740,7 +740,7 @@
+ size_t fspath1_size = 0, fspath2_size = 0;
+ size_t ns1_size = 0, ns2_size = 0;
+ const struct __xar_file_t * child1 = NULL, * child2 = NULL;
+- const uint keys_to_ignore_count = 1;
++#define keys_to_ignore_count 1
+ char * keys_to_ignore[keys_to_ignore_count] = { "id" }; // ID is allowed ot mismatch
+
+ // If the two pointers match, call it the same.
diff --git a/system/xar/xar.SlackBuild b/system/xar/xar.SlackBuild
index c2879c6d63..242854f5c9 100644
--- a/system/xar/xar.SlackBuild
+++ b/system/xar/xar.SlackBuild
@@ -13,18 +13,33 @@
# bother me.
# The original google code project is dead, and so is mackyle's github
-# project. The Apple project might be deprecated, but it was last
-# updated in 2020, so it's at least not ancient history.
+# project. The Apple github project might be deprecated, but it's
+# still being updated (as of August 2023).
-# For some reason, gentoo and other distros want to give this the
-# version number "1.8.0.0.452". Dunno where the extra zeroes come
-# from. "xar --version" reports "1.8dev", the tarball's version
-# number is the SVN revision, 452...
+# For some reason, gentoo and other distros want to give this version
+# numbers like "1.8.0.0.452". Dunno where the extra zeroes come from.
+# "xar --version" reports "1.8dev", the tarball's version number
+# is the SVN revision (452, 498, etc).
+
+# 20231118 bkw: update for v498.
+
+# 20230711 bkw: no script changes, just a note to myself: there's now
+# a 496 tag, and it won't compile either.
+
+# 20230106 bkw: apple quit hosting their own tarball, old URL is now
+# a redirect to a github generated one, script has to change to handle it.
+
+# 20221229 bkw: this is still being developed, code is at
+# https://github.com/apple-oss-distributions/xar/ but the latest tag
+# (494) won't compile, and I don't love this enough to spend time on
+# it right now. If it bothers you, fix it and send me a patch.
+
+# 20221229 bkw: BUILD=2, strip library (derp!)
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xar
-VERSION=${VERSION:-1.8dev+452}
+VERSION=${VERSION:-1.8dev+498}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -42,7 +57,6 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
exit 0
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -68,21 +82,30 @@ SRCVER="$( echo $VERSION | cut -d+ -f2 )"
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$SRCVER
-tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
-cd $PRGNAM-$SRCVER
+rm -rf $PRGNAM-$PRGNAM-$SRCVER
+tar xvf $CWD/$PRGNAM-$PRGNAM-$SRCVER.tar.gz
+cd $PRGNAM-$PRGNAM-$SRCVER
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
cd $PRGNAM
-# patches came from gentoo:
-# https://gitweb.gentoo.org/repo/gentoo.git/tree/app-arch/xar
-for i in $CWD/patches/*.patch; do
- patch -p1 < $i
+# Patches came from liguros:
+# https://gitlab.com/liguros/liguros-repo/-/tree/stable/app-arch/xar
+for i in $( cat $CWD/patches/series ); do
+ patch -p1 < $CWD/patches/$i
done
+# This bit comes from liguros's xar-498.ebuild.
+sed -i 's/__APPLE__/__NO_APPLE__/' lib/hash.c lib/archive.h
+cp lib/*.h include
+
+# Make #include <xar/xar.h> include the one in the build dir, not
+# any system-wide one in /usr/include.
+mkdir include/xar
+ln -sf ../xar.h include/xar/xar.h
+
# -I doesn't affect #include "blah.h".
sed -i 's,"\(\(util\|filetree\)\.h\)",<\1>,' src/xar.c
@@ -107,6 +130,7 @@ make
make install DESTDIR=$PKG
gzip $PKG/usr/man/man?/*
rm -f $PKG/usr/lib*/*.la
+strip $PKG/usr/lib*/*.so*
cd -
diff --git a/system/xar/xar.info b/system/xar/xar.info
index 7b5a945215..86abd2cf83 100644
--- a/system/xar/xar.info
+++ b/system/xar/xar.info
@@ -1,8 +1,8 @@
PRGNAM="xar"
-VERSION="1.8dev+452"
+VERSION="1.8dev+498"
HOMEPAGE="https://opensource.apple.com/source/xar/"
-DOWNLOAD="https://opensource.apple.com/tarballs/xar/xar-452.tar.gz"
-MD5SUM="79e673ca905a16674dae0ce54d7ead5b"
+DOWNLOAD="https://github.com/apple-oss-distributions/xar/archive/xar-498/xar-xar-498.tar.gz"
+MD5SUM="4a4bcc060d8e9a1678c39ee3b701c44b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""