summaryrefslogtreecommitdiffstats
path: root/system/lirc/lirc.SlackBuild
blob: eca6bc14746f0cc3f20a4b5ba5d5d4ee4b831f1f (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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/bin/bash

# Slackware build script for lirc

# Copyright 2009  Murat D. Kadirov <banderols@gmail.com>
# Copyright 2015-2022  Jeremy Hansen <jebrhansen+SBo -at- gmail.com>
# 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.

#  Modified for 0.9.3a by Jeremy Hansen <jebrhansen+SBo -at- gmail.com>

# 20220211 bkw: BUILD=4.
# - fix build on 15.0 (PyYAML issue).
# - lirc doesn't ship a kernel module any more, so get rid of the
#   KERNEL variable and don't put the kernel version in the package's
#   version.
# - install usable HTML conversions of the man pages (instead of
#   identical broken ones).
# - considered upgrading to 0.10.1 (latest release), but it still has
#   the same problems (HTML man conversions and PyYAML), and I don't have
#   any IR hardware to test this with, so I'll leave it at the (presumably)
#   maintainer-tested version 0.9.3a.

# 20211121 bkw: BUILD=3. install all docs to
# /usr/doc/$PRGNAM-$VERSION, instead of /usr/share/doc/$PRGNAM. Also
# don't include useless INSTALL in doc dir.

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=lirc
VERSION=${VERSION:-0.9.3a}
BUILD=${BUILD:-5}
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-$PKG_VERS-$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

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
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 {} \+

# Patch to fix config.status warning for lirc-driver.pc.in ignoring --datarootdir
patch -p1 < $CWD/datarootdir.patch

# Patch to fix lirc-setup to force gtk3
# Thanks to Martin Schmidt for the heads up and the patch
patch -p1 < $CWD/gi.patch

# 20220211 bkw: Fix for PyYAML >= 5.1
sed -i \
  's|yaml.load(f.read())|yaml.load(f.read(), Loader=yaml.FullLoader)|' \
  tools/check_configs.py \
  tools/lirc-setup/mvc_model.py \
  doc/data2hwdb \
  doc/data2table

# 20220211 bkw: Source ships with HTML conversions of man pages, but
# make thinks it needs to regenerate them. Touching them doesn't help,
# it always tries to convert them regardless of timestamps. And the
# conversion fails, because our man2html (from man-db) doesn't support
# the -M and -r options. It doesn't stop the Makefile from finishing,
# but all the html pages end up broken/useless. The configure script
# reads an environment variable MAN2HTML, which... does nothing. We
# can't even copy them, let make overwrite them, and restore the
# originals, because 'make install' will regenerate them again.

# So save the originals, let 'make install' generate and install the
# broken ones, then copy the originals to $PKG/usr/doc afterwards.
cp -a doc/man-html doc/man-html.shipped

MAN2HTML=no \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make -j1

# 20211121 bkw: the top-level Makefile doesn't pass docdir to
# doc/Makefile, unless we set it here also.
make install-strip DESTDIR=$PKG docdir=/usr/doc/$PRGNAM-$VERSION

# 20220211 bkw: $PKG/usr/doc now contains a bunch of broken HTML
# files that just contain the usage message for man2html. Replace them
# with pre-generated files upstream ships. Why does this have to be
# so complex?
cp -a doc/man-html.shipped/*.html $PKG/usr/doc/$PRGNAM-$VERSION/lirc.org/html

gzip -9 $PKG/usr/man/man*/*

# 20220211 bkw: not sure if the .la files in /usr/lib(64?)/lirc/plugins
# are actually needed, so leave them. they won't bother anything, being
# in their own private directory.
rm -f $PKG/usr/lib*/*.la

mkdir -p $PKG/lib/udev/rules.d
cat contrib/lirc.rules > $PKG/lib/udev/rules.d/96-lirc.rules

mkdir -p $PKG/etc/logrotate.d
cat contrib/lircd.conf > $PKG/etc/lircd.conf.new
cat contrib/lircmd.conf > $PKG/etc/lircmd.conf.new
cat contrib/lircrc > $PKG/etc/lircrc.new
cat $CWD/lirc.logrotate > $PKG/etc/logrotate.d/lirc.new

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION

# HTML docs are already installed in $PKGDOC/html
cp -a AUTHORS COPYING ChangeLog NEWS README doc/irxevent.keys $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

# Fixup doc owner & mode
chown -R root:root $PKGDOC
chmod -R go-w      $PKGDOC

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

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