aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xnet/im/silc-server/silc-server.SlackBuild46
1 files changed, 45 insertions, 1 deletions
diff --git a/net/im/silc-server/silc-server.SlackBuild b/net/im/silc-server/silc-server.SlackBuild
index 6e1a946a..36831502 100755
--- a/net/im/silc-server/silc-server.SlackBuild
+++ b/net/im/silc-server/silc-server.SlackBuild
@@ -40,7 +40,7 @@ PKG=${PKG:=$TMP/package-$PKG_NAME}
REPOS=${REPOS:=$TMP}
PREFIX=${PREFIX:=/usr}
PKG_WORK="$TMP/$SRC_NAME"
-CONF_OPTIONS=${CONF_OPTIONS:=""}
+CONF_OPTIONS=${CONF_OPTIONS:="--sysconfdir=/etc --docdir=/usr/doc/$PKG_NAME-$PKG_VERSION"}
NUMJOBS=${NUMJOBS:=""}
# Set system libraries' path and optmization flags based on $ARCH
@@ -142,6 +142,50 @@ silc-server: being developed in the IETF.
silc-server:
EODESC
+# Move config files to .new to avoid overwriting any system config
+for config_file in etc/silcd.conf etc/silcalgs.conf; do
+ mv $PKG/$config_file $PKG/$config_file.new
+done
+
+# Add a post-installation script (doinst.sh)
+cat << EOSCRIPT > "$PKG/install/doinst.sh"
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+mkgroup() {
+ GROUP="\$1"
+ if ! grep -qe "^\$GROUP:" etc/group; then
+ echo Creating group \$GROUP...
+ chroot . /usr/sbin/groupadd \$GROUP
+ fi
+}
+
+mkuser() {
+ USER="\$1"
+ if [ ! -z "\$2" ]; then
+ GROUP="\$2"
+ else
+ GROUP="\$USER"
+ fi
+ if ! grep -qe "^\$USER:" etc/passwd; then
+ echo Creating user \$USER...
+ chroot . /usr/sbin/useradd \$USER -g \$GROUP
+ fi
+}
+
+config etc/silcd.conf.new config etc/silcalgs.conf.new
+EOSCRIPT
+
# Build the package
cd "$PKG"
makepkg -l y -c n "$REPOS/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG