summaryrefslogtreecommitdiff
path: root/system/xrdp/xrdp.SlackBuild
blob: f6f1f046a71ca63523d54169a4f163d2feaeeb0c (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
#!/bin/sh

# Slackware build script for xrdp
# Written by Phillip Warner <pc_warner@yahoo.com>

PRGNAM=xrdp
VERSION=0.4.1
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i486 ;;
    arm*) ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# If you have PAM installed and wish to install /etc/pam.d/sesman,
# then run this script as: "USE_PAM=YES ./xrdp.SlackBuild"
USE_PAM=${USE_PAM:-NO}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -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.gz
cd $PRGNAM-$VERSION
chown -R root:root .
chmod -R a-s,u+rw,go-w .

if [ ! "$USE_PAM" = "NO" ]; then
  patch < $CWD/patches/Makefile.PAM.diff
  make
else
  patch < $CWD/patches/Makefile.NOPAM.diff
  make nopam
fi

# Fix path in what will become the init script
sed -i "s/XRDP_DIR=\/usr\/local\/xrdp\//XRDP_DIR=\/usr\/lib${LIBDIRSUFFIX}\/xrdp\//" instfiles/xrdp_control.sh

# Set LogFile at /var/log/sesman.log
# Change LogLevel to INFO instead of DEBUG
# Disable Root logins by default
# Set user-specific RDP session script to ~/.xrdp-xinitrc
patch -d sesman/ < $CWD/patches/sesman.ini.diff

make install \
  PKGDIR=$PKG \
  DESTDIR=$PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM \
  CFGDIR=$PKG/etc/$PRGNAM \
  PIDDIR=$PKG/var/run \
  MANDIR=$PKG/usr/man \
  DOCDIR=$PKG/usr/doc/$PRGNAM-$VERSION

# Install routines for man pages missing from Makefile
mkdir -p $PKG/usr/man/man5 $PKG/usr/man/man8
cp -a docs/man/*.5 $PKG/usr/man/man5
cp -a docs/man/*.8 $PKG/usr/man/man8

# Make sure log directory is there
mkdir -p $PKG/var/log

# Fix permissions from install
chmod a-x $PKG/etc/$PRGNAM/*
if [ -e $PKG/etc/pam.d/ ]; then
  chmod a-x $PKG/etc/pam.d/sesman
fi
chmod a-x $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/{Tahoma-10.fv1,*.bmp,*.cur}

# Let's make the xrdp_control.sh script the init script
mkdir -p $PKG/etc/rc.d
mv $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/xrdp_control.sh $PKG/etc/rc.d/rc.$PRGNAM.new

# Move startwm.sh to a more sane location with a name that makes more sense
mv $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/startwm.sh $PKG/etc/$PRGNAM/xrdp-xinitrc.new

# Unfortunately, sesman.ini seems to ignore absolute paths for 
# startwm.sh, so we need to leave a link where it expects to find 
# the file under the program directory.
( cd $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM
  ln -s /etc/$PRGNAM/xrdp-xinitrc startwm.sh
)

# Let's not clobber existing configs
( cd $PKG/etc/$PRGNAM
  mv rsakeys.ini rsakeys.ini.new
  mv sesman.ini sesman.ini.new
  mv xrdp.ini xrdp.ini.new
)

# Install the xrdp-xwmconfig utility
install -D -m 0755 $CWD/xrdp-xwmconfig \
  $PKG/usr/bin/xrdp-xwmconfig

find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

( cd $PKG/usr/man
  find . -type f -exec gzip -9 {} \;
  for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING design.txt install.txt readme.txt $PKG/usr/doc/$PRGNAM-$VERSION

# Keep a backup copy of startwm.sh in the docs
cat sesman/startwm.sh > $PKG/usr/doc/$PRGNAM-$VERSION/startwm.sh-example

cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$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:-tgz}