aboutsummaryrefslogtreecommitdiff
path: root/system/kmscon/kmscon.SlackBuild
blob: 52de376c8227c6f95ff80a768accad6aba6b538f (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
#!/bin/bash

# Slackware build script for kmscon

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

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

# 20250817 bkw:
# - update for v9.1.0 (libtsm v4.1.0).
# - add python3-meson-opt to REQUIRES, remove meson-compat.diff.

# 20230722 bkw: switch to Aetf's fork, which looks actively
# maintained. Thanks to lockywolf for finding it. Also, include
# libtsm here instead of as a separate build: it's been on SBo for ~9
# years and nothing but this ever depended on it.

# 20210825 bkw: update to the last git commit, post v8 release. It's from
# 2014, so I doubt there will be more version updates.

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

PRGNAM=kmscon
VERSION=${VERSION:-9.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

LIBNAM=libtsm
LIBVER=${LIBVER:-4.1.0}

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

# 20250817 bkw: meson can't easily be coerced to ignore the libs
# in /usr/lib64 if already installed. just punt, if the old libs
# are there.
if pkg-config --exists libtsm && ! pkg-config --exact-version=$LIBVER libtsm; then
  cat <<EOF

***
* An older version of kmscon's libtsm is installed. The build would
* fail. Get rid of it:

  removepkg kmscon

* ...and try this build again.
***

EOF
  exit 1
fi


TOPDIR=$TMP/$PRGNAM-build
rm -rf $PKG $TOPDIR
mkdir -p $TOPDIR $PKG $OUTPUT
cd $TOPDIR
tar xvf $CWD/$PRGNAM-$VERSION.tar.[xg]z
tar xvf $CWD/$LIBNAM-$LIBVER.tar.gz
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 {} +

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
LIBDOC=$PKGDOC/$LIBNAM-$LIBVER
mkdir -p $LIBDOC

# first, the library:
cd $TOPDIR/$LIBNAM-$LIBVER
mkdir -p build
cd build
  cmake \
    -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_BUILD_TYPE=Release ..
  make
  make install/strip DESTDIR=$PKG
cd ..

cp -a COPYING LICENSE_htable NEWS README* $LIBDOC

export PKG_CONFIG_PATH=$PKG/usr/lib$LIBDIRSUFFIX/pkgconfig:$PKG_CONFIG_PATH

# now, build the app, using the lib we just built.
cd $TOPDIR/$PRGNAM-$VERSION

# 20250817 bkw: I could probably patch meson.build to work with 15.0's
# old meson, but I don't love meson enough to spend time learning how
# just at the moment. Thanks to fourtysixandtwo for providing a newer
# meson.
PYVER=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
export PYTHONPATH=/opt/python$PYVER/site-packages

mkdir build
cd build
  LDFLAGS="-L$PKG/usr/lib$LIBDIRSUFFIX -ldl" \
  CFLAGS="-I$PKG/usr/include $SLKCFLAGS" \
  meson setup .. \
    --buildtype=release \
    --infodir=/usr/info \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --localstatedir=/var \
    --mandir=/usr/man \
    --prefix=/usr \
    --sysconfdir=/etc \
    -Dstrip=true
  "${NINJA:=ninja}" -v
  DESTDIR=$PKG $NINJA install
cd ..

gzip $PKG/usr/man/man1/$PRGNAM.1
mkdir -p $PKG/etc/$PRGNAM
cat $CWD/$PRGNAM.conf > $PKG/etc/$PRGNAM/$PRGNAM.conf.new

cp -a COPYING NEWS README* docs/*.txt $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

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