summaryrefslogtreecommitdiff
path: root/system/cfengine/cfengine.SlackBuild
blob: 8ad389d5c8c2b1eef2441d74944798f9848e4908 (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 Cfengine
# Written by Menno Duursma <druiloor@zonnet.nl>

# This program is free software. It comes without any warranty.
# Granted WTFPL, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.

PRGNAM=cfengine
VERSION=2.2.10
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 [ "$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 # Exit on most errors

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 .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# The system expects everything to live in /var/cfengine generally
# Its configuration is maintained in a version control system
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --bindir=/usr/bin \
  --sbindir=/usr/sbin \
  --mandir=/usr/man \
  --infodir=/usr/info \
  --datadir=/usr/doc \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --enable-shared=yes \
  --enable-static=no \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG

# Install manpages
mkdir -p $PKG/usr/man/man8
for manpage in doc/*.8; do
  gzip -9c $manpage > $PKG/usr/man/man8/$(basename $manpage).gz
done

# Prepare and install info pages and handy links to 'em
mkdir -p $PKG/usr/info
for infopage in doc/*.info*; do
  gzip -9c $infopage > $PKG/usr/info/$(basename $infopage).gz
done
( cd $PKG/usr/info
  ln -vsf cfengine-Tutorial.info.gz cfengine.info.gz
  for ref in cfkey cfshow cfagent cfservd cfexecd; do
    ln -vsf cfengine-Reference.info.gz $ref.info.gz
  done
  for anom in cfenvd cfenvgraph; do
    ln -vsf cfengine-Anomalies.info.gz $anom.info.gz
  done
)

# Create basic work dirs
for dir in bin inputs outputs masterfiles ; do
  mkdir -p $PKG/var/$PRGNAM/$dir
done

# Include example start/stop/restart/reload scripts
mkdir -p $PKG/etc/rc.d
cat $CWD/rc.cfengine > $PKG/etc/rc.d/rc.cfengine.new
cat $CWD/rc.cfenvd > $PKG/etc/rc.d/rc.cfenvd.new
cat $CWD/rc.cfservd > $PKG/etc/rc.d/rc.cfservd.new
# Link the cfengine name to execd for compatibility
( cd $PKG/etc/rc.d ; ln -sf rc.cfengine rc.cfexecd )

# Include example config files
cat $CWD/config/update.conf > $PKG/var/$PRGNAM/inputs/update.conf.new
cat $CWD/config/cfagent.conf > $PKG/var/$PRGNAM/inputs/cfagent.conf.new
cat $CWD/config/cfservd.conf > $PKG/var/$PRGNAM/inputs/cfservd.conf.new
cat $CWD/config/cfrun.hosts > $PKG/var/$PRGNAM/inputs/cfrun.hosts.new

# Try to be a bit more compatible to some other distros versions
( cd $PKG/etc
  ln -sf /var/cfengine/inputs cfengine
  ln -sf /var/cfengine/inputs cfengine2
  cd $PKG/var ; ln -sf cfengine cfengine2
)

# Following link is for backwards compatibility
mkdir -p $PKG/var/$PRGNAM/bin
( cd $PKG/var/cfengine/bin ; ln -sf /usr/sbin/cfagent . )

# Put docs in the versioned directory
mv $PKG/usr/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$VERSION

cp -a [A-Z][A-Z]* ChangeLog doc/*.{pdf,html} $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README$TAG
find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;

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}