aboutsummaryrefslogtreecommitdiffsponsor
path: root/contrib/slackbuild
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/slackbuild')
-rw-r--r--contrib/slackbuild/config.json6
-rw-r--r--contrib/slackbuild/doinst.sh43
-rw-r--r--contrib/slackbuild/mirror.SlackBuild70
-rw-r--r--contrib/slackbuild/rc.mirror48
-rw-r--r--contrib/slackbuild/slack-desc20
5 files changed, 187 insertions, 0 deletions
diff --git a/contrib/slackbuild/config.json b/contrib/slackbuild/config.json
new file mode 100644
index 0000000..f9fe2e9
--- /dev/null
+++ b/contrib/slackbuild/config.json
@@ -0,0 +1,6 @@
+{
+ "min-interval": "1h",
+ "max-interval": "24h",
+ "mirrors": [
+ ]
+}
diff --git a/contrib/slackbuild/doinst.sh b/contrib/slackbuild/doinst.sh
new file mode 100644
index 0000000..33a0170
--- /dev/null
+++ b/contrib/slackbuild/doinst.sh
@@ -0,0 +1,43 @@
+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...
+}
+
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+if ! getent group taler >/dev/null; then
+ groupadd mirror \
+ --system
+fi
+
+if ! getent passwd mirror >/dev/null; then
+ useradd mirror \
+ --comment 'Mirror' \
+ --gid mirror \
+ --system \
+ --home-dir /var/empty \
+ --shell /bin/false \
+ || true
+fi
+
+chown mirror:mirror /var/log/mirror
+
+preserve_perms etc/rc.d/rc.mirror.new
+preserve_perms etc/mirror/config.json.new
diff --git a/contrib/slackbuild/mirror.SlackBuild b/contrib/slackbuild/mirror.SlackBuild
new file mode 100644
index 0000000..eccbc1a
--- /dev/null
+++ b/contrib/slackbuild/mirror.SlackBuild
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+GIT_COMMIT=$(git rev-parse --short HEAD)
+PRGNAM=mirror
+VERSION=${VERSION:-$GIT_COMMIT}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_slackcoder}
+PKGTYPE=${PKGTYPE:-txz}
+
+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}"
+
+set -e
+
+rm -rf "$PKG"
+mkdir -p "$TMP" "$PKG" "$OUTPUT"
+cd "$TMP"
+rm -rf $PRGNAM-$VERSION
+cp -R $CWD/../.. $PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# Point go to the location of the source tree
+export GOPATH="$TMP/$PRGNAM-$VERSION.gopath"
+export GOBIN="$PKG/usr/sbin"
+
+go install \
+ -ldflags="-linkmode external -extldflags -static" \
+ -a -x ./...
+
+mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION"
+cp -a \
+ README.md \
+ "$PKG/usr/doc/$PRGNAM-$VERSION"
+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"
+
+mkdir -p "$PKG/etc/rc.d"
+cat "$CWD/rc.mirror" > "$PKG/etc/rc.d/rc.mirror.new"
+mkdir -p $PKG/etc/mirror
+cat "$CWD/config.json" > "$PKG/etc/mirror/config.json.new"
+mkdir -p "$PKG/var/log/mirror"
+
+cd "$PKG"
+/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
diff --git a/contrib/slackbuild/rc.mirror b/contrib/slackbuild/rc.mirror
new file mode 100644
index 0000000..81acb9b
--- /dev/null
+++ b/contrib/slackbuild/rc.mirror
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Startup/shutdown script for the mirror service.
+#
+
+create_run_dir() {
+ if [ ! -d /run/mirror/ ]; then
+ mkdir -p /run/mirror
+ chown :mirror /run/mirror
+ chmod g+wX /run/mirror
+ fi
+}
+
+start() {
+ echo "Starting Mirror service"
+ create_run_dir
+
+ daemon \
+ --name=mirror \
+ --user=mirror \
+ --pidfiles=/run/mirror \
+ --output=/var/log/mirror/mirror.log \
+ -- mirror -config /etc/mirror/config.json
+}
+
+stop() {
+ echo "Stopping Mirror service"
+ /usr/bin/daemon --name=mirror --pidfiles=/run/mirror --stop
+}
+
+status() {
+ /usr/bin/daemon --name=mirror --pidfiles=/run/mirror --running --verbose
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+status)
+ status
+ ;;
+*)
+ echo "Usage: $0 {start|stop|status}"
+ exit 1
+esac
diff --git a/contrib/slackbuild/slack-desc b/contrib/slackbuild/slack-desc
new file mode 100644
index 0000000..5562ff4
--- /dev/null
+++ b/contrib/slackbuild/slack-desc
@@ -0,0 +1,20 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+mirror: mirror
+mirror:
+mirror: Mirror project assets and source code.
+mirror:
+mirror:
+mirror:
+mirror:
+mirror:
+mirror:
+mirror:
+mirror:
+