summaryrefslogtreecommitdiffstats
path: root/system/xar/xar.SlackBuild
blob: 242854f5c96326e6eb700d8e3e073993472d652b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/bash

# Slackware build script for xar

# Written by B. Watson (urchlay@slackware.uk)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# Notes:

# Man page says xar is no longer actively developed. I added this to
# SBo in order to extract old archives I ran into, so this doesn't
# bother me.

# The original google code project is dead, and so is mackyle's github
# 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 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+498}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

SRCVER="$( echo $VERSION | cut -d+ -f2 )"

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
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 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

# xar executable, library, and includes. have to manually add
# openssl's libs, and jigger the include path for <util.h> and
# <filetree.h>.
sh autogen.sh --noconfigure

LIBS="$( pkg-config --libs openssl )" \
CFLAGS="$SLKCFLAGS -Wl,-s -I$(pwd)/lib" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --disable-static \
  --build=$ARCH-slackware-linux

make
make install DESTDIR=$PKG
gzip $PKG/usr/man/man?/*
rm -f $PKG/usr/lib*/*.la
strip $PKG/usr/lib*/*.so*

cd -

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
cp -a README xar.txt xar/{ChangeLog,LICENSE,TODO} $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE